diff --git a/.eslintignore b/.eslintignore index 1b5cc9d0e7..5057a1b4d7 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,6 @@ dist/ docs/ +lib/binaryen.js lib/parse/index.js out/ raw/ diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 79a33151ed..bb37f9086b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -102,6 +102,25 @@ jobs: run: npm test - name: Test browser build run: node tests/browser-asc + test-bootstrap: + name: "Compiler (Bootstrap)" + runs-on: ubuntu-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: 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: "Features" runs-on: ubuntu-latest @@ -134,18 +153,18 @@ jobs: run: npm ci --no-audit - name: Clean distribution files run: npm run clean - - name: Test full runtime + - name: Test default allocator run: | - cd tests/allocators/rt-full + cd tests/allocators/default npm run build cd .. - npm test rt-full - - name: Test stub runtime + npm test default + - name: Test stub allocator run: | - cd tests/allocators/rt-stub + cd tests/allocators/stub npm run build cd .. - npm test rt-stub + npm test stub test-loader: name: "Loader" runs-on: ubuntu-latest @@ -164,20 +183,3 @@ jobs: cd lib/loader npm run asbuild npm run test - test-bootstrap: - name: "Bootstrap" - runs-on: ubuntu-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 self-compilation - run: | - npm run asbuild - npm run astest diff --git a/.gitignore b/.gitignore index 57082f26a3..2efb8995ec 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ out/ raw/ .history *.backup -.vscode \ No newline at end of file +.vscode +.idea diff --git a/NOTICE b/NOTICE index 8e47e0290f..1a15f844c7 100644 --- a/NOTICE +++ b/NOTICE @@ -30,6 +30,7 @@ under the licensing terms detailed in LICENSE: * Gabor Greif * Martin Fredriksson * forcepusher +* Piotr Oleś Portions of this software are derived from third-party works licensed under the following terms: diff --git a/cli/asc.d.ts b/cli/asc.d.ts index 7957ac7c2f..bb60c5008c 100644 --- a/cli/asc.d.ts +++ b/cli/asc.d.ts @@ -55,6 +55,39 @@ export interface MemoryStream extends OutputStream { toString(): string; } +/** Relevant subset of the Source class for diagnostic reporting. */ +export interface Source { + /** Normalized path with file extension. */ + normalizedPath: string; +} + +/** Relevant subset of the Range class for diagnostic reporting. */ +export interface Range { + /** Start offset within the source file. */ + start: number; + /** End offset within the source file. */ + end: number; + /** Respective source file. */ + source: Source; +} + +/** Relevant subset of the DiagnosticMessage class for diagnostic reporting. */ +export interface DiagnosticMessage { + /** Message code. */ + code: number; + /** Message category. */ + category: number; + /** Message text. */ + message: string; + /** Respective source range, if any. */ + range: Range | null; + /** Related range, if any. */ + relatedRange: Range | null; +} + +/** A function handling diagnostic messages. */ +type DiagnosticReporter = (diagnostic: DiagnosticMessage) => void; + /** Compiler options. */ export interface CompilerOptions { /** Prints just the compiler's version and exits. */ @@ -157,6 +190,8 @@ export interface APIOptions { writeFile?: (filename: string, contents: Uint8Array, baseDir: string) => void; /** Lists all files within a directory. */ listFiles?: (dirname: string, baseDir: string) => string[] | null; + /** Handler for diagnostic messages. */ + reportDiagnostic?: DiagnosticReporter; } /** Convenience function that parses and compiles source strings directly. */ @@ -176,7 +211,7 @@ export function main(argv: string[], options: APIOptions, callback?: (err: Error 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): boolean; +export function checkDiagnostics(emitter: Record, stderr?: OutputStream, reportDiagnostic?: DiagnosticReporter): boolean; /** An object of stats for the current task. */ export interface Stats { diff --git a/cli/asc.js b/cli/asc.js index f3b48d7ec7..d45732f7f5 100644 --- a/cli/asc.js +++ b/cli/asc.js @@ -79,15 +79,15 @@ Object.defineProperty(exports, "ready", { if (process.removeAllListeners) process.removeAllListeners("uncaughtException"); // Use distribution files if present, otherwise run the sources directly. -var assemblyscript; -(function loadAssemblyScript() { +function loadAssemblyScriptJS() { + var exports; 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 - assemblyscript = require("assemblyscript"); + exports = require("assemblyscript"); } catch (e) { try { // `asc` on the command line (unnecessary in recent node) - assemblyscript = dynrequire("../dist/assemblyscript.js"); + exports = dynrequire("../dist/assemblyscript.js"); } catch (e) { try { // `asc` on the command line without dist files (unnecessary in recent node) dynrequire("ts-node").register({ @@ -96,17 +96,70 @@ var assemblyscript; compilerOptions: { target: "ES2016" } }); dynrequire("../src/glue/js"); - assemblyscript = dynrequire("../src"); + exports = dynrequire("../src"); } catch (e_ts) { try { // `require("dist/asc.js")` in explicit browser tests - assemblyscript = dynrequire("./assemblyscript"); + exports = dynrequire("./assemblyscript"); } catch (e) { throw Error(e_ts.stack + "\n---\n" + e.stack); } } } } -})(); + 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 = ptr => undefined; + __collect = incremental => undefined; + } +} +loadAssemblyScript(); /** Whether this is a webpack bundle or not. */ exports.isBundle = typeof BUNDLE_VERSION === "string"; @@ -118,7 +171,7 @@ exports.version = exports.isBundle ? BUNDLE_VERSION : dynrequire("../package.jso exports.options = require("./asc.json"); /** Prefix used for library files. */ -exports.libraryPrefix = assemblyscript.LIBRARY_PREFIX; +exports.libraryPrefix = __getString(assemblyscript.LIBRARY_PREFIX.valueOf()); /** Default Binaryen optimization level. */ exports.defaultOptimizeLevel = 3; @@ -256,8 +309,18 @@ exports.main = function main(argv, options, callback) { } } + // 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) { + if (opts.help || (!argv.length && !asconfigHasEntries)) { var out = opts.help ? stdout : stderr; var color = opts.help ? colorsUtil.stdout : colorsUtil.stderr; out.write([ @@ -268,6 +331,7 @@ exports.main = function main(argv, options, callback) { " " + 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( @@ -283,18 +347,9 @@ exports.main = function main(argv, options, callback) { if (listFiles === listFilesNode) throw Error("'options.listFiles' must be specified"); } - // Set up base directory - const baseDir = path.normalize(opts.baseDir || "."); - // Load additional options from asconfig.json - 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); - const seenAsconfig = new Set(); seenAsconfig.add(asconfigPath); - const target = opts.target || "release"; while (asconfig) { // Merge target first @@ -348,7 +403,8 @@ exports.main = function main(argv, options, callback) { } // Set up options - const compilerOptions = assemblyscript.newOptions(); + var program; + const compilerOptions = __pin(assemblyscript.newOptions()); assemblyscript.setTarget(compilerOptions, 0); assemblyscript.setNoAssert(compilerOptions, opts.noAssert); assemblyscript.setExportMemory(compilerOptions, !opts.noExportMemory); @@ -365,6 +421,21 @@ exports.main = function main(argv, options, callback) { assemblyscript.setNoUnsafe(compilerOptions, opts.noUnsafe); assemblyscript.setPedantic(compilerOptions, opts.pedantic); assemblyscript.setLowMemoryLimit(compilerOptions, opts.lowMemoryLimit >>> 0); + assemblyscript.setExportRuntime(compilerOptions, opts.exportRuntime); + 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) { @@ -376,7 +447,12 @@ exports.main = function main(argv, options, callback) { 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.")); - assemblyscript.setGlobalAlias(compilerOptions, alias, name); + { + let aliasPtr = __pin(__newString(alias)); + let namePtr = __newString(name); + assemblyscript.setGlobalAlias(compilerOptions, aliasPtr, namePtr); + __unpin(aliasPtr); + } } } @@ -417,7 +493,7 @@ exports.main = function main(argv, options, callback) { assemblyscript.setOptimizeLevelHints(compilerOptions, optimizeLevel, shrinkLevel); // Initialize the program - const program = assemblyscript.newProgram(compilerOptions); + program = __pin(assemblyscript.newProgram(compilerOptions)); // Set up transforms const transforms = []; @@ -474,7 +550,10 @@ exports.main = function main(argv, options, callback) { if (libPath.indexOf("/") >= 0) return; // in sub-directory: imported on demand stats.parseCount++; stats.parseTime += measure(() => { - assemblyscript.parse(program, exports.libraryFiles[libPath], exports.libraryPrefix + libPath + extension.ext, false); + 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 = []; @@ -499,7 +578,10 @@ exports.main = function main(argv, options, callback) { stats.parseCount++; exports.libraryFiles[libPath.replace(extension.re, "")] = libText; stats.parseTime += measure(() => { - assemblyscript.parse(program, libText, exports.libraryPrefix + libPath, false); + let textPtr = __pin(__newString(libText)); + let pathPtr = __newString(exports.libraryPrefix + libPath); + assemblyscript.parse(program, textPtr, pathPtr, false); + __unpin(textPtr); }); } } @@ -610,18 +692,25 @@ exports.main = function main(argv, options, callback) { // Parses the backlog of imported files after including entry files function parseBacklog() { var internalPath; - while ((internalPath = assemblyscript.nextFile(program)) != null) { + while ((internalPath = __getString(assemblyscript.nextFile(program)))) { let file = getFile(internalPath, assemblyscript.getDependee(program, internalPath)); if (file) { stats.parseCount++; stats.parseTime += measure(() => { - assemblyscript.parse(program, file.sourceText, file.sourcePath, false); + let textPtr = __pin(__newString(file.sourceText)); + let pathPtr = __newString(file.sourcePath); + assemblyscript.parse(program, textPtr, pathPtr, false); + __unpin(textPtr); }); } else { - assemblyscript.parse(program, null, internalPath + extension.ext, false); + 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); + var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic); if (numErrors) { const err = Error(numErrors + " parse error(s)"); err.stack = err.message; // omit stack @@ -629,7 +718,7 @@ exports.main = function main(argv, options, callback) { } } - // Include runtime template before entry files so its setup runs first + // Include runtime before entry files so its setup runs first { let runtimeName = String(opts.runtime); let runtimePath = "rt/index-" + runtimeName; @@ -637,13 +726,16 @@ exports.main = function main(argv, options, callback) { if (runtimeText == null) { runtimePath = runtimeName; runtimeText = readFile(runtimePath + extension.ext, baseDir); - if (runtimeText == null) return callback(Error("Runtime '" + runtimeName + "' not found.")); + if (runtimeText == null) return callback(Error(`Runtime '${runtimeName}' not found.`)); } else { runtimePath = "~lib/" + runtimePath; } stats.parseCount++; stats.parseTime += measure(() => { - assemblyscript.parse(program, runtimeText, runtimePath + extension.ext, true); + let textPtr = __pin(__newString(runtimeText)); + let pathPtr = __newString(runtimePath + extension.ext); + assemblyscript.parse(program, textPtr, pathPtr, true); + __unpin(textPtr); }); } @@ -668,7 +760,10 @@ exports.main = function main(argv, options, callback) { stats.parseCount++; stats.parseTime += measure(() => { - assemblyscript.parse(program, sourceText, sourcePath, true); + let textPtr = __pin(__newString(sourceText)); + let pathPtr = __newString(sourcePath); + assemblyscript.parse(program, textPtr, pathPtr, true); + __unpin(textPtr); }); } @@ -713,8 +808,23 @@ exports.main = function main(argv, options, callback) { stats.compileCount++; stats.compileTime += measure(() => { module = assemblyscript.compile(program); + // 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); + var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic); if (numErrors) { if (module) module.dispose(); const err = Error(numErrors + " compile error(s)"); @@ -759,7 +869,6 @@ exports.main = function main(argv, options, callback) { // Optimize the module const debugInfo = opts.debug; - const usesARC = opts.runtime == "half" || opts.runtime == "full"; const converge = opts.converge; const runPasses = []; if (opts.runPasses) { @@ -776,17 +885,17 @@ exports.main = function main(argv, options, callback) { stats.optimizeTime += measure(() => { stats.optimizeCount++; - module.optimize(optimizeLevel, shrinkLevel, debugInfo, usesARC); + module.optimize(optimizeLevel, shrinkLevel, debugInfo); module.runPasses(runPasses); if (converge) { - let last = module.toBinary(); + let last = module.emitBinary(); do { stats.optimizeCount++; - module.optimize(optimizeLevel, shrinkLevel, debugInfo, usesARC); + module.optimize(optimizeLevel, shrinkLevel, debugInfo); module.runPasses(runPasses); - let next = module.toBinary(); - if (next.output.length >= last.output.length) { - if (next.output.length > last.output.length) { + let next = module.emitBinary(); + if (next.length >= last.length) { + if (next.length > last.length) { stderr.write("Last converge was suboptimial." + EOL); } break; @@ -827,24 +936,24 @@ exports.main = function main(argv, options, callback) { let wasm; stats.emitCount++; stats.emitTime += measure(() => { - wasm = module.toBinary(sourceMapURL); + wasm = module.emitBinary(sourceMapURL); }); if (opts.binaryFile.length) { - writeFile(opts.binaryFile, wasm.output, baseDir); + writeFile(opts.binaryFile, wasm.binary, baseDir); } else { - writeStdout(wasm.output); + writeStdout(wasm.binary); hasStdout = true; } // Post-process source map - if (wasm.sourceMap != null) { + 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, name.replace(extension.re, "")); + 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; }); @@ -865,16 +974,20 @@ exports.main = function main(argv, options, callback) { if (opts.textFile != null && opts.textFile.length) { // use superset text format when extension is `.wast`. // Otherwise use official stack IR format (wat). - let watFormat = !opts.textFile.endsWith('.wast'); + let wastFormat = opts.textFile.endsWith('.wast'); stats.emitCount++; stats.emitTime += measure(() => { - out = module.toText(watFormat); + if (wastFormat) { + out = module.emitText(); + } else { + out = module.emitStackIR(true); + } }); writeFile(opts.textFile, out, baseDir); } else if (!hasStdout) { stats.emitCount++; stats.emitTime += measure(() => { - out = module.toText(); + out = module.emitStackIR(true); }); writeStdout(out); } @@ -888,13 +1001,13 @@ exports.main = function main(argv, options, callback) { stats.emitTime += measure(() => { idl = assemblyscript.buildIDL(program); }); - writeFile(opts.idlFile, idl, baseDir); + writeFile(opts.idlFile, __getString(idl), baseDir); } else if (!hasStdout) { stats.emitCount++; stats.emitTime += measure(() => { idl = assemblyscript.buildIDL(program); }); - writeStdout(idl); + writeStdout(__getString(idl)); hasStdout = true; } } @@ -907,13 +1020,13 @@ exports.main = function main(argv, options, callback) { stats.emitTime += measure(() => { tsd = assemblyscript.buildTSD(program); }); - writeFile(opts.tsdFile, tsd, baseDir); + writeFile(opts.tsdFile, __getString(tsd), baseDir); } else if (!hasStdout) { stats.emitCount++; stats.emitTime += measure(() => { tsd = assemblyscript.buildTSD(program); }); - writeStdout(tsd); + writeStdout(__getString(tsd)); hasStdout = true; } } @@ -1050,18 +1163,48 @@ function getAsconfig(file, baseDir, readFile) { exports.getAsconfig = getAsconfig; /** Checks diagnostics emitted so far for errors. */ -function checkDiagnostics(program, stderr) { - var diagnostic; +function checkDiagnostics(program, stderr, reportDiagnostic) { var numErrors = 0; - while ((diagnostic = assemblyscript.nextDiagnostic(program)) != null) { + do { + let diagnosticPtr = assemblyscript.nextDiagnostic(program); + if (!diagnosticPtr) break; + __pin(diagnosticPtr); if (stderr) { stderr.write( - assemblyscript.formatDiagnostic(diagnostic, stderr.isTTY, true) + + __getString(assemblyscript.formatDiagnostic(diagnosticPtr, stderr.isTTY, true)) + EOL + EOL ); } - if (assemblyscript.isError(diagnostic)) ++numErrors; - } + 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; } @@ -1127,7 +1270,8 @@ function printStats(stats, output) { "Emit : " + format(stats.emitTime, stats.emitCount), "Validate : " + format(stats.validateTime, stats.validateCount), "Optimize : " + format(stats.optimizeTime, stats.optimizeCount), - "Transform : " + format(stats.transformTime, stats.transformCount) + "Transform : " + format(stats.transformTime, stats.transformCount), + "" ].join(EOL) + EOL); } diff --git a/cli/asc.json b/cli/asc.json index 948fdcc19e..16e85fc8ca 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -67,56 +67,48 @@ "type": "b", "default": false }, - "runtime": { - "category": "Optimization", - "description": [ - "Specifies the runtime variant to include in the program.", - "", - " full Default runtime based on TLSF and reference counting.", - " half Same as 'full', but not exported to the host.", - " stub Minimal stub implementation without free/GC support.", - " none Same as 'stub', but not exported to the host.", - "" - ], - "type": "s", - "default": "full" - }, "outFile": { "category": "Output", "description": "Specifies the output file. File extension indicates format.", "type": "s", - "alias": "o" + "alias": "o", + "isPath": true }, "binaryFile": { "category": "Output", "description": "Specifies the binary output file (.wasm).", "type": "s", - "alias": "b" + "alias": "b", + "isPath": true }, "textFile": { "category": "Output", "description": "Specifies the text output file (.wat).", "type": "s", - "alias": "t" + "alias": "t", + "isPath": true }, "jsFile": { "category": "Output", "description": "Specifies the JavaScript (via wasm2js) output file (.js).", "type": "s", - "alias": "j" + "alias": "j", + "isPath": true }, "idlFile": { "category": "Output", "description": "Specifies the WebIDL output file (.webidl).", "type": "s", - "alias": "i" + "alias": "i", + "isPath": true }, "tsdFile": { "category": "Output", "description": "Specifies the TypeScript definition output file (.d.ts).", "type": "s", - "alias": "d" + "alias": "d", + "isPath": true }, "sourceMap": { @@ -136,7 +128,7 @@ "importMemory": { "category": "Features", - "description": "Imports the memory provided as 'env.memory'.", + "description": "Imports the memory from 'env.memory'.", "type": "b", "default": false }, @@ -166,7 +158,7 @@ }, "importTable": { "category": "Features", - "description": "Imports the function table provided as 'env.table'.", + "description": "Imports the function table from 'env.table'.", "type": "b", "default": false }, @@ -176,6 +168,36 @@ "type": "b", "default": false }, + "runtime": { + "category": "Features", + "description": [ + "Specifies the runtime variant to include in the program.", + "", + " incremental TLSF + incremental GC (default)", + " minimal TLSF + lightweight GC invoked externally", + " stub Minimal runtime stub (never frees)", + " ... Path to a custom runtime implementation", + "" + ], + "type": "s", + "default": "incremental" + }, + "exportRuntime": { + "category": "Features", + "description": "Exports the runtime helpers (__new, __collect etc.).", + "type": "b", + "default": false + }, + "stackSize": { + "category": "Features", + "description": [ + "Overrides the stack size. Only relevant for incremental GC", + "or when using a custom runtime that requires stack space.", + "Defaults to 0 without and to 16384 with incremental GC." + ], + "default": 0, + "type": "i" + }, "explicitStart": { "category": "Features", "description": "Exports an explicit '_start' function to call.", @@ -347,6 +369,10 @@ "type": "b", "default": false }, + "wasm": { + "description": "Uses the specified Wasm binary of the compiler.", + "type": "s" + }, " ...": { "description": "Specifies node.js options (CLI only). See: node --help" }, diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index 919b85ca62..3098da6002 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -15,6 +15,7 @@ export type Imports = { seed?(): number; abort?(msg: number, file: number, line: number, column: number): void; trace?(msg: number, numArgs?: number, ...args: number[]): void; + mark?(): void; }; }; @@ -81,22 +82,21 @@ export interface ASUtil { /** Gets a live view on a Float64Array's values in the module's memory. */ __getFloat64ArrayView(ptr: number): Float64Array; - /** Allocates an instance of the class represented by the specified id. */ - __new(size: number, id: number): number; + /** Tests whether a managed object is an instance of the class represented by the specified base id. */ + __instanceof(ptr: number, baseId: number): boolean; /** Allocates a new string in the module's memory and returns a reference (pointer) to it. */ __newString(str: string): number; /** Allocates a new array in the module's memory and returns a reference (pointer) to it. */ __newArray(id: number, values: ArrayLike): number; - /** Retains a reference to a managed object externally, making sure that it doesn't become collected prematurely. Returns the pointer. */ - __retain(ptr: number): number; - /** Releases a previously retained reference to a managed object, allowing the runtime to collect it once its reference count reaches zero. */ - __release(ptr: number): void; - /** Forcefully resets the heap to its initial offset, effectively clearing dynamic memory. Stub runtime only. */ - __reset?(): void; - /** Tests whether a managed object is an instance of the class represented by the specified base id. */ - __instanceof(ptr: number, baseId: number): boolean; - /** Forces a cycle collection. Only relevant if objects potentially forming reference cycles are used. */ - __collect(): void; + + /** Allocates an instance of the class represented by the specified id. */ + __new(size: number, id: number): number; + /** Pins a managed object externally, preventing it from becoming garbage collected. */ + __pin(ptr: number): number; + /** Unpins a managed object externally, allowing it to become garbage collected. */ + __unpin(ptr: number): void; + /** Performs a full garbage collection cycle. */ + __collect(incremental?: boolean): void; } /** Asynchronously instantiates an AssemblyScript module from anything that can be instantiated. */ diff --git a/lib/loader/index.js b/lib/loader/index.js index 6f4d9fb6f3..891b6d4a07 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -76,14 +76,24 @@ function preInstantiate(imports) { return extendedExports; } +const E_NOEXPORTRUNTIME = "Operation requires compiling with --exportRuntime"; +const F_NOEXPORTRUNTIME = function() { throw Error(E_NOEXPORTRUNTIME); }; + /** Prepares the final module once instantiation is complete. */ function postInstantiate(extendedExports, instance) { const exports = instance.exports; const memory = exports.memory; const table = exports.table; - const __new = exports["__new"]; - const __retain = exports["__retain"]; - const __rtti_base = exports["__rtti_base"] || ~0; // oob if not present + const __new = exports.__new || F_NOEXPORTRUNTIME; + const __pin = exports.__pin || F_NOEXPORTRUNTIME; + const __unpin = exports.__unpin || F_NOEXPORTRUNTIME; + const __collect = exports.__collect || F_NOEXPORTRUNTIME; + const __rtti_base = exports.__rtti_base || ~0; // oob if not present + + extendedExports.__new = __new; + extendedExports.__pin = __pin; + extendedExports.__unpin = __unpin; + extendedExports.__collect = __collect; /** Gets the runtime type info for the given id. */ function getInfo(id) { @@ -118,7 +128,7 @@ function postInstantiate(extendedExports, instance) { // return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none // } - /** Allocates a new string in the module's memory and returns its retained pointer. */ + /** Allocates a new string in the module's memory and returns its pointer. */ function __newString(str) { if (str == null) return 0; const length = str.length; @@ -160,7 +170,7 @@ function postInstantiate(extendedExports, instance) { throw Error(`unsupported align: ${alignLog2}`); } - /** Allocates a new array in the module's memory and returns its retained pointer. */ + /** Allocates a new array in the module's memory and returns its pointer. */ function __newArray(id, values) { const info = getArrayInfo(id); const align = getValueAlign(info); @@ -172,7 +182,7 @@ function postInstantiate(extendedExports, instance) { } else { const arr = __new(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); const U32 = new Uint32Array(memory.buffer); - U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = __retain(buf); + U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align; if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length; @@ -180,7 +190,10 @@ function postInstantiate(extendedExports, instance) { } const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); if (info & VAL_MANAGED) { - for (let i = 0; i < length; ++i) view[(buf >>> align) + i] = __retain(values[i]); + for (let i = 0; i < length; ++i) { + const value = values[i]; + view[(buf >>> align) + i] = value; + } } else { view.set(values, buf >>> align); } diff --git a/lib/loader/package.json b/lib/loader/package.json index 41c29ba5fa..a75d8053f9 100644 --- a/lib/loader/package.json +++ b/lib/loader/package.json @@ -30,8 +30,8 @@ }, "scripts": { "asbuild": "npm run asbuild:default && npm run asbuild:legacy", - "asbuild:default": "node ../../bin/asc tests/assembly/index.ts -b tests/build/default.wasm", - "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals -b tests/build/legacy.wasm", + "asbuild:default": "node ../../bin/asc tests/assembly/index.ts --binaryFile tests/build/default.wasm --exportRuntime", + "asbuild:legacy": "node ../../bin/asc tests/assembly/index.ts --disable mutable-globals --binaryFile tests/build/legacy.wasm --exportRuntime", "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 e64ff9d6f0..c95f6e5a05 100644 Binary files a/lib/loader/tests/build/default.wasm and b/lib/loader/tests/build/default.wasm differ diff --git a/lib/loader/tests/build/legacy.wasm b/lib/loader/tests/build/legacy.wasm index e64ff9d6f0..c95f6e5a05 100644 Binary files a/lib/loader/tests/build/legacy.wasm and b/lib/loader/tests/build/legacy.wasm differ diff --git a/lib/loader/tests/index.js b/lib/loader/tests/index.js index dd5bfcdc5e..aac09f91ae 100644 --- a/lib/loader/tests/index.js +++ b/lib/loader/tests/index.js @@ -31,10 +31,9 @@ function test(file) { // should be able to allocate and work with a new small string { let str = "Hello world!𤭢"; - let ref = exports.__retain(exports.__newString(str)); + let ref = exports.__newString(str); assert.strictEqual(exports.__getString(ref), str); assert.strictEqual(exports.strlen(ref), str.length); - exports.__release(ref); } // should be able to allocate and work with a new big string @@ -46,74 +45,59 @@ function test(file) { ≔ ≕ ≖ ≗ ≘ ≙ ≚ ≛ ≜ ≝ ≞ ≟ ≠ ≡ ≢ ≣ ≤ ≥ ≦ ≧ ≨ ≩ ≪ ≫ ≬ ≭ ≮ ≯ ≰ ≱ ≲ ≳ ≴ ≵ ≶ ≷ ≸ ≹ ≺ ≻ ≼ ≽ ≾ ≿ `; - let ref = exports.__retain(exports.__newString(str)); + let ref = exports.__newString(str); assert.strictEqual(exports.__getString(ref), str); assert.strictEqual(exports.strlen(ref), str.length); - exports.__release(ref); } // should be able to allocate a typed array { let arr = [1, 2, 3, 4, 5, 0x80000000 | 0]; - let ref = exports.__retain(exports.__newArray(exports.INT32ARRAY_ID, arr)); + let ref = exports.__newArray(exports.INT32ARRAY_ID, arr); assert(exports.__instanceof(ref, exports.INT32ARRAY_ID)); // should be able to get the values of an array - assert.deepEqual(exports.__getArray(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); // should be able to get a view on an array - assert.deepEqual(exports.__getArrayView(ref), new Int32Array(arr)); + assert.deepStrictEqual(exports.__getArrayView(ref), new Int32Array(arr)); // should be able to sum up its values assert.strictEqual(exports.sum(ref), arr.reduce((a, b) => (a + b) | 0, 0) | 0); - - // should be able to release no longer needed references - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } } // should be able to allocate a typed array { let arr = [1, 2, 3, 4, 5, 0x80000000 | 0]; - let ref = exports.__retain(exports.__newArray(exports.STATICARRAYI32_ID, arr)); + let ref = exports.__newArray(exports.STATICARRAYI32_ID, arr); assert(exports.__instanceof(ref, exports.STATICARRAYI32_ID)); // should be able to get the values of an array - assert.deepEqual(exports.__getArray(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), arr); // should be able to get a view on an array - assert.deepEqual(exports.__getArrayView(ref), new Int32Array(arr)); + assert.deepStrictEqual(exports.__getArrayView(ref), new Int32Array(arr)); // should be able to sum up its values assert.strictEqual(exports.sumStatic(ref), arr.reduce((a, b) => (a + b) | 0, 0) | 0); - - // should be able to release no longer needed references - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } } /* { let arrU8Arr = new Uint8Array([0, 1, 2]); - let refU8Arr = module.__retain(module.__newUint8Array(arrU8Arr)); + let refU8Arr = module.__newUint8Array(arrU8Arr); assert(module.__instanceof(refU8Arr, module.UINT8ARRAY_ID)); - assert.deepEqual(module.__getUint8Array(refU8Arr), arrU8Arr); - module.__release(refU8Arr); - try { module.__release(refU8Arr); assert(false); } catch (e) {}; + assert.deepStrictEqual(module.__getUint8Array(refU8Arr), arrU8Arr); let arrU16Arr = new Uint16Array([0, 0x7FFF, 0xFFFF]); - let refU16Arr = module.__retain(module.__newUint16Array(arrU16Arr)); + let refU16Arr = module.__newUint16Array(arrU16Arr); assert(module.__instanceof(refU16Arr, module.UINT16ARRAY_ID)); - assert.deepEqual(module.__getUint16Array(refU16Arr), arrU16Arr); - module.__release(refU16Arr); - try { module.__release(refU16Arr); assert(false); } catch (e) {}; + assert.deepStrictEqual(module.__getUint16Array(refU16Arr), arrU16Arr); let arrI16Arr = new Int16Array([0, -1, -2]); - let refI16Arr = module.__retain(module.__newInt16Array(arrI16Arr)); + let refI16Arr = module.__newInt16Array(arrI16Arr); assert(module.__instanceof(refI16Arr, module.INT16ARRAY_ID)); - assert.deepEqual(module.__getInt16Array(refI16Arr), arrI16Arr); - module.__release(refI16Arr); - try { module.__release(refI16Arr); assert(false); } catch (e) {}; + assert.deepStrictEqual(module.__getInt16Array(refI16Arr), arrI16Arr); } */ @@ -121,103 +105,94 @@ function test(file) { { let values = [0, 255, 127]; let arr = new Uint8Array(values); - let ref = exports.__retain(exports.__newArray(exports.UINT8ARRAY_ID, arr)); + let ref = exports.__newArray(exports.UINT8ARRAY_ID, arr); assert(exports.__instanceof(ref, exports.UINT8ARRAY_ID)); - assert.deepEqual(exports.__getUint8Array(ref), arr); - assert.deepEqual(exports.__getUint8ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getUint8Array(ref), arr); + assert.deepStrictEqual(exports.__getUint8ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between signed and unsigned for static array layout { let arr = [0, 255, 127]; - let ref = exports.__retain(exports.__newArray(exports.STATICARRAYU8_ID, arr)); + let ref = exports.__newArray(exports.STATICARRAYU8_ID, arr); assert(exports.__instanceof(ref, exports.STATICARRAYU8_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), arr); } // should be able to distinguish between signed and unsigned { let values = [0, 0xFFFF, -0x00FF]; let arr = new Int16Array(values); - let ref = exports.__retain(exports.__newArray(exports.INT16ARRAY_ID, arr)); + let ref = exports.__newArray(exports.INT16ARRAY_ID, arr); assert(exports.__instanceof(ref, exports.INT16ARRAY_ID)); - assert.deepEqual(exports.__getInt16Array(ref), arr); - assert.deepEqual(exports.__getInt16ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), [0, -1, -255]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getInt16Array(ref), arr); + assert.deepStrictEqual(exports.__getInt16ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), [0, -1, -255]); } // should be able to distinguish between signed and unsigned for static array layout { let arr = [0, 0xFFFF, -0x00FF]; - let ref = exports.__retain(exports.__newArray(exports.STATICARRAYI16_ID, arr)); + let ref = exports.__newArray(exports.STATICARRAYI16_ID, arr); assert(exports.__instanceof(ref, exports.STATICARRAYI16_ID)); - assert.deepEqual(exports.__getArray(ref), [0, -1, -255]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), [0, -1, -255]); } // should be able to distinguish between signed and unsigned { let values = [1, -1 >>> 0, 0x80000000]; let arr = new Uint32Array(values); - let ref = exports.__retain(exports.__newArray(exports.UINT32ARRAY_ID, arr)); + let ref = exports.__newArray(exports.UINT32ARRAY_ID, arr); assert(exports.__instanceof(ref, exports.UINT32ARRAY_ID)); - assert.deepEqual(exports.__getUint32Array(ref), arr); - assert.deepEqual(exports.__getUint32ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getUint32Array(ref), arr); + assert.deepStrictEqual(exports.__getUint32ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between signed and unsigned with static array layout { let arr = [1, -1 >>> 0, 0x80000000]; - let ref = exports.__retain(exports.__newArray(exports.STATICARRAYU32_ID, arr)); + let ref = exports.__newArray(exports.STATICARRAYU32_ID, arr); assert(exports.__instanceof(ref, exports.STATICARRAYU32_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), arr); } // should be able to distinguish between integer and float { let values = [0.0, 1.5, 2.5]; let arr = new Float32Array(values); - let ref = exports.__retain(exports.__newArray(exports.FLOAT32ARRAY_ID, arr)); + let ref = exports.__newArray(exports.FLOAT32ARRAY_ID, arr); assert(exports.__instanceof(ref, exports.FLOAT32ARRAY_ID)); - assert.deepEqual(exports.__getFloat32Array(ref), arr); - assert.deepEqual(exports.__getFloat32ArrayView(ref), arr); - assert.deepEqual(exports.__getArray(ref), values); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getFloat32Array(ref), arr); + assert.deepStrictEqual(exports.__getFloat32ArrayView(ref), arr); + assert.deepStrictEqual(exports.__getArray(ref), values); } // should be able to distinguish between integer and float static arrays { let arr = [0.0, 1.5, 2.5]; - let ref = exports.__retain(exports.__newArray(exports.STATICARRAYF32_ID, arr)); + let ref = exports.__newArray(exports.STATICARRAYF32_ID, arr); assert(exports.__instanceof(ref, exports.STATICARRAYF32_ID)); - assert.deepEqual(exports.__getArray(ref), arr); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), arr); } // should be able to work with normal arrays { let arr = [1, 2, 3, 4, 5]; - let ref = exports.__retain(exports.__newArray(exports.ARRAYI32_ID, arr)); + let ref = exports.__newArray(exports.ARRAYI32_ID, arr); assert(exports.__instanceof(ref, exports.ARRAYI32_ID)); exports.changeLength(ref, 3); - assert.deepEqual(exports.__getArray(ref), [1, 2, 3]); - exports.__release(ref); - try { exports.__release(ref); assert(false); } catch (e) { /* nop */ } + assert.deepStrictEqual(exports.__getArray(ref), [1, 2, 3]); + } + + // should be able to pin references externally + { + let ptr = exports.__newString("test"); + exports.__pin(ptr); + try { exports.__pin(ptr); assert(false); } catch (e) { /* nop */ } + exports.__unpin(ptr); + try { exports.__unpin(ptr); assert(false); } catch (e) { /* nop */ } } // should be able to correctly call a function with variable arguments @@ -245,34 +220,32 @@ function test(file) { assert.strictEqual(car.isDoorsOpen, 1); car.closeDoors(); assert.strictEqual(car.isDoorsOpen, 0); - exports.__release(car); // uses Car.prototype.valueOf to obtain `thisPtr` + assert(typeof +car === "number"); // uses Car.prototype.valueOf to obtain `thisPtr` // should be able to use trace exports.dotrace(42); // should be able to mutate an array in place using getArrayView { - let ptr = exports.__retain(exports.__newArray(exports.FLOAT32ARRAY_ID, [1, 2, 3])); + let ptr = exports.__newArray(exports.FLOAT32ARRAY_ID, [1, 2, 3]); let view = exports.__getArrayView(ptr); - assert.deepEqual(view, new Float32Array([1, 2, 3])); + assert.deepStrictEqual(view, new Float32Array([1, 2, 3])); exports.modifyFloat32Array(ptr, 0, 4); - assert.deepEqual(view, new Float32Array([4, 2, 3])); - exports.__release(ptr); + assert.deepStrictEqual(view, new Float32Array([4, 2, 3])); } // should be able to mutate an array in place using getFloat32Array { - let ptr = exports.newFloat32Array(3); // returns are pre-retained + let ptr = exports.newFloat32Array(3); let view = exports.__getFloat32ArrayView(ptr); let arr = exports.__getFloat32Array(ptr); - assert.deepEqual(view, new Float32Array([0, 0, 0])); - assert.deepEqual(arr, new Float32Array([0, 0, 0])); + assert.deepStrictEqual(view, new Float32Array([0, 0, 0])); + assert.deepStrictEqual(arr, new Float32Array([0, 0, 0])); exports.modifyFloat32Array(ptr, 0, 3); exports.modifyFloat32Array(ptr, 1, 2); exports.modifyFloat32Array(ptr, 2, 1); - assert.deepEqual(view, new Float32Array([3, 2, 1])); - assert.deepEqual(arr, new Float32Array([0, 0, 0])); - exports.__release(ptr); + assert.deepStrictEqual(view, new Float32Array([3, 2, 1])); + assert.deepStrictEqual(arr, new Float32Array([0, 0, 0])); } } diff --git a/lib/loader/umd/index.js b/lib/loader/umd/index.js index 0dba9053a0..b6d5501e0f 100644 --- a/lib/loader/umd/index.js +++ b/lib/loader/umd/index.js @@ -88,6 +88,12 @@ var loader = (function(exports) { imports.Date = imports.Date || Date; return extendedExports; } + + const E_NOEXPORTRUNTIME = "Operation requires compiling with --exportRuntime"; + + const F_NOEXPORTRUNTIME = function () { + throw Error(E_NOEXPORTRUNTIME); + }; /** Prepares the final module once instantiation is complete. */ @@ -95,13 +101,23 @@ var loader = (function(exports) { const exports = instance.exports; const memory = exports.memory; const table = exports.table; - const __new = exports["__new"]; - const __retain = exports["__retain"]; - const __rtti_base = exports["__rtti_base"] || ~0; // oob if not present + const __new = exports.__new || F_NOEXPORTRUNTIME; - /** Gets the runtime type info for the given id. */ + const __pin = exports.__pin || F_NOEXPORTRUNTIME; + + const __unpin = exports.__unpin || F_NOEXPORTRUNTIME; + const __collect = exports.__collect || F_NOEXPORTRUNTIME; + + const __rtti_base = exports.__rtti_base || ~0; // oob if not present + + + extendedExports.__new = __new; + extendedExports.__pin = __pin; + extendedExports.__unpin = __unpin; + extendedExports.__collect = __collect; + /** Gets the runtime type info for the given id. */ function getInfo(id) { const U32 = new Uint32Array(memory.buffer); @@ -137,7 +153,7 @@ var loader = (function(exports) { // return 31 - Math.clz32((info >>> KEY_ALIGN_OFFSET) & 31); // -1 if none // } - /** Allocates a new string in the module's memory and returns its retained pointer. */ + /** Allocates a new string in the module's memory and returns its pointer. */ function __newString(str) { @@ -196,7 +212,7 @@ var loader = (function(exports) { throw Error(`unsupported align: ${alignLog2}`); } - /** Allocates a new array in the module's memory and returns its retained pointer. */ + /** Allocates a new array in the module's memory and returns its pointer. */ function __newArray(id, values) { @@ -214,7 +230,7 @@ var loader = (function(exports) { const arr = __new(info & ARRAY ? ARRAY_SIZE : ARRAYBUFFERVIEW_SIZE, id); const U32 = new Uint32Array(memory.buffer); - U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = __retain(buf); + U32[arr + ARRAYBUFFERVIEW_BUFFER_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATASTART_OFFSET >>> 2] = buf; U32[arr + ARRAYBUFFERVIEW_DATALENGTH_OFFSET >>> 2] = length << align; if (info & ARRAY) U32[arr + ARRAY_LENGTH_OFFSET >>> 2] = length; @@ -224,7 +240,10 @@ var loader = (function(exports) { const view = getView(align, info & VAL_SIGNED, info & VAL_FLOAT); if (info & VAL_MANAGED) { - for (let i = 0; i < length; ++i) view[(buf >>> align) + i] = __retain(values[i]); + for (let i = 0; i < length; ++i) { + const value = values[i]; + view[(buf >>> align) + i] = value; + } } else { view.set(values, buf >>> align); } diff --git a/lib/rtrace/README.md b/lib/rtrace/README.md index 1802c7e503..27635a6824 100644 --- a/lib/rtrace/README.md +++ b/lib/rtrace/README.md @@ -1,6 +1,6 @@ # AssemblyScript Rtrace -A tiny utility to sanitize the AssemblyScript runtime. Records allocations, retains, releases and frees performed by the runtime and emits an error if something is off. Also checks for leaks. +A tiny utility to sanitize the AssemblyScript runtime. Records allocations and frees performed by the runtime and emits an error if something is off. Also checks for leaks. Instructions ------------ @@ -8,7 +8,7 @@ Instructions Compile your module that uses the full or half runtime with `-use ASC_RTRACE=1 --explicitStart` and include an instance of this module as the import named `rtrace`. ```js -var rtrace = new Rtrace({ +const rtrace = new Rtrace({ onerror(err, info) { // handle error }, @@ -22,13 +22,11 @@ var rtrace = new Rtrace({ } }); -var { module, instance } = await WebAssembly.instantiate(..., { - rtrace, - env: Object.assign({ // - ... // only required when instrumenting memory - }, rtrace.env), // - ... -}); +const { module, instance } = await WebAssembly.instantiate(..., + rtrace.install({ + ...imports... + }) +); instance.exports._start(); ... @@ -40,4 +38,4 @@ if (rtrace.active) { } ``` -Note that references retained in globals which are not cleared before execution concludes appear as leaks, including their inner members. A TypedArray would leak itself and its backing ArrayBuffer in this case for example. This is perfectly normal and clearing all globals avoids this. +Note that references in globals which are not cleared before collection is performed appear as leaks, including their inner members. A TypedArray would leak itself and its backing ArrayBuffer in this case for example. This is perfectly normal and clearing all globals avoids this. diff --git a/lib/rtrace/bin/rtplot.js b/lib/rtrace/bin/rtplot.js new file mode 100644 index 0000000000..96e8a0894b --- /dev/null +++ b/lib/rtrace/bin/rtplot.js @@ -0,0 +1,14 @@ +#!/usr/bin/env node + +import process from "process"; +import fs from "fs"; +import path from "path"; +import { gc } from "../plot.js"; + +if (process.argv.length < 3) { + process.stderr.write(`Usage: ${path.basename(process.argv[1])} rtrace-gc-profile.json > profile.svg\n`); + process.exit(1); +} + +const data = JSON.parse(fs.readFileSync(process.argv[2])); +process.stdout.write(gc(data)); diff --git a/lib/rtrace/index.d.ts b/lib/rtrace/index.d.ts index cc0983dc2b..12d3c0aa94 100644 --- a/lib/rtrace/index.d.ts +++ b/lib/rtrace/index.d.ts @@ -2,27 +2,33 @@ export declare interface BlockInfo { /** Pointer to the block. */ ptr: number, - /** Block size. */ + /** Block size including overhead. */ size: number, - /** Runtime header. */ - header: { - /** Memory manager info bits. */ - mmInfo: number, - /** Garbage collector info bits. */ - gcInfo: number, - /** Runtime id. */ - rtId: number, - /** Runtime size. */ - rtSize: number + /** Memory manager info. */ + mmInfo: { + tags: string, + size: number }, - toString(): string + /** Garbage collector info. */ + gcInfo: { + color: string, + next: number, + prev: number + }, + /** Runtime id. */ + rtId: number, + /** Runtime size. */ + rtSize: number } +type ErrorCallback = (error: Error, info: BlockInfo) => void; +type InfoCallback = (msg: string) => void; + export declare interface RtraceOptions { /** Function being called when a problem is detected. */ - onerror?: (error: Error, info: BlockInfo) => void, + onerror?: ErrorCallback, /** Function being called with information messages. */ - oninfo?: (msg: string) => void, + oninfo?: InfoCallback, /** Obtains the module's memory instance. */ getMemory(): WebAssembly.Memory; } @@ -34,14 +40,25 @@ export declare const OBJECT_OVERHEAD; /** Overhead between a pointer to a block and its managed data. */ export declare const TOTAL_OVERHEAD; -export declare class Rtrace { - [key: string]: unknown; // can be used as a Wasm import - +export declare class Rtrace { /** Creates a new `Rtrace` instance. */ constructor(options: RtraceOptions); /** Checks if rtrace is active, i.e. at least one event has occurred. */ readonly active: boolean; + /** Number of seen allocation events. */ + readonly allocCount: number; + /** Number of seen resize events during realloc. */ + readonly resizeCount: number; + /** Number of seens move events during realloc. */ + readonly moveCount: number; + /** Number of seen free events. */ + readonly freeCount: number; + /** Heap base offset reported by the module. */ + readonly heapBase: number; + + /** Installs Rtrace on the specified imports object. */ + install(imports: Record>): Record>; /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ check(): number; @@ -58,12 +75,18 @@ export declare class Rtrace { /** A function that is called when a heap allocation is freed. */ onfree(ptr: number): void; - /** A function that is called when a reference counting increment occurs. */ - onincrement(ptr: number): void; + /** A function that is called when an object is visited by the GC. Should return `true`, unless there's an error. */ + onvisit(ptr: number): boolean; - /** A function that is called when a reference counting decrement occurs. */ - ondecrement(ptr: number): void; + /** A function that is called after a collection phase. */ + oncollect(total: number): void; /** Obtains information about a block. */ getBlockInfo(ptr: number): BlockInfo; + + /** Error message callback. */ + onerror: ErrorCallback; + + /** Info message callback. */ + oninfo: InfoCallback; } diff --git a/lib/rtrace/index.js b/lib/rtrace/index.js index 3b6d910b1c..7e04b5f483 100644 --- a/lib/rtrace/index.js +++ b/lib/rtrace/index.js @@ -13,22 +13,36 @@ export const BLOCK_OVERHEAD = PTR_SIZE; export const OBJECT_OVERHEAD = 16; export const TOTAL_OVERHEAD = BLOCK_OVERHEAD + OBJECT_OVERHEAD; -const RT_TLSF = "~lib/rt/tlsf/"; - function assert(x) { if (!x) throw Error("assertion failed"); return x; } -Error.stackTraceLimit = 50; +Error.stackTraceLimit = 15; function trimStacktrace(stack, levels) { return stack.split(/\r?\n/).slice(1 + levels); } -function isTLSF(stack) { - return stack[0].startsWith(` at ${RT_TLSF}`); -} +const hrtime = typeof performance !== "undefined" && performance.now + ? performance.now + : typeof process !== "undefined" && process.hrtime + ? () => { let t = process.hrtime(); return t[0] * 1e3 + t[1] / 1e6; } + : Date.now; + +const mmTagsToString = [ + "", + "FREE", + "LEFTFREE", + "FREE+LEFTFREE" +]; + +const gcColorToString = [ + "BLACK/WHITE", + "WHITE/BLACK", + "GRAY", + "INVALID" +]; export class Rtrace { @@ -36,39 +50,39 @@ export class Rtrace { this.options = options || {}; this.onerror = this.options.onerror || function() { /* nop */ }; this.oninfo = this.options.oninfo || function() { /* nop */ }; + this.oncollect_ = this.options.oncollect || function() { /* nop */ }; this.memory = null; this.shadow = null; this.shadowStart = 0x100000000; - this.refCounts = new Map(); this.blocks = new Map(); this.allocSites = new Map(); + this.freedBlocks = new Map(); + this.gcProfileStart = 0; + this.gcProfile = []; + this.allocCount = 0; this.resizeCount = 0; this.moveCount = 0; this.freeCount = 0; - this.incrementCount = 0; - this.decrementCount = 0; - - // The following hooks cannot just be on the prototype but must be - // bound so the Rtrace instance can be used as a WebAssembly import. - this.onalloc = this.onalloc.bind(this); - this.onresize = this.onresize.bind(this); - this.onmove = this.onmove.bind(this); - this.onfree = this.onfree.bind(this); - this.onincrement = this.onincrement.bind(this); - this.ondecrement = this.ondecrement.bind(this); - this.env = { - load_ptr: this.load_ptr.bind(this), - load_val_i32: this.load_val_i32.bind(this), - load_val_i64: this.load_val_i64.bind(this), - load_val_f32: this.load_val_f32.bind(this), - load_val_f64: this.load_val_f64.bind(this), - store_ptr: this.store_ptr.bind(this), - store_val_i32: this.store_val_i32.bind(this), - store_val_i64: this.store_val_i64.bind(this), - store_val_f32: this.store_val_f32.bind(this), - store_val_f64: this.store_val_f64.bind(this) - }; + this.heapBase = 0x100000000; + } + + install(imports) { + if (!imports) imports = {}; + imports.rtrace = Object.assign(imports.rtrace || {}, { + oninit: this.oninit.bind(this), + onalloc: this.onalloc.bind(this), + onresize: this.onresize.bind(this), + onmove: this.onmove.bind(this), + onvisit: this.onvisit.bind(this), + onfree: this.onfree.bind(this), + oninterrupt: this.oninterrupt.bind(this), + onyield: this.onyield.bind(this), + oncollect: this.oncollect.bind(this), + onstore: this.onstore.bind(this), + onload: this.onload.bind(this) + }); + return imports; } /** Synchronizes the shadow memory with the module's memory. */ @@ -132,103 +146,100 @@ export class Rtrace { } /** Performs an access to shadow memory. */ - accessShadow(ptr, size, isLoad) { + accessShadow(ptr, size, isLoad, isRT) { this.syncShadow(); if (ptr < this.shadowStart) return; var value = new Uint32Array(this.shadow.buffer, ptr & ~PTR_MASK, 1)[0]; if (value != 0) return; - // FIXME: this is extremely slow - let stack = trimStacktrace(new Error().stack, 2); - if (!isTLSF(stack)) { + if (!isRT) { + let stack = trimStacktrace(new Error().stack, 2); this.onerror(new Error("OOB " + (isLoad ? "load" : "store") + (8 * size) + " at address " + ptr + "\n" + stack.join("\n"))); } } /** Obtains information about a block. */ getBlockInfo(ptr) { - var header = new Uint32Array(this.memory.buffer, ptr, 5); - var mmInfo = header[0]; - var gcInfo = header[1]; - var gcInfo2 = header[2]; - const mmTags = [ - [], - ["FREE"], - ["LEFTFREE"], - ["FREE", "LEFTFREE"] - ]; // 2=LEFTFREE, 1=FREE - const gcColor = [ - "BLACK", - "GRAY", - "WHITE", - "PURPLE" - ]; - var size = mmInfo & ~3; + const [ + mmInfo, + gcInfo, + gcInfo2, + rtId, + rtSize + ] = new Uint32Array(this.memory.buffer, ptr, 5); + const size = mmInfo & ~3; return { ptr, - size: BLOCK_OVERHEAD + size, // block size - header: { - mmInfo: { - tags: mmTags[mmInfo & 3], - size: size - }, - gcInfo: { - buffered: (gcInfo >>> 31) === 1, - color: gcColor[gcInfo << 1 >>> 29], - rc: gcInfo << 4 >>> 4 - }, - gcInfo2, - rtId: header[3], - rtSize: header[4] - } + size: BLOCK_OVERHEAD + size, // total incl. overhead + mmInfo: { + tags: mmTagsToString[mmInfo & 3], + size: size // as stored excl. overhead + }, + gcInfo: { + color: gcColorToString[gcInfo & 3], + next: gcInfo & ~3, + prev: gcInfo2 + }, + rtId, + rtSize }; } /** Checks if rtrace is active, i.e. at least one event has occurred. */ get active() { - return Boolean(this.allocCount || this.moveCount || this.freeCount || this.incrementCount || this.decrementCount); + return Boolean(this.allocCount || this.resizeCount || this.moveCount || this.freeCount); } /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ check() { - if (this.refCounts.size == 1) return 0; // purerc roots if (this.oninfo) { - for (let [ptr, rc] of this.refCounts) { - this.oninfo("LEAKING " + ptr + " @ " + rc); + for (let [ptr, info] of this.blocks) { + this.oninfo("LIVE " + ptr + "\n" + info.allocStack.join("\n")); } } - return this.refCounts.size; + return this.blocks.size; } // Runtime instrumentation + oninit(heapBase) { + this.heapBase = heapBase; + this.gcProfileStart = 0; + this.gcProfile.length = 0; + this.oninfo("INIT heapBase=" + heapBase); + } + onalloc(ptr) { this.syncShadow(); ++this.allocCount; var info = this.getBlockInfo(ptr); - if (this.refCounts.has(ptr)) { + if (this.blocks.has(ptr)) { this.onerror(Error("duplicate alloc: " + ptr), info); } else { this.oninfo("ALLOC " + ptr + ".." + (ptr + info.size)); this.markShadow(info); - this.refCounts.set(ptr, 0); - this.blocks.set(ptr, Object.assign(info, { - allocStack: trimStacktrace(new Error().stack, 1) // strip onalloc - })); + let allocStack = trimStacktrace(new Error().stack, 1); // strip onalloc + this.blocks.set(ptr, Object.assign(info, { allocStack })); } } onresize(ptr, oldSize) { this.syncShadow(); ++this.resizeCount; - var info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { + const info = this.getBlockInfo(ptr); + if (!this.blocks.has(ptr)) { this.onerror(Error("orphaned resize: " + ptr), info); } else { - this.oninfo("RESIZE " + ptr + ".." + (ptr + info.size) + " (" + oldSize + "->" + info.size + ")"); - if (info.size > oldSize) { - this.markShadow(info, BLOCK_OVERHEAD + oldSize); - } else if (info.size < oldSize) { - this.unmarkShadow(info, BLOCK_OVERHEAD + oldSize); + const beforeInfo = this.blocks.get(ptr); + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon resize: ${ptr} (${beforeInfo.size} != ${oldSize})`), info); + } + const newSize = info.size; + this.oninfo("RESIZE " + ptr + ".." + (ptr + newSize) + " (" + oldSize + "->" + newSize + ")"); + this.blocks.set(ptr, Object.assign(info, { allocStack: beforeInfo.allocStack })); + if (newSize > oldSize) { + this.markShadow(info, oldSize); + } else if (newSize < oldSize) { + this.unmarkShadow(info, oldSize); } } } @@ -238,112 +249,95 @@ export class Rtrace { ++this.moveCount; var oldInfo = this.getBlockInfo(oldPtr); var newInfo = this.getBlockInfo(newPtr); - if (!this.refCounts.has(oldPtr)) { + if (!this.blocks.has(oldPtr)) { this.onerror(Error("orphaned move (old): " + oldPtr), oldInfo); } else { - if (!this.refCounts.has(newPtr)) { + if (!this.blocks.has(newPtr)) { this.onerror(Error("orphaned move (new): " + newPtr), newInfo); } else { - let newRc = this.refCounts.get(newPtr); - if (newRc != 0) { - this.onerror(Error("invalid realloc: " + oldPtr + " -> " + newPtr + " @ " + newRc), oldInfo); - } else { - let oldRc = this.refCounts.get(oldPtr); - this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldInfo.size) + " @ " + oldRc + " -> " + newPtr + ".." + (newPtr + newInfo.size)); - this.refCounts.set(newPtr, oldRc); - // calls new alloc before and old free after + const beforeInfo = this.blocks.get(oldPtr); + const oldSize = oldInfo.size; + const newSize = newInfo.size; + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon move: ${oldPtr} (${beforeInfo.size} != ${oldSize})`), oldInfo); } + this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldSize) + " -> " + newPtr + ".." + (newPtr + newSize)); + // calls new alloc before and old free after } } } - onfree(ptr) { - this.syncShadow(); - ++this.freeCount; - var info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned free: " + ptr), info); - } else { - this.oninfo("FREE " + ptr + ".." + (ptr + info.size) + " @ " + this.refCounts.get(ptr)); - this.refCounts.delete(ptr); - this.unmarkShadow(info); - let block = this.blocks.get(ptr); - block.freeStack = trimStacktrace(new Error().stack, 1); // strip onfree - } - } - - onincrement(ptr) { - this.syncShadow(); - ++this.incrementCount; - var info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned increment: " + ptr), info); - } else { - let rc = this.refCounts.get(ptr); - this.oninfo("++ " + ptr + " @ " + rc + "->" + (rc + 1)); - this.refCounts.set(ptr, rc + 1); + onvisit(ptr) { + // Indicates that a block has been freed but it still visited by the GC + if (ptr > this.heapBase && !this.blocks.has(ptr)) { + let err = Error("orphaned visit: " + ptr); + let info = this.freedBlocks.get(ptr); + if (info) { + err.stack += "\n^ allocated at:\n" + info.allocStack.join("\n"); + err.stack += "\n^ freed at:\n" + info.freeStack.join("\n"); + } + this.onerror(err, null); + return false; } + return true; } - ondecrement(ptr) { + onfree(ptr) { this.syncShadow(); - ++this.decrementCount; + ++this.freeCount; var info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned decrement: " + ptr), info); + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned free: " + ptr), info); } else { - let rc = this.refCounts.get(ptr); - if (rc < 1) { - this.onerror(Error("invalid decrement: " + ptr + " @ " + rc), info); - } else { - this.oninfo("-- " + ptr + " @ " + rc + "->" + (rc - 1)); - this.refCounts.set(ptr, rc - 1); + const oldInfo = this.blocks.get(ptr); + if (info.size != oldInfo.size) { + this.onerror(Error(`size mismatch upon free: ${ptr} (${oldInfo.size} != ${info.size})`), info); } + this.oninfo("FREE " + ptr + ".." + (ptr + info.size)); + this.unmarkShadow(info); + const allocInfo = this.blocks.get(ptr); + this.blocks.delete(ptr); + const allocStack = allocInfo.allocStack; + const freeStack = trimStacktrace(new Error().stack, 1); // strip onfree + // (not much) TODO: Maintaining these is essentially a memory leak + this.freedBlocks.set(ptr, { allocStack, freeStack }); } } - // Memory instrumentation - - load_ptr(id, bytes, offset, address) { - this.accessShadow(address + offset, bytes, true); - return address; + oncollect(total) { + this.oninfo(`COLLECT at ${total}`); + this.plot(total); + this.oncollect_(); } - load_val_i32(id, value) { - return value; - } - - load_val_i64(id, value) { - return value; - } + // GC profiling - load_val_f32(id, value) { - return value; + plot(total, pause = 0) { + if (!this.gcProfileStart) this.gcProfileStart = Date.now(); + this.gcProfile.push([ Date.now() - this.gcProfileStart, total, pause ]); } - load_val_f64(id, value) { - return value; + oninterrupt(total) { + this.interruptStart = hrtime(); + this.plot(total); } - store_ptr(id, bytes, offset, address) { - this.accessShadow(address + offset, bytes, false); - return address; + onyield(total) { + var pause = hrtime() - this.interruptStart; + if (pause >= 1) console.log("interrupted for " + pause.toFixed(1) + "ms"); + this.plot(total, pause); } - store_val_i32(id, value) { - return value; - } - - store_val_i64(id, value) { - return value; - } + // Memory instrumentation - store_val_f32(id, value) { - return value; + onstore(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, false, isRT); + return ptr; } - store_val_f64(id, value) { - return value; + onload(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, true, isRT); + return ptr; } } diff --git a/lib/rtrace/package.json b/lib/rtrace/package.json index b1609165fb..2416a9b04f 100644 --- a/lib/rtrace/package.json +++ b/lib/rtrace/package.json @@ -26,10 +26,17 @@ "import": "./index.js", "require": "./umd/index.js" }, + "bin": { + "rtplot": "bin/rtplot.js" + }, "scripts": { "build": "npx esm2umd rtrace index.js > umd/index.js", "test": "node tests" }, + "dependencies": { + "d3": "^6.3.1", + "jsdom": "^16.4.0" + }, "files": [ "index.d.ts", "index.js", @@ -37,6 +44,7 @@ "umd/index.d.ts", "umd/index.js", "umd/package.json", + "bin/rtplot.js", "README.md" ] } diff --git a/lib/rtrace/plot.js b/lib/rtrace/plot.js new file mode 100644 index 0000000000..5e1845fc78 --- /dev/null +++ b/lib/rtrace/plot.js @@ -0,0 +1,105 @@ +import * as d3 from "d3"; +import { JSDOM } from "jsdom"; + +/** Creates a plot of a GC profile in `rtrace.gcProfile`. */ +export function gc(data, width = 1280, height = 720) { + const margin = { top: 20, right: 30, bottom: 30, left: 30 }; + const dom = new JSDOM(""); + const body = d3.select(dom.window.document.querySelector("body")); + + const svg = body.append("svg") + .attr("xmlns", "http://www.w3.org/2000/svg") + .attr("viewBox", [0, 0, width, height]); + + const x = d3.scaleLinear() + .domain([d3.min(data, d => d[0]), d3.max(data, d => d[0])]) + .range([margin.left, width - margin.right]); + + const xAxis = g => g + .attr("transform", `translate(0,${height - margin.bottom})`) + .call(d3.axisBottom(x).ticks(width / 80).tickSizeOuter(0)); + + const y = d3.scaleLinear() + .domain([0, d3.max(data, d => d[1])]).nice() + .range([height - margin.bottom, margin.top]); + + const yAxis = g => g + .attr("transform", `translate(${margin.left},0)`) + .call(d3.axisLeft(y)) + .call(g => g.select(".domain").remove()) + .call(g => g.select(".tick:last-of-type text").clone() + .attr("x", 3) + .attr("text-anchor", "start") + .attr("font-weight", "bold") + .attr("color", "steelblue") + .text("memory (b)") + ); + + const y2 = d3.scaleLinear() + .domain([0, d3.max(data, d => d[2])]).nice() + .range([height - margin.bottom, margin.top]); + + const y2Axis = g => g + .attr("transform", `translate(${width - margin.right},0)`) + .call(d3.axisRight(y2)) + .call(g => g.select(".domain").remove()) + .call(g => g.select(".tick:last-of-type text").clone() + .attr("x", -3) + .attr("text-anchor", "end") + .attr("font-weight", "bold") + .attr("color", "orange") + .text("pause (ms)") + ); + + svg.append("g") + .attr("fill", "orange") + .selectAll("rect") + .data(data) + .join("rect") + .attr("x", d => x(d[0])) + .attr("y", d => y2(d[2])) + .attr("height", d => y2(0) - y2(d[2])) + .attr("width", 0.5); + + svg.append("g") + .attr("fill", "orange") + .selectAll("line") + .data(data) + .join("circle") + .attr("cx", d => x(d[0])) + .attr("cy", d => y2(d[2])) + .attr("r", 1.5); + + const line = d3.line() + .defined(d => !isNaN(d[1])) + .x(d => x(d[0])) + .y(d => y(d[1])); + + svg.append("path") + .datum(data) + .attr("fill", "none") + .attr("stroke", "steelblue") + .attr("stroke-width", 0.5) + .attr("stroke-linejoin", "round") + .attr("stroke-linecap", "round") + .attr("d", line); + + svg.append("g") + .attr("fill", "steelblue") + .selectAll("circle") + .data(data) + .join("circle") + .attr("cx", d => x(d[0])) + .attr("cy", d => y(d[1])) + .attr("r", 1.5); + + svg.append("g").call(xAxis); + svg.append("g").call(yAxis); + svg.append("g").call(y2Axis); + + return body.html(); +} + +export default { + gc +}; diff --git a/tests/runtime/index.html b/lib/rtrace/tlsfvis.html similarity index 99% rename from tests/runtime/index.html rename to lib/rtrace/tlsfvis.html index fd9dd09213..aa359833a3 100644 --- a/tests/runtime/index.html +++ b/lib/rtrace/tlsfvis.html @@ -148,7 +148,7 @@ -

AssemblyScript Runtime Visualizer / TLSF

+

TLSF visualizer

Notes:

    diff --git a/lib/rtrace/umd/index.js b/lib/rtrace/umd/index.js index 9f4c38395f..f4fdb0ad10 100644 --- a/lib/rtrace/umd/index.js +++ b/lib/rtrace/umd/index.js @@ -21,22 +21,24 @@ var rtrace = (function(exports) { exports.OBJECT_OVERHEAD = OBJECT_OVERHEAD; const TOTAL_OVERHEAD = BLOCK_OVERHEAD + OBJECT_OVERHEAD; exports.TOTAL_OVERHEAD = TOTAL_OVERHEAD; - const RT_TLSF = "~lib/rt/tlsf/"; function assert(x) { if (!x) throw Error("assertion failed"); return x; } - Error.stackTraceLimit = 50; + Error.stackTraceLimit = 15; function trimStacktrace(stack, levels) { return stack.split(/\r?\n/).slice(1 + levels); } - function isTLSF(stack) { - return stack[0].startsWith(` at ${RT_TLSF}`); - } + const hrtime = typeof performance !== "undefined" && performance.now ? performance.now : typeof process !== "undefined" && process.hrtime ? () => { + let t = process.hrtime(); + return t[0] * 1e3 + t[1] / 1e6; + } : Date.now; + const mmTagsToString = ["", "FREE", "LEFTFREE", "FREE+LEFTFREE"]; + const gcColorToString = ["BLACK/WHITE", "WHITE/BLACK", "GRAY", "INVALID"]; class Rtrace { constructor(options) { @@ -50,38 +52,41 @@ var rtrace = (function(exports) { /* nop */ }; + this.oncollect_ = this.options.oncollect || function () { + /* nop */ + }; + this.memory = null; this.shadow = null; this.shadowStart = 0x100000000; - this.refCounts = new Map(); this.blocks = new Map(); this.allocSites = new Map(); + this.freedBlocks = new Map(); + this.gcProfileStart = 0; + this.gcProfile = []; this.allocCount = 0; this.resizeCount = 0; this.moveCount = 0; this.freeCount = 0; - this.incrementCount = 0; - this.decrementCount = 0; // The following hooks cannot just be on the prototype but must be - // bound so the Rtrace instance can be used as a WebAssembly import. - - this.onalloc = this.onalloc.bind(this); - this.onresize = this.onresize.bind(this); - this.onmove = this.onmove.bind(this); - this.onfree = this.onfree.bind(this); - this.onincrement = this.onincrement.bind(this); - this.ondecrement = this.ondecrement.bind(this); - this.env = { - load_ptr: this.load_ptr.bind(this), - load_val_i32: this.load_val_i32.bind(this), - load_val_i64: this.load_val_i64.bind(this), - load_val_f32: this.load_val_f32.bind(this), - load_val_f64: this.load_val_f64.bind(this), - store_ptr: this.store_ptr.bind(this), - store_val_i32: this.store_val_i32.bind(this), - store_val_i64: this.store_val_i64.bind(this), - store_val_f32: this.store_val_f32.bind(this), - store_val_f64: this.store_val_f64.bind(this) - }; + this.heapBase = 0x100000000; + } + + install(imports) { + if (!imports) imports = {}; + imports.rtrace = Object.assign(imports.rtrace || {}, { + oninit: this.oninit.bind(this), + onalloc: this.onalloc.bind(this), + onresize: this.onresize.bind(this), + onmove: this.onmove.bind(this), + onvisit: this.onvisit.bind(this), + onfree: this.onfree.bind(this), + oninterrupt: this.oninterrupt.bind(this), + onyield: this.onyield.bind(this), + oncollect: this.oncollect.bind(this), + onstore: this.onstore.bind(this), + onload: this.onload.bind(this) + }); + return imports; } /** Synchronizes the shadow memory with the module's memory. */ @@ -158,15 +163,14 @@ var rtrace = (function(exports) { /** Performs an access to shadow memory. */ - accessShadow(ptr, size, isLoad) { + accessShadow(ptr, size, isLoad, isRT) { this.syncShadow(); if (ptr < this.shadowStart) return; var value = new Uint32Array(this.shadow.buffer, ptr & ~PTR_MASK, 1)[0]; - if (value != 0) return; // FIXME: this is extremely slow + if (value != 0) return; - let stack = trimStacktrace(new Error().stack, 2); - - if (!isTLSF(stack)) { + if (!isRT) { + let stack = trimStacktrace(new Error().stack, 2); this.onerror(new Error("OOB " + (isLoad ? "load" : "store") + 8 * size + " at address " + ptr + "\n" + stack.join("\n"))); } } @@ -174,70 +178,67 @@ var rtrace = (function(exports) { getBlockInfo(ptr) { - var header = new Uint32Array(this.memory.buffer, ptr, 5); - var mmInfo = header[0]; - var gcInfo = header[1]; - var gcInfo2 = header[2]; - const mmTags = [[], ["FREE"], ["LEFTFREE"], ["FREE", "LEFTFREE"]]; // 2=LEFTFREE, 1=FREE - - const gcColor = ["BLACK", "GRAY", "WHITE", "PURPLE"]; - var size = mmInfo & ~3; + const [mmInfo, gcInfo, gcInfo2, rtId, rtSize] = new Uint32Array(this.memory.buffer, ptr, 5); + const size = mmInfo & ~3; return { ptr, size: BLOCK_OVERHEAD + size, - // block size - header: { - mmInfo: { - tags: mmTags[mmInfo & 3], - size: size - }, - gcInfo: { - buffered: gcInfo >>> 31 === 1, - color: gcColor[gcInfo << 1 >>> 29], - rc: gcInfo << 4 >>> 4 - }, - gcInfo2, - rtId: header[3], - rtSize: header[4] - } + // total incl. overhead + mmInfo: { + tags: mmTagsToString[mmInfo & 3], + size: size // as stored excl. overhead + + }, + gcInfo: { + color: gcColorToString[gcInfo & 3], + next: gcInfo & ~3, + prev: gcInfo2 + }, + rtId, + rtSize }; } /** Checks if rtrace is active, i.e. at least one event has occurred. */ get active() { - return Boolean(this.allocCount || this.moveCount || this.freeCount || this.incrementCount || this.decrementCount); + return Boolean(this.allocCount || this.resizeCount || this.moveCount || this.freeCount); } /** Checks if there are any leaks and emits them via `oninfo`. Returns the number of live blocks. */ check() { - if (this.refCounts.size == 1) return 0; // purerc roots - if (this.oninfo) { - for (let [ptr, rc] of this.refCounts) { - this.oninfo("LEAKING " + ptr + " @ " + rc); + for (let [ptr, info] of this.blocks) { + this.oninfo("LIVE " + ptr + "\n" + info.allocStack.join("\n")); } } - return this.refCounts.size; + return this.blocks.size; } // Runtime instrumentation + oninit(heapBase) { + this.heapBase = heapBase; + this.gcProfileStart = 0; + this.gcProfile.length = 0; + this.oninfo("INIT heapBase=" + heapBase); + } + onalloc(ptr) { this.syncShadow(); ++this.allocCount; var info = this.getBlockInfo(ptr); - if (this.refCounts.has(ptr)) { + if (this.blocks.has(ptr)) { this.onerror(Error("duplicate alloc: " + ptr), info); } else { this.oninfo("ALLOC " + ptr + ".." + (ptr + info.size)); this.markShadow(info); - this.refCounts.set(ptr, 0); - this.blocks.set(ptr, Object.assign(info, { - allocStack: trimStacktrace(new Error().stack, 1) // strip onalloc + let allocStack = trimStacktrace(new Error().stack, 1); // strip onalloc + this.blocks.set(ptr, Object.assign(info, { + allocStack })); } } @@ -245,17 +246,27 @@ var rtrace = (function(exports) { onresize(ptr, oldSize) { this.syncShadow(); ++this.resizeCount; - var info = this.getBlockInfo(ptr); + const info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { + if (!this.blocks.has(ptr)) { this.onerror(Error("orphaned resize: " + ptr), info); } else { - this.oninfo("RESIZE " + ptr + ".." + (ptr + info.size) + " (" + oldSize + "->" + info.size + ")"); + const beforeInfo = this.blocks.get(ptr); - if (info.size > oldSize) { - this.markShadow(info, BLOCK_OVERHEAD + oldSize); - } else if (info.size < oldSize) { - this.unmarkShadow(info, BLOCK_OVERHEAD + oldSize); + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon resize: ${ptr} (${beforeInfo.size} != ${oldSize})`), info); + } + + const newSize = info.size; + this.oninfo("RESIZE " + ptr + ".." + (ptr + newSize) + " (" + oldSize + "->" + newSize + ")"); + this.blocks.set(ptr, Object.assign(info, { + allocStack: beforeInfo.allocStack + })); + + if (newSize > oldSize) { + this.markShadow(info, oldSize); + } else if (newSize < oldSize) { + this.unmarkShadow(info, oldSize); } } } @@ -266,115 +277,104 @@ var rtrace = (function(exports) { var oldInfo = this.getBlockInfo(oldPtr); var newInfo = this.getBlockInfo(newPtr); - if (!this.refCounts.has(oldPtr)) { + if (!this.blocks.has(oldPtr)) { this.onerror(Error("orphaned move (old): " + oldPtr), oldInfo); } else { - if (!this.refCounts.has(newPtr)) { + if (!this.blocks.has(newPtr)) { this.onerror(Error("orphaned move (new): " + newPtr), newInfo); } else { - let newRc = this.refCounts.get(newPtr); - - if (newRc != 0) { - this.onerror(Error("invalid realloc: " + oldPtr + " -> " + newPtr + " @ " + newRc), oldInfo); - } else { - let oldRc = this.refCounts.get(oldPtr); - this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldInfo.size) + " @ " + oldRc + " -> " + newPtr + ".." + (newPtr + newInfo.size)); - this.refCounts.set(newPtr, oldRc); // calls new alloc before and old free after + const beforeInfo = this.blocks.get(oldPtr); + const oldSize = oldInfo.size; + const newSize = newInfo.size; + + if (beforeInfo.size != oldSize) { + this.onerror(Error(`size mismatch upon move: ${oldPtr} (${beforeInfo.size} != ${oldSize})`), oldInfo); } + + this.oninfo("MOVE " + oldPtr + ".." + (oldPtr + oldSize) + " -> " + newPtr + ".." + (newPtr + newSize)); // calls new alloc before and old free after } } } - onfree(ptr) { - this.syncShadow(); - ++this.freeCount; - var info = this.getBlockInfo(ptr); - - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned free: " + ptr), info); - } else { - this.oninfo("FREE " + ptr + ".." + (ptr + info.size) + " @ " + this.refCounts.get(ptr)); - this.refCounts.delete(ptr); - this.unmarkShadow(info); - let block = this.blocks.get(ptr); - block.freeStack = trimStacktrace(new Error().stack, 1); // strip onfree - } - } + onvisit(ptr) { + // Indicates that a block has been freed but it still visited by the GC + if (ptr > this.heapBase && !this.blocks.has(ptr)) { + let err = Error("orphaned visit: " + ptr); + let info = this.freedBlocks.get(ptr); - onincrement(ptr) { - this.syncShadow(); - ++this.incrementCount; - var info = this.getBlockInfo(ptr); + if (info) { + err.stack += "\n^ allocated at:\n" + info.allocStack.join("\n"); + err.stack += "\n^ freed at:\n" + info.freeStack.join("\n"); + } - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned increment: " + ptr), info); - } else { - let rc = this.refCounts.get(ptr); - this.oninfo("++ " + ptr + " @ " + rc + "->" + (rc + 1)); - this.refCounts.set(ptr, rc + 1); + this.onerror(err, null); + return false; } + + return true; } - ondecrement(ptr) { + onfree(ptr) { this.syncShadow(); - ++this.decrementCount; + ++this.freeCount; var info = this.getBlockInfo(ptr); - if (!this.refCounts.has(ptr)) { - this.onerror(Error("orphaned decrement: " + ptr), info); + if (!this.blocks.has(ptr)) { + this.onerror(Error("orphaned free: " + ptr), info); } else { - let rc = this.refCounts.get(ptr); + const oldInfo = this.blocks.get(ptr); - if (rc < 1) { - this.onerror(Error("invalid decrement: " + ptr + " @ " + rc), info); - } else { - this.oninfo("-- " + ptr + " @ " + rc + "->" + (rc - 1)); - this.refCounts.set(ptr, rc - 1); + if (info.size != oldInfo.size) { + this.onerror(Error(`size mismatch upon free: ${ptr} (${oldInfo.size} != ${info.size})`), info); } - } - } // Memory instrumentation - - load_ptr(id, bytes, offset, address) { - this.accessShadow(address + offset, bytes, true); - return address; - } - - load_val_i32(id, value) { - return value; + this.oninfo("FREE " + ptr + ".." + (ptr + info.size)); + this.unmarkShadow(info); + const allocInfo = this.blocks.get(ptr); + this.blocks.delete(ptr); + const allocStack = allocInfo.allocStack; + const freeStack = trimStacktrace(new Error().stack, 1); // strip onfree + // (not much) TODO: Maintaining these is essentially a memory leak + + this.freedBlocks.set(ptr, { + allocStack, + freeStack + }); + } } - load_val_i64(id, value) { - return value; - } + oncollect(total) { + this.oninfo(`COLLECT at ${total}`); + this.plot(total); + this.oncollect_(); + } // GC profiling - load_val_f32(id, value) { - return value; - } - load_val_f64(id, value) { - return value; + plot(total, pause = 0) { + if (!this.gcProfileStart) this.gcProfileStart = Date.now(); + this.gcProfile.push([Date.now() - this.gcProfileStart, total, pause]); } - store_ptr(id, bytes, offset, address) { - this.accessShadow(address + offset, bytes, false); - return address; + oninterrupt(total) { + this.interruptStart = hrtime(); + this.plot(total); } - store_val_i32(id, value) { - return value; - } + onyield(total) { + var pause = hrtime() - this.interruptStart; + if (pause >= 1) console.log("interrupted for " + pause.toFixed(1) + "ms"); + this.plot(total, pause); + } // Memory instrumentation - store_val_i64(id, value) { - return value; - } - store_val_f32(id, value) { - return value; + onstore(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, false, isRT); + return ptr; } - store_val_f64(id, value) { - return value; + onload(ptr, offset, bytes, isRT) { + this.accessShadow(ptr + offset, bytes, true, isRT); + return ptr; } } diff --git a/package-lock.json b/package-lock.json index 1d2183361b..6eb1880e0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -585,9 +585,9 @@ "dev": true }, "binaryen": { - "version": "98.0.0-nightly.20201109", - "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz", - "integrity": "sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw==" + "version": "98.0.0-nightly.20210106", + "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-98.0.0-nightly.20210106.tgz", + "integrity": "sha512-iunAgesqT9PXVYCc72FA4h0sCCKLifruT6NuUH63xqlFJGpChhZLgOtyIb/fIgTibN5Pd692cxfBViyCWFsJ9Q==" }, "brace-expansion": { "version": "1.1.11", diff --git a/package.json b/package.json index 8928f0199a..d3c5e59425 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "url": "https://github.com/AssemblyScript/assemblyscript/issues" }, "dependencies": { - "binaryen": "98.0.0-nightly.20201109", + "binaryen": "98.0.0-nightly.20210106", "long": "^4.0.0", "source-map-support": "^0.5.19", "ts-node": "^6.2.0" @@ -77,7 +77,7 @@ "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 tests/compiler", + "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", "test:asconfig": "cd tests/asconfig && npm run test", @@ -87,9 +87,13 @@ "prepublishOnly": "node scripts/prepublish", "postpublish": "node scripts/postpublish", "asbuild": "npm run asbuild:untouched && npm run asbuild:optimized", - "asbuild:untouched": "node bin/asc src/glue/wasm/index.ts src/index.ts -t out/assemblyscript.untouched.wat -b out/assemblyscript.untouched.wasm -d out/assemblyscript.d.ts --debug --measure --runtime stub --explicitStart", - "asbuild:optimized": "node bin/asc src/glue/wasm/index.ts src/index.ts -t out/assemblyscript.optimized.wat -b out/assemblyscript.optimized.wasm -O3 --measure --runtime stub", - "asbuild:rtraced": "node bin/asc src/glue/wasm/index.ts src/index.ts -t out/assemblyscript.rtraced.wat -b out/assemblyscript.rtraced.wasm --debug --measure --runtime full --explicitStart --use ASC_RTRACE=1 --runPasses instrument-memory", + "asbuild:untouched": "node bin/asc --config src/asconfig.json --target untouched", + "asbuild:optimized": "node bin/asc --config src/asconfig.json --target optimized", + "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" }, "releaseFiles": [ diff --git a/src/README.md b/src/README.md index 7cebb382dd..9792d6c959 100644 --- a/src/README.md +++ b/src/README.md @@ -1,12 +1,12 @@ Compiler ======== -Portable compiler sources that compile to both JavaScript using `tsc` and, eventually, WebAssembly using `asc`. +Portable compiler sources that compile to both JavaScript using `tsc` and WebAssembly using `asc`. Architecture ------------ -![](https://assemblyscript.github.io/assemblyscript/media/architecture.svg) +![](https://raw.githubusercontent.com/AssemblyScript/assemblyscript/master/media/architecture.svg) Usage ----- @@ -20,3 +20,40 @@ binaryen.ready.then(() => { // do something with 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: + +```sh +npm run build +``` + +Uses webpack under the hood, building to `dist/`. + +### Building to WebAssembly + +To build the compiler to a WebAssembly binary, run: + +```sh +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. + +Running `asc` with the WebAssembly variant: + +```ts +asc [options...] --wasm out/assemblyscript.optimized-bootstrap.wasm +``` + +Running the compiler tests with the WebAssembly variant: + +```ts +npm run test:compiler -- --wasm out/assemblyscript.optimized-bootstrap.wasm +``` diff --git a/src/asconfig.json b/src/asconfig.json new file mode 100644 index 0000000000..63fbf89993 --- /dev/null +++ b/src/asconfig.json @@ -0,0 +1,49 @@ +{ + "entries": [ + "./glue/wasm/index.ts", + "./index.ts" + ], + "options": { + "explicitStart": true, + "exportRuntime": true, + "initialMemory": 256, + "runtime": "incremental", + "measure": true + }, + "targets": { + "untouched": { + "binaryFile": "../out/assemblyscript.untouched.wasm", + "textFile": "../out/assemblyscript.untouched.wast", + "tsdFile": "../out/assemblyscript.d.ts", + "debug": true + }, + "optimized": { + "binaryFile": "../out/assemblyscript.optimized.wasm", + "textFile": "../out/assemblyscript.optimized.wast", + "tsdFile": "../out/assemblyscript.d.ts", + "optimizeLevel": 3, + "shrinkLevel": 0 + }, + "rtraced": { + "binaryFile": "../out/assemblyscript.rtraced.wasm", + "textFile": "../out/assemblyscript.rtraced.wast", + "tsdFile": "../out/assemblyscript.d.ts", + "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 + }, + "optimized-bootstrap": { + "binaryFile": "../out/assemblyscript.optimized-bootstrap.wasm", + "textFile": "../out/assemblyscript.optimized-bootstrap.wast", + "tsdFile": "../out/assemblyscript.d.ts", + "optimizeLevel": 3, + "shrinkLevel": 0 + } + } +} \ No newline at end of file diff --git a/src/builtins.ts b/src/builtins.ts index a16a13de48..4547e2ffe3 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -605,10 +605,13 @@ export namespace BuiltinNames { export const v64x2_load_splat = "~lib/builtins/v64x2.load_splat"; // internals + export const data_end = "~lib/memory/__data_end"; + export const stack_pointer = "~lib/memory/__stack_pointer"; export const heap_base = "~lib/memory/__heap_base"; export const rtti_base = "~lib/rt/__rtti_base"; export const visit_globals = "~lib/rt/__visit_globals"; export const visit_members = "~lib/rt/__visit_members"; + export const tostack = "~lib/rt/__tostack"; // std/number.ts export const isNaN = "~lib/number/isNaN"; @@ -1191,10 +1194,10 @@ function builtin_rotl(ctx: BuiltinContext): ExpressionRef { let ret = module.binary(BinaryOp.OrI32, module.binary( BinaryOp.ShlI32, - module.local_tee(temp1.index, arg0), + module.local_tee(temp1.index, arg0, false), // i32 module.binary( BinaryOp.AndI32, - module.local_tee(temp2.index, arg1), + module.local_tee(temp2.index, arg1, false), // i32 module.i32(type.size - 1) ) ), @@ -1272,10 +1275,10 @@ function builtin_rotr(ctx: BuiltinContext): ExpressionRef { let ret = module.binary(BinaryOp.OrI32, module.binary( BinaryOp.ShrU32, - module.local_tee(temp1.index, arg0), + module.local_tee(temp1.index, arg0, false), // i32 module.binary( BinaryOp.AndI32, - module.local_tee(temp2.index, arg1), + module.local_tee(temp2.index, arg1, false), // i32 module.i32(type.size - 1) ) ), @@ -1351,9 +1354,10 @@ function builtin_abs(ctx: BuiltinContext): ExpressionRef { module.local_tee( temp2.index, module.binary(BinaryOp.ShrI32, - module.local_tee(temp1.index, arg0), + module.local_tee(temp1.index, arg0, false), // i32 module.i32(31) - ) + ), + false // i32 ), module.local_get(temp1.index, NativeType.I32) ), @@ -1375,9 +1379,10 @@ function builtin_abs(ctx: BuiltinContext): ExpressionRef { module.local_tee( temp2.index, module.binary(isWasm64 ? BinaryOp.ShrI64 : BinaryOp.ShrI32, - module.local_tee(temp1.index, arg0), + module.local_tee(temp1.index, arg0, false), // i32/i64 isWasm64 ? module.i64(63) : module.i32(31) - ) + ), + false // i32/i64 ), module.local_get(temp1.index, options.nativeSizeType) ), @@ -1398,9 +1403,10 @@ function builtin_abs(ctx: BuiltinContext): ExpressionRef { module.local_tee( temp2.index, module.binary(BinaryOp.ShrI64, - module.local_tee(temp1.index, arg0), + module.local_tee(temp1.index, arg0, false), // i64 module.i64(63) - ) + ), + false // i64 ), module.local_get(temp1.index, NativeType.I64) ), @@ -1487,8 +1493,8 @@ function builtin_max(ctx: BuiltinContext): ExpressionRef { let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); let ret = module.select( - module.local_tee(temp1.index, arg0), - module.local_tee(temp2.index, arg1), + module.local_tee(temp1.index, arg0, false), // numeric + module.local_tee(temp2.index, arg1, false), // numeric module.binary(op, module.local_get(temp1.index, nativeType), module.local_get(temp2.index, nativeType) @@ -1566,8 +1572,8 @@ function builtin_min(ctx: BuiltinContext): ExpressionRef { let temp2 = flow.getTempLocal(type); flow.setLocalFlag(temp2.index, LocalFlags.WRAPPED); let ret = module.select( - module.local_tee(temp1.index, arg0), - module.local_tee(temp2.index, arg1), + module.local_tee(temp1.index, arg0, false), // numeric + module.local_tee(temp2.index, arg1, false), // numeric module.binary(op, module.local_get(temp1.index, nativeType), module.local_get(temp2.index, nativeType) @@ -1906,7 +1912,7 @@ function builtin_isNaN(ctx: BuiltinContext): ExpressionRef { let flow = compiler.currentFlow; let temp = flow.getTempLocal(Type.f32); let ret = module.binary(BinaryOp.NeF32, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f32 module.local_get(temp.index, NativeType.F32) ); flow.freeTempLocal(temp); @@ -1922,7 +1928,7 @@ function builtin_isNaN(ctx: BuiltinContext): ExpressionRef { let flow = compiler.currentFlow; let temp = flow.getTempLocal(Type.f64); let ret = module.binary(BinaryOp.NeF64, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f64 module.local_get(temp.index, NativeType.F64) ); flow.freeTempLocal(temp); @@ -1986,7 +1992,7 @@ function builtin_isFinite(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(Type.f32); let ret = module.binary(BinaryOp.EqF32, module.binary(BinaryOp.SubF32, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f32 module.local_get(temp.index, NativeType.F32) ), module.f32(0) @@ -2008,7 +2014,7 @@ function builtin_isFinite(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(Type.f64); let ret = module.binary(BinaryOp.EqF64, module.binary(BinaryOp.SubF64, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f64 module.local_get(temp.index, NativeType.F64) ), module.f64(0) @@ -2841,9 +2847,7 @@ function builtin_memory_data(ctx: BuiltinContext): ExpressionRef { for (let i = 0; i < numElements; ++i) { let elementExpression = expressions[i]; if (elementExpression.kind != NodeKind.OMITTED) { - let expr = compiler.compileExpression(elementExpression, elementType, - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); + let expr = compiler.compileExpression(elementExpression, elementType, Constraints.CONV_IMPLICIT); let precomp = module.runExpression(expr, ExpressionRunnerFlags.PreserveSideeffects); if (precomp) { expr = precomp; @@ -3051,7 +3055,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(type); flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); // arg0 is wrapped let ret = module.if( - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // numeric module.local_get(temp.index, NativeType.I32), abort ); @@ -3063,7 +3067,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(Type.i64); let ret = module.if( module.unary(UnaryOp.EqzI64, - module.local_tee(temp.index, arg0) + module.local_tee(temp.index, arg0, false) // i64 ), abort, module.local_get(temp.index, NativeType.I64) @@ -3079,7 +3083,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { compiler.options.isWasm64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_tee(temp.index, arg0) + module.local_tee(temp.index, arg0, type.isManaged) ), abort, module.local_get(temp.index, compiler.options.nativeSizeType) @@ -3091,7 +3095,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(Type.f32); let ret = module.if( module.binary(BinaryOp.EqF32, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f32 module.f32(0) ), abort, @@ -3104,7 +3108,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(Type.f64); let ret = module.if( module.binary(BinaryOp.EqF64, - module.local_tee(temp.index, arg0), + module.local_tee(temp.index, arg0, false), // f64 module.f64(0) ), abort, @@ -3120,7 +3124,7 @@ function builtin_assert(ctx: BuiltinContext): ExpressionRef { let temp = flow.getTempLocal(type); let ret = module.if( module.ref_is_null( - module.local_tee(temp.index, arg0) + module.local_tee(temp.index, arg0, false) // ref ), abort, module.local_get(temp.index, NativeType.F64) @@ -8659,7 +8663,8 @@ export function compileVisitGlobals(compiler: Compiler): void { module.call(visitInstance.internalName, [ compiler.options.isWasm64 ? module.i64(i64_low(value), i64_high(value)) - : module.i32(i64_low(value)) + : module.i32(i64_low(value)), + module.local_get(0, NativeType.I32) // cookie ], NativeType.None) ); } @@ -8667,7 +8672,8 @@ export function compileVisitGlobals(compiler: Compiler): void { exprs.push( module.if( module.local_tee(1, - module.global_get(global.internalName, nativeSizeType) + module.global_get(global.internalName, nativeSizeType), + false // internal ), module.call(visitInstance.internalName, [ module.local_get(1, nativeSizeType), // tempRef != null @@ -8767,7 +8773,8 @@ function ensureVisitMembersOf(compiler: Compiler, instance: Class): void { module.load(nativeSizeSize, false, module.local_get(0, nativeSizeType), nativeSizeType, fieldOffset - ) + ), + false // internal ), module.call(visitInstance.internalName, [ module.local_get(2, nativeSizeType), // value @@ -8814,14 +8821,18 @@ export function compileVisitMembers(compiler: Compiler): void { assert(instanceId == nextId++); let instance = assert(managedClasses.get(instanceId)); names[i] = instance.internalName; - cases[i] = module.block(null, [ - module.call(instance.internalName + "~visit", [ - module.local_get(0, nativeSizeType), // this - module.local_get(1, NativeType.I32) // cookie - ], NativeType.None), - module.return() - ], NativeType.None); - ensureVisitMembersOf(compiler, instance); + if (instance.isPointerfree) { + cases[i] = module.return(); + } else { + cases[i] = module.block(null, [ + module.call(instance.internalName + "~visit", [ + module.local_get(0, nativeSizeType), // this + module.local_get(1, NativeType.I32) // cookie + ], NativeType.None), + module.return() + ], NativeType.None); + ensureVisitMembersOf(compiler, instance); + } } // Make a br_table of the mapping, calling visitor functions by unique class id @@ -8901,7 +8912,7 @@ export function compileRTTI(compiler: Compiler): void { let instance = assert(managedClasses.get(instanceId)); assert(instanceId == lastId++); let flags: TypeinfoFlags = 0; - if (instance.isAcyclic) flags |= TypeinfoFlags.ACYCLIC; + if (instance.isPointerfree) flags |= TypeinfoFlags.POINTERFREE; if (instance !== abvInstance && instance.extends(abvPrototype)) { let valueType = instance.getArrayValueType(); flags |= TypeinfoFlags.ARRAYBUFFERVIEW; diff --git a/src/common.ts b/src/common.ts index 301d1e2f47..9ca1591fb9 100644 --- a/src/common.ts +++ b/src/common.ts @@ -162,6 +162,7 @@ export namespace CommonNames { export const ASC_OPTIMIZE_LEVEL = "ASC_OPTIMIZE_LEVEL"; export const ASC_SHRINK_LEVEL = "ASC_SHRINK_LEVEL"; export const ASC_LOW_MEMORY_LIMIT = "ASC_LOW_MEMORY_LIMIT"; + export const ASC_EXPORT_RUNTIME = "ASC_EXPORT_RUNTIME"; export const ASC_WASI = "ASC_WASI"; export const ASC_FEATURE_SIGN_EXTENSION = "ASC_FEATURE_SIGN_EXTENSION"; export const ASC_FEATURE_MUTABLE_GLOBALS = "ASC_FEATURE_MUTABLE_GLOBALS"; @@ -231,8 +232,7 @@ export namespace CommonNames { export const free = "__free"; export const new_ = "__new"; export const renew = "__renew"; - export const retain = "__retain"; - export const release = "__release"; + export const link = "__link"; export const collect = "__collect"; export const typeinfo = "__typeinfo"; export const instanceof_ = "__instanceof"; diff --git a/src/compiler.ts b/src/compiler.ts index 8128400889..ebc98fb333 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -41,9 +41,6 @@ import { getBlockChildCount, getBlockChildAt, getBlockName, - getLocalGetIndex, - isLocalTee, - getLocalSetIndex, needsExplicitUnreachable, getLocalSetValue, getGlobalGetName, @@ -52,7 +49,8 @@ import { getSideEffects, SideEffects, SwitchBuilder, - ExpressionRunnerFlags + ExpressionRunnerFlags, + isConstZero } from "./module"; import { @@ -198,6 +196,14 @@ import { readI32 } from "./util"; +import { + RtraceMemory +} from "./passes/rtrace"; + +import { + ShadowStackPass +} from "./passes/shadowstack"; + /** Compiler options. */ export class Options { @@ -237,6 +243,10 @@ export class Options { pedantic: bool = false; /** Indicates a very low (<64k) memory limit. */ lowMemoryLimit: u32 = 0; + /** If true, exports the runtime helpers. */ + exportRuntime: bool = false; + /** Stack size in bytes, if using a stack. */ + stackSize: i32 = 0; /** Hinted optimize level. Not applied by the compiler itself. */ optimizeLevelHint: i32 = 0; @@ -287,27 +297,29 @@ export const enum Constraints { /** Indicates that the value will be dropped immediately. */ WILL_DROP = 1 << 3, - /** Indicates that the value will be retained immediately. */ - WILL_RETAIN = 1 << 4, /** Indicates that static data is preferred. */ - PREFER_STATIC = 1 << 5, + PREFER_STATIC = 1 << 4, /** Indicates that the value will become `this` of a property access or instance call. */ - IS_THIS = 1 << 6 + IS_THIS = 1 << 5 } /** Runtime features to be activated by the compiler. */ export const enum RuntimeFeatures { NONE = 0, + /** Requires data setup. */ + DATA = 1 << 0, + /** Requires a stack. */ + STACK = 1 << 1, /** Requires heap setup. */ - HEAP = 1 << 0, + HEAP = 1 << 2, /** Requires runtime type information setup. */ - RTTI = 1 << 1, + RTTI = 1 << 3, /** Requires the built-in globals visitor. */ - visitGlobals = 1 << 2, + visitGlobals = 1 << 4, /** Requires the built-in members visitor. */ - visitMembers = 1 << 3, + visitMembers = 1 << 5, /** Requires the setArgumentsLength export. */ - setArgumentsLength = 1 << 4 + setArgumentsLength = 1 << 6 } /** Exported names of compiler-generated elements. */ @@ -324,6 +336,11 @@ export namespace ExportNames { export const table = "table"; } +/** Functions to export if `--exportRuntime` is set. */ +const runtimeFunctions = [ "__new", "__pin", "__unpin", "__collect" ]; +/** Globals to export if `--exportRuntime` is set. */ +const runtimeGlobals = [ "__rtti_base" ]; + /** Compiler interface. */ export class Compiler extends DiagnosticEmitter { @@ -356,8 +373,6 @@ export class Compiler extends DiagnosticEmitter { builtinArgumentsLength: GlobalRef = 0; /** Requires runtime features. */ runtimeFeatures: RuntimeFeatures = RuntimeFeatures.NONE; - /** Expressions known to have skipped an autorelease. Usually function returns. */ - skippedAutoreleases: Set = new Set(); /** Current inline functions stack. */ inlineStack: Function[] = []; /** Lazily compiled functions. */ @@ -370,6 +385,8 @@ export class Compiler extends DiagnosticEmitter { pendingElements: Set = new Set(); /** Elements, that are module exports, already processed */ doneModuleExports: Set = new Set(); + /** Shadow stack reference. */ + shadowStack!: ShadowStackPass; /** Compiles a {@link Program} to a {@link Module} using the specified options. */ static compile(program: Program): Module { @@ -381,7 +398,7 @@ export class Compiler extends DiagnosticEmitter { super(program.diagnostics); this.program = program; var options = program.options; - var module = Module.create(); + var module = Module.create(options.stackSize > 0); this.module = module; if (options.memoryBase) { this.memoryOffset = i64_new(options.memoryBase); @@ -415,6 +432,7 @@ export class Compiler extends DiagnosticEmitter { startFunctionInstance.internalName = BuiltinNames.start; this.currentFlow = startFunctionInstance.flow; this.currentBody = new Array(); + this.shadowStack = new ShadowStackPass(this); } /** Performs compilation of the underlying {@link Program} to a {@link Module}. */ @@ -422,6 +440,7 @@ export class Compiler extends DiagnosticEmitter { var options = this.options; var module = this.module; var program = this.program; + var hasShadowStack = options.stackSize > 0; // implies runtime=incremental // initialize lookup maps, built-ins, imports, exports, etc. this.program.initialize(); @@ -432,11 +451,13 @@ export class Compiler extends DiagnosticEmitter { var startFunctionBody = this.currentBody; assert(startFunctionBody.length == 0); - // add mutable heap and rtti base dummies + // add mutable data, heap and rtti offset dummies if (options.isWasm64) { + module.addGlobal(BuiltinNames.data_end, NativeType.I64, true, module.i64(0)); module.addGlobal(BuiltinNames.heap_base, NativeType.I64, true, module.i64(0)); module.addGlobal(BuiltinNames.rtti_base, NativeType.I64, true, module.i64(0)); } else { + module.addGlobal(BuiltinNames.data_end, NativeType.I32, true, module.i32(0)); module.addGlobal(BuiltinNames.heap_base, NativeType.I32, true, module.i32(0)); module.addGlobal(BuiltinNames.rtti_base, NativeType.I32, true, module.i32(0)); } @@ -452,21 +473,29 @@ export class Compiler extends DiagnosticEmitter { } } - // check if the entire program is acyclic - var cyclicClasses = program.findCyclicClasses(); - if (cyclicClasses.size) { - if (options.pedantic) { - // TODO: for (let classInstance of cyclicClasses) { - for (let _values = Set_values(cyclicClasses), i = 0, k = _values.length; i < k; ++i) { - let classInstance = unchecked(_values[i]); - this.pedantic( - DiagnosticCode.Type_0_is_cyclic_Module_will_include_deferred_garbage_collection, - classInstance.identifierNode.range, classInstance.internalName - ); + // 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) { + let name = runtimeFunctions[i]; + let instance = program.requireFunction(name); + if (this.compileFunction(instance) && !module.hasExport(name)) { + module.addFunctionExport(instance.internalName, name); + } + } + for (let i = 0, k = runtimeGlobals.length; i < k; ++i) { + let name = runtimeGlobals[i]; + let instance = program.requireGlobal(name); + if (this.compileGlobal(instance) && !module.hasExport(name)) { + module.addGlobalExport(instance.internalName, name); } } - } else { - program.registerConstantInteger("__GC_ALL_ACYCLIC", Type.bool, i64_new(1, 0)); } // compile lazy functions @@ -491,37 +520,6 @@ export class Compiler extends DiagnosticEmitter { compileClassInstanceOf(this, prototype); } - // NOTE: no more element compiles from here. may go to the start function! - - // compile the start function if not empty or if explicitly requested - var startIsEmpty = !startFunctionBody.length; - var explicitStart = program.isWasi || options.explicitStart; - if (!startIsEmpty || explicitStart) { - let signature = startFunctionInstance.signature; - if (!startIsEmpty && explicitStart) { - module.addGlobal(BuiltinNames.started, NativeType.I32, true, module.i32(0)); - startFunctionBody.unshift( - module.global_set(BuiltinNames.started, module.i32(1)) - ); - startFunctionBody.unshift( - module.if( - module.global_get(BuiltinNames.started, NativeType.I32), - module.return() - ) - ); - } - let funcRef = module.addFunction( - startFunctionInstance.internalName, - signature.nativeParams, - signature.nativeResults, - typesToNativeTypes(startFunctionInstance.additionalLocals), - module.flatten(startFunctionBody) - ); - startFunctionInstance.finalize(module, funcRef); - if (!explicitStart) module.setStart(funcRef); - else module.addFunctionExport(startFunctionInstance.internalName, ExportNames.start); - } - // set up virtual lookup tables var functionTable = this.functionTable; for (let i = 0, k = functionTable.length; i < k; ++i) { @@ -550,39 +548,68 @@ export class Compiler extends DiagnosticEmitter { if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this); if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); - // update the heap base pointer - var memoryOffset = this.memoryOffset; - memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize); - var lowMemoryLimit32 = this.options.lowMemoryLimit; - if (lowMemoryLimit32) { - let lowMemoryLimit = i64_new(lowMemoryLimit32 & ~15); - if (i64_gt(memoryOffset, lowMemoryLimit)) { - this.error( - DiagnosticCode.Low_memory_limit_exceeded_by_static_data_0_1, - null, i64_to_string(memoryOffset), i64_to_string(lowMemoryLimit) + var memoryOffset = i64_align(this.memoryOffset, options.usizeType.byteSize); + + // finalize data + module.removeGlobal(BuiltinNames.data_end); + if ((this.runtimeFeatures & RuntimeFeatures.DATA) != 0 || hasShadowStack) { + if (options.isWasm64) { + module.addGlobal(BuiltinNames.data_end, NativeType.I64, false, + module.i64(i64_low(memoryOffset), i64_high(memoryOffset)) + ); + } else { + module.addGlobal(BuiltinNames.data_end, NativeType.I32, false, + module.i32(i64_low(memoryOffset)) ); } } - this.memoryOffset = memoryOffset; + + // finalize stack (grows down from __heap_base to __data_end) + module.removeGlobal(BuiltinNames.stack_pointer); + if ((this.runtimeFeatures & RuntimeFeatures.STACK) != 0 || hasShadowStack) { + memoryOffset = i64_align( + i64_add(memoryOffset, i64_new(options.stackSize)), + options.usizeType.byteSize + ); + if (options.isWasm64) { + module.addGlobal(BuiltinNames.stack_pointer, NativeType.I64, true, + module.i64(i64_low(memoryOffset), i64_high(memoryOffset)) + ); + } else { + module.addGlobal(BuiltinNames.stack_pointer, NativeType.I32, true, + module.i32(i64_low(memoryOffset)) + ); + } + } + + // finalize heap module.removeGlobal(BuiltinNames.heap_base); - if (this.runtimeFeatures & RuntimeFeatures.HEAP) { + if ((this.runtimeFeatures & RuntimeFeatures.HEAP) != 0 || hasShadowStack) { if (options.isWasm64) { - module.addGlobal( - BuiltinNames.heap_base, - NativeType.I64, - false, + module.addGlobal(BuiltinNames.heap_base, NativeType.I64, false, module.i64(i64_low(memoryOffset), i64_high(memoryOffset)) ); } else { - module.addGlobal( - BuiltinNames.heap_base, - NativeType.I32, - false, + module.addGlobal(BuiltinNames.heap_base, NativeType.I32, false, module.i32(i64_low(memoryOffset)) ); } } + this.memoryOffset = memoryOffset; + + // check that we didn't exceed lowMemoryLimit already + var lowMemoryLimit32 = this.options.lowMemoryLimit; + if (lowMemoryLimit32) { + let lowMemoryLimit = i64_new(lowMemoryLimit32 & ~15); + if (i64_gt(memoryOffset, lowMemoryLimit)) { + this.error( + DiagnosticCode.Low_memory_limit_exceeded_by_static_data_0_1, + null, i64_to_string(memoryOffset), i64_to_string(lowMemoryLimit) + ); + } + } + // set up memory var initialPages: u32 = 0; if (this.options.memoryBase /* is specified */ || this.memorySegments.length) { @@ -670,13 +697,6 @@ export class Compiler extends DiagnosticEmitter { } } - // 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); - } - // expose the arguments length helper if there are varargs exports if (this.runtimeFeatures & RuntimeFeatures.setArgumentsLength) { module.addFunction(BuiltinNames.setArgumentsLength, NativeType.I32, NativeType.None, null, @@ -684,6 +704,46 @@ export class Compiler extends DiagnosticEmitter { ); module.addFunctionExport(BuiltinNames.setArgumentsLength, ExportNames.setArgumentsLength); } + + // NOTE: no more element compiles from here. may go to the start function! + + // compile the start function if not empty or if explicitly requested + var startIsEmpty = !startFunctionBody.length; + var explicitStart = program.isWasi || options.explicitStart; + if (!startIsEmpty || explicitStart) { + let signature = startFunctionInstance.signature; + if (!startIsEmpty && explicitStart) { + module.addGlobal(BuiltinNames.started, NativeType.I32, true, module.i32(0)); + startFunctionBody.unshift( + module.global_set(BuiltinNames.started, module.i32(1)) + ); + startFunctionBody.unshift( + module.if( + module.global_get(BuiltinNames.started, NativeType.I32), + module.return() + ) + ); + } + let funcRef = module.addFunction( + startFunctionInstance.internalName, + signature.nativeParams, + signature.nativeResults, + typesToNativeTypes(startFunctionInstance.additionalLocals), + module.flatten(startFunctionBody) + ); + startFunctionInstance.finalize(module, funcRef); + if (!explicitStart) module.setStart(funcRef); + else module.addFunctionExport(startFunctionInstance.internalName, ExportNames.start); + } + + // Run custom passes + if (hasShadowStack) { + this.shadowStack.walkModule(); + } + if (program.lookup("ASC_RTRACE") != null) { + new RtraceMemory(this).walkModule(); + } + return module; } @@ -710,6 +770,7 @@ export class Compiler extends DiagnosticEmitter { /** Applies the respective module export(s) for the specified element. */ private ensureModuleExport(name: string, element: Element, prefix: string = ""): void { + var module = this.module; switch (element.kind) { // traverse instances @@ -772,8 +833,11 @@ export class Compiler extends DiagnosticEmitter { DiagnosticCode.Cannot_export_a_mutable_global, global.identifierNode.range ); - } else { - if (element.is(CommonFlags.COMPILED)) this.module.addGlobalExport(element.internalName, prefix + name); + } else if (global.is(CommonFlags.COMPILED)) { + let exportName = prefix + name; + if (!module.hasExport(exportName)) { + module.addGlobalExport(element.internalName, exportName); + } } break; } @@ -784,8 +848,11 @@ export class Compiler extends DiagnosticEmitter { DiagnosticCode.Cannot_export_a_mutable_global, enumValue.identifierNode.range ); - } else { - this.module.addGlobalExport(element.internalName, prefix + name); + } else if (enumValue.is(CommonFlags.COMPILED)) { + let exportName = prefix + name; + if (!module.hasExport(exportName)) { + module.addGlobalExport(element.internalName, exportName); + } } break; } @@ -799,7 +866,15 @@ export class Compiler extends DiagnosticEmitter { this.ensureArgumentsLength(); this.runtimeFeatures |= RuntimeFeatures.setArgumentsLength; } - if (functionInstance.is(CommonFlags.COMPILED)) this.module.addFunctionExport(functionInstance.internalName, prefix + name); + if (functionInstance.is(CommonFlags.COMPILED)) { + let exportName = prefix + name; + if (!module.hasExport(exportName)) { + module.addFunctionExport(functionInstance.internalName, exportName); + if (signature.hasManagedOperands) { + this.shadowStack.noteExport(exportName, signature.getManagedOperandIndices()); + } + } + } } break; } @@ -814,10 +889,23 @@ export class Compiler extends DiagnosticEmitter { case ElementKind.FIELD: { let fieldInstance = element; if (element.is(CommonFlags.COMPILED)) { - let module = this.module; - module.addFunctionExport(fieldInstance.internalGetterName, prefix + GETTER_PREFIX + name); + let getterExportName = prefix + GETTER_PREFIX + name; + if (!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)) { - module.addFunctionExport(fieldInstance.internalSetterName, prefix + SETTER_PREFIX + name); + let setterExportName = prefix + SETTER_PREFIX + name; + if (!module.hasExport(setterExportName)) { + module.addFunctionExport(fieldInstance.internalSetterName, setterExportName); + let signature = fieldInstance.internalSetterSignature; + if (signature.hasManagedOperands) { + this.shadowStack.noteExport(setterExportName, signature.getManagedOperandIndices()); + } + } } } break; @@ -989,7 +1077,6 @@ export class Compiler extends DiagnosticEmitter { for (let statements = file.source.statements, i = 0, k = statements.length; i < k; ++i) { this.compileTopLevelStatement(statements[i], startFunctionBody); } - this.finishAutoreleases(flow, startFunctionBody); // no need to insert unreachable since last statement should have done that this.currentFlow = previousFlow; this.currentBody = previousBody; @@ -1058,7 +1145,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = global.file.startFunction.flow; } initExpr = this.compileExpression(initializerNode, Type.auto, // reports - Constraints.MUST_WRAP | Constraints.WILL_RETAIN | Constraints.PREFER_STATIC + Constraints.MUST_WRAP | Constraints.PREFER_STATIC ); this.currentFlow = previousFlow; if (this.currentType == Type.void) { @@ -1086,8 +1173,11 @@ export class Compiler extends DiagnosticEmitter { // Handle ambient builtins like '__heap_base' that need to be resolved but are added explicitly if (global.is(CommonFlags.AMBIENT) && global.hasDecorator(DecoratorFlags.BUILTIN)) { - if (global.internalName == BuiltinNames.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP; - else if (global.internalName == BuiltinNames.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI; + let internalName = global.internalName; + if (internalName == BuiltinNames.data_end) this.runtimeFeatures |= RuntimeFeatures.DATA; + else if (internalName == BuiltinNames.stack_pointer) this.runtimeFeatures |= RuntimeFeatures.STACK; + else if (internalName == BuiltinNames.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP; + else if (internalName == BuiltinNames.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI; pendingElements.delete(global); return true; } @@ -1137,7 +1227,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = global.file.startFunction.flow; } initExpr = this.compileExpression(initializerNode, type, - Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP | Constraints.WILL_RETAIN | Constraints.PREFER_STATIC + Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP | Constraints.PREFER_STATIC ); this.currentFlow = previousFlow; } @@ -1153,7 +1243,6 @@ export class Compiler extends DiagnosticEmitter { initializeInStart = true; } } - if (this.skippedAutoreleases.has(initExpr)) this.skippedAutoreleases.add(initExpr); } else { initializeInStart = true; } @@ -1219,7 +1308,7 @@ export class Compiler extends DiagnosticEmitter { // Initialize to zero if there's no initializer } else { if (global.is(CommonFlags.INLINED)) { - initExpr = this.compileInlineConstant(global, global.type, Constraints.PREFER_STATIC | Constraints.WILL_RETAIN); + initExpr = this.compileInlineConstant(global, global.type, Constraints.PREFER_STATIC); } else { initExpr = this.makeZero(type, global.declaration); } @@ -1235,7 +1324,6 @@ export class Compiler extends DiagnosticEmitter { ); } module.addGlobal(internalName, nativeType, true, this.makeZero(type, global.declaration)); - if (type.isManaged && !this.skippedAutoreleases.has(initExpr)) initExpr = this.makeRetain(initExpr, type); this.currentBody.push( module.global_set(internalName, initExpr) ); @@ -1280,7 +1368,7 @@ export class Compiler extends DiagnosticEmitter { let initExpr: ExpressionRef; if (valueNode) { initExpr = this.compileExpression(valueNode, Type.i32, - Constraints.CONV_IMPLICIT // autorelease is not applicable in i32 context + Constraints.CONV_IMPLICIT ); if (getExpressionId(initExpr) != ExpressionId.Const) { let precomp = module.runExpression(initExpr, ExpressionRunnerFlags.PreserveSideeffects); @@ -1415,45 +1503,10 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = flow; let stmts = new Array(); - // retain each argument for as long as the function lives - let index = 0; - let thisType = signature.thisType; - if (thisType) { - // In normal instance functions, `this` is effectively a constant - // retained elsewhere so does not need to be retained. - if (instance.is(CommonFlags.CONSTRUCTOR)) { - // Constructors, however, can allocate their own memory, and as such - // must refcount the allocation in case something else is `return`ed. - flow.setLocalFlag(index, LocalFlags.RETAINED); - } - ++index; - } - let parameterTypes = signature.parameterTypes; - for (let i = 0, k = parameterTypes.length; i < k; ++i, ++index) { - let type = parameterTypes[i]; - if (type.isManaged) { - stmts.push( - module.local_set(index, - this.makeRetain( - module.local_get(index, type.toNativeType()), - type - ) - ) - ); - flow.setLocalFlag(index, LocalFlags.RETAINED); - } - } - - let body: ExpressionRef; - if (this.compileFunctionBody(instance, stmts)) { - if (!flow.is(FlowFlags.TERMINATES)) { - this.performAutoreleases(flow, stmts); - this.finishAutoreleases(flow, stmts); - } - body = module.flatten(stmts, instance.signature.returnType.toNativeType()); - } else { - body = module.unreachable(); + if (!this.compileFunctionBody(instance, stmts)) { + stmts.push(module.unreachable()); } + this.currentFlow = previousFlow; // create the function @@ -1462,7 +1515,7 @@ export class Compiler extends DiagnosticEmitter { signature.nativeParams, signature.nativeResults, typesToNativeTypes(instance.additionalLocals), - body + module.flatten(stmts, instance.signature.returnType.toNativeType()) ); // imported function @@ -1516,6 +1569,7 @@ export class Compiler extends DiagnosticEmitter { var thisLocal = instance.signature.thisType ? assert(flow.lookupLocal(CommonNames.this_)) : null; + var bodyStartIndex = stmts.length; // compile statements if (bodyNode.kind == NodeKind.BLOCK) { @@ -1530,28 +1584,16 @@ export class Compiler extends DiagnosticEmitter { // none of the following can be an arrow function assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET)); - // take special care of properly retaining the returned value - let expr = this.compileReturnedExpression((bodyNode).expression, returnType, Constraints.CONV_IMPLICIT); + let expr = this.compileExpression((bodyNode).expression, returnType, Constraints.CONV_IMPLICIT); + if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); + if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); if (!stmts) stmts = [ expr ]; else stmts.push(expr); if (!flow.is(FlowFlags.TERMINATES)) { - let indexBefore = stmts.length; - this.performAutoreleases(flow, stmts); - this.finishAutoreleases(flow, stmts); - let canOverflow = flow.canOverflow(expr, returnType); - let nonNull = flow.isNonnull(expr, returnType); - if (stmts.length > indexBefore) { - let temp = flow.getTempLocal(returnType); - if (!canOverflow) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); - if (nonNull) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - stmts[indexBefore - 1] = module.local_set(temp.index, expr); - stmts.push(module.local_get(temp.index, returnType.toNativeType())); - flow.freeTempLocal(temp); - } - if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED); - if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL); + if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); + if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); } } @@ -1559,7 +1601,6 @@ export class Compiler extends DiagnosticEmitter { // Make constructors return their instance pointer, and prepend a conditional // allocation if any code path accesses `this`. if (instance.is(CommonFlags.CONSTRUCTOR)) { - let nativeSizeType = this.options.nativeSizeType; assert(instance.is(CommonFlags.INSTANCE)); thisLocal = assert(thisLocal); let parent = assert(instance.parent); @@ -1567,33 +1608,19 @@ export class Compiler extends DiagnosticEmitter { let classInstance = parent; if (flow.isAny(FlowFlags.ACCESSES_THIS | FlowFlags.CONDITIONALLY_ACCESSES_THIS) || !flow.is(FlowFlags.TERMINATES)) { + // Allocate `this` if not a super call, and initialize fields let allocStmts = new Array(); allocStmts.push( - module.if( - module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_get(thisLocal.index, nativeSizeType) - ), - module.local_set(thisLocal.index, - this.makeRetain( - this.makeAllocation(classInstance), - classInstance.type - ) - ) - ) + this.makeConditionalAllocation(classInstance, thisLocal.index) ); this.makeFieldInitializationInConstructor(classInstance, allocStmts); - if (flow.isInline) { - let firstStmt = stmts[0]; // `this` alias assignment - assert(getExpressionId(firstStmt) == ExpressionId.LocalSet); - assert(getLocalSetIndex(firstStmt) == thisLocal.index); - allocStmts.unshift(firstStmt); - stmts[0] = module.flatten(allocStmts, NativeType.None); - } else { - stmts.unshift( - module.flatten(allocStmts, NativeType.None) - ); + + // Insert right before the body + for (let i = stmts.length - 1; i >= bodyStartIndex; --i) { + stmts[i + 1] = stmts[i]; } + stmts[bodyStartIndex] = module.flatten(allocStmts, NativeType.None); // Just prepended allocation is dropped when returning non-'this' if (flow.is(FlowFlags.MAY_RETURN_NONTHIS)) { @@ -1616,11 +1643,9 @@ export class Compiler extends DiagnosticEmitter { // Implicitly return `this` if the flow falls through if (!flow.is(FlowFlags.TERMINATES)) { - assert(flow.isAnyLocalFlag(thisLocal.index, LocalFlags.ANY_RETAINED)); - flow.unsetLocalFlag(thisLocal.index, LocalFlags.ANY_RETAINED); // undo - this.performAutoreleases(flow, stmts); - this.finishAutoreleases(flow, stmts); - stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType)); + stmts.push( + module.local_get(thisLocal.index, this.options.nativeSizeType) + ); flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES); } @@ -1734,18 +1759,18 @@ export class Compiler extends DiagnosticEmitter { /** Compiles the getter of the specified instance field. */ compileFieldGetter(instance: Field): bool { - // A getter retains, while a load, as of a field access, does not. if (instance.getterRef) return true; - var type = instance.type; - var nativeThisType = this.options.nativeSizeType; - var nativeValueType = type.toNativeType(); var module = this.module; - var valueExpr = module.load(type.byteSize, type.isSignedIntegerValue, - module.local_get(0, nativeThisType), - nativeValueType, instance.memoryOffset + var valueType = instance.type; + var nativeValueType = valueType.toNativeType(); + var nativeThisType = this.options.nativeSizeType; + // return this.field + instance.getterRef = module.addFunction(instance.internalGetterName, nativeThisType, nativeValueType, null, + module.load(valueType.byteSize, valueType.isSignedIntegerValue, + module.local_get(0, nativeThisType), + nativeValueType, instance.memoryOffset + ) ); - if (type.isManaged) valueExpr = this.makeRetain(valueExpr, type); - instance.getterRef = module.addFunction(instance.internalGetterName, nativeThisType, nativeValueType, null, valueExpr); if (instance.setterRef) { instance.set(CommonFlags.COMPILED); } else { @@ -1762,42 +1787,30 @@ export class Compiler extends DiagnosticEmitter { var nativeThisType = this.options.nativeSizeType; var nativeValueType = type.toNativeType(); var module = this.module; - var valueExpr: ExpressionRef; - var varTypes: NativeType[] | null = null; + // void(this.field = value) + var bodyExpr = module.store(type.byteSize, + module.local_get(0, nativeThisType), + module.local_get(1, nativeValueType), + nativeValueType, instance.memoryOffset + ); if (type.isManaged) { - // Can't use makeReplace here since there's no corresponding flow, so - // 0: this, 1: value, 2: oldValue (temp) - valueExpr = module.block(null, [ - module.if( - module.binary(nativeValueType == NativeType.I64 ? BinaryOp.NeI64 : BinaryOp.NeI32, - // value != (oldValue = this.field) + let parent = instance.parent; + assert(parent.kind == ElementKind.CLASS); + if ((parent).type.isManaged) { + let linkInstance = this.program.linkInstance; + this.compileFunction(linkInstance); + bodyExpr = module.block(null, [ + bodyExpr, + module.call(linkInstance.internalName, [ + module.local_get(0, nativeThisType), module.local_get(1, nativeValueType), - module.local_tee(2, - module.load(type.byteSize, false, - module.local_get(0, nativeThisType), - nativeValueType, instance.memoryOffset - ) - ) - ), - module.block(null, [ - module.drop( - this.makeRetain(module.local_get(1, nativeValueType), type) - ), - this.makeRelease(module.local_get(2, nativeValueType), type) - ]) - ), - module.local_get(1, nativeValueType) - ], nativeValueType); - varTypes = [ nativeValueType ]; - } else { - valueExpr = module.local_get(1, nativeValueType); + module.i32(0) + ], NativeType.None) + ], NativeType.None); + } } - instance.setterRef = module.addFunction(instance.internalSetterName, createType([ nativeThisType, nativeValueType ]), NativeType.None, varTypes, - module.store(type.byteSize, - module.local_get(0, nativeThisType), - valueExpr, - nativeValueType, instance.memoryOffset - ) + instance.setterRef = module.addFunction(instance.internalSetterName, createType([ nativeThisType, nativeValueType ]), NativeType.None, null, + bodyExpr ); if (instance.getterRef) { instance.set(CommonFlags.COMPILED); @@ -1987,7 +2000,6 @@ export class Compiler extends DiagnosticEmitter { var bufferLength = readI32(bufferSegment.buffer, program.OBJECTInstance.offsetof("rtSize")); var arrayLength = i32(bufferLength / elementType.byteSize); var bufferAddress = i64_add(bufferSegment.offset, i64_new(program.totalOverhead)); - var buf = arrayInstance.createBuffer(); assert(arrayInstance.writeField("buffer", bufferAddress, buf)); assert(arrayInstance.writeField("dataStart", bufferAddress, buf)); @@ -2248,7 +2260,6 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = innerFlow; var stmts = this.compileStatements(statements); - if (!innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(innerFlow, stmts); innerFlow.freeScopedLocals(); outerFlow.inherit(innerFlow); this.currentFlow = outerFlow; @@ -2277,17 +2288,9 @@ export class Compiler extends DiagnosticEmitter { ); return module.unreachable(); } - var stmts = new Array(); - this.performAutoreleases(flow, stmts); - var parent = flow.parent; - while (parent !== null && parent.breakLabel == breakLabel) { - this.performAutoreleases(parent, stmts, /* finalize */ false); - parent = parent.parent; - } flow.freeScopedLocals(); - stmts.push(module.br(breakLabel)); flow.set(FlowFlags.BREAKS); - return module.flatten(stmts); + return module.br(breakLabel); } private compileContinueStatement( @@ -2314,16 +2317,8 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } flow.set(FlowFlags.CONTINUES | FlowFlags.TERMINATES); - var stmts = new Array(); - this.performAutoreleases(flow, stmts); - var current: Flow | null = flow.parent; - while (current !== null && current.continueLabel === continueLabel) { - this.performAutoreleases(current, stmts, /* finalize */ false); - current = current.parent; - } flow.freeScopedLocals(); - stmts.push(module.br(continueLabel)); - return module.flatten(stmts); + return module.br(continueLabel); } private compileDoStatement( @@ -2345,10 +2340,10 @@ export class Compiler extends DiagnosticEmitter { // (block $break └►┐ flow // (loop $continue ├◄───────────┐ recompile? // (body) └─┐ bodyFlow │ - // [autorelease] ┌─┘ │ + // ┌─┘ │ // ┌◄┼►╢ │ breaks or terminates? // (local.set $tcond (condition)) │ └─┐ condFlow │ - // [autorelease] │ ┌─┘ │ + // │ ┌─┘ │ // (br_if (local.get $tcond) $continue) ├◄┴────────────┘ condition? // ) └─┐ // ) ┌─┘ @@ -2384,8 +2379,6 @@ export class Compiler extends DiagnosticEmitter { // Otherwise evaluate the condition } else { - this.performAutoreleases(bodyFlow, bodyStmts); - let condFlow = flow.fork(); this.currentFlow = condFlow; let condExpr = this.makeIsTrueish( @@ -2400,7 +2393,6 @@ export class Compiler extends DiagnosticEmitter { bodyStmts.push( module.drop(condExpr) ); - this.performAutoreleases(condFlow, bodyStmts); flow.inherit(bodyFlow); // Terminate if condition is always true and body never breaks @@ -2408,7 +2400,6 @@ export class Compiler extends DiagnosticEmitter { bodyStmts.push( module.drop(condExpr) ); - this.performAutoreleases(condFlow, bodyStmts); bodyStmts.push( module.br(continueLabel) ); @@ -2417,9 +2408,8 @@ export class Compiler extends DiagnosticEmitter { } else { let tcond = condFlow.getTempLocal(Type.bool); bodyStmts.push( - module.local_set(tcond.index, condExpr) + module.local_set(tcond.index, condExpr, false) // bool ); - this.performAutoreleases(condFlow, bodyStmts); bodyStmts.push( module.br(continueLabel, module.local_get(tcond.index, NativeType.I32) @@ -2487,20 +2477,20 @@ export class Compiler extends DiagnosticEmitter { // (block $break │ // (loop $loop ├◄───────────┐ recompile? // (local.set $tcond (condition)) └─┐ condFlow │ - // [autorelease] ┌─┘ │ + // ┌─┘ │ // (if (local.get $tcond) ┌◄┤ │ condition? // (block $continue │ │ │ // (body) │ └─┐ bodyFlow │ - // [autorelease] │ ┌─┘ │ + // │ ┌─┘ │ // ) ├◄┼►╢ │ breaks or terminates? // (incrementor) │ └─┐ incrFlow │ - // [autorelease] │ ┌─┘ │ + // │ ┌─┘ │ // │ └────────────┘ // (br $loop) └─┐ // ) │ // ) │ // ) │ - // [autorelease] ┌─┘ + // ┌─┘ var label = outerFlow.pushBreakLabel(); var stmts = new Array(); @@ -2513,7 +2503,7 @@ export class Compiler extends DiagnosticEmitter { flow.continueLabel = continueLabel; var loopLabel = "for-loop|" + label; - // Compile initializer if present (but wait with autoreleases) + // Compile initializer if present var initializer = statement.initializer; if (initializer) { assert( @@ -2545,10 +2535,8 @@ export class Compiler extends DiagnosticEmitter { stmts.push( module.drop(condExpr) ); - this.performAutoreleases(condFlow, stmts); condFlow.freeScopedLocals(); flow.inherit(condFlow); - this.performAutoreleases(flow, stmts); flow.freeScopedLocals(); outerFlow.inherit(flow); outerFlow.popBreakLabel(); @@ -2562,13 +2550,12 @@ export class Compiler extends DiagnosticEmitter { // From here on condition is either always true or unknown - // Store condition result in a temp while we autorelease + // Store condition result in a temp var tcond = flow.getTempLocal(Type.bool); var loopStmts = new Array(); loopStmts.push( - module.local_set(tcond.index, condExpr) + module.local_set(tcond.index, condExpr, false) // bool ); - this.performAutoreleases(condFlow, loopStmts); condFlow.freeScopedLocals(); flow.inherit(condFlow); // always executes @@ -2589,8 +2576,6 @@ export class Compiler extends DiagnosticEmitter { // Check if body terminates if (bodyFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { bodyStmts.push(module.unreachable()); - } else { - this.performAutoreleases(bodyFlow, bodyStmts); } if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); else flow.inheritBranch(bodyFlow); @@ -2611,7 +2596,6 @@ export class Compiler extends DiagnosticEmitter { ifStmts.push( this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP) ); - this.performAutoreleases(incrFlow, ifStmts); incrFlow.freeScopedLocals(); flow.inherit(incrFlow); // mostly local flags, also covers late termination by throwing this.currentFlow = flow; @@ -2654,8 +2638,6 @@ export class Compiler extends DiagnosticEmitter { outerFlow.popBreakLabel(); if (outerFlow.is(FlowFlags.TERMINATES)) { stmts.push(module.unreachable()); - } else { - this.performAutoreleases(flow, stmts); } this.currentFlow = outerFlow; return module.flatten(stmts); @@ -2683,15 +2665,14 @@ export class Compiler extends DiagnosticEmitter { // (condition) ┌┴───────────┐ condition? // (block │ │ // (ifTrue) └►┐ thenFlow │ - // [autorelease] ┌─┘ │ + // ┌─┘ │ // ) ├─╢ │ // (block │ ┌◄┤ present? // (ifFalse) │ │ └►┐ elseFlow - // [autorelease] │ │ ┌─┘ + // │ │ ┌─┘ // ) │ │ ├─╢ // ) └┬─────────┴─┘ // ... ┌◄┘ - // [autorelease] incl. condition // Precompute the condition (always executes) var condExpr = this.makeIsTrueish( @@ -2736,8 +2717,6 @@ export class Compiler extends DiagnosticEmitter { var thenTerminates = thenFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS); if (thenTerminates) { thenStmts.push(module.unreachable()); - } else { - this.performAutoreleases(thenFlow, thenStmts); } thenFlow.freeScopedLocals(); this.currentFlow = flow; @@ -2756,8 +2735,6 @@ export class Compiler extends DiagnosticEmitter { let elseTerminates = elseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS); if (elseTerminates) { elseStmts.push(module.unreachable()); - } else { - this.performAutoreleases(elseFlow, elseStmts); } elseFlow.freeScopedLocals(); this.currentFlow = flow; @@ -2801,8 +2778,9 @@ export class Compiler extends DiagnosticEmitter { let constraints = Constraints.CONV_IMPLICIT; if (flow.actualFunction.is(CommonFlags.MODULE_EXPORT)) constraints |= Constraints.MUST_WRAP; - // take special care of properly retaining the returned value - expr = this.compileReturnedExpression(valueExpression, returnType, constraints); + expr = this.compileExpression(valueExpression, returnType, constraints); + if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); + if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); if (flow.actualFunction.is(CommonFlags.CONSTRUCTOR) && valueExpression.kind != NodeKind.THIS) { flow.set(FlowFlags.MAY_RETURN_NONTHIS); } @@ -2811,46 +2789,25 @@ export class Compiler extends DiagnosticEmitter { DiagnosticCode.Type_0_is_not_assignable_to_type_1, statement.range, "void", returnType.toString() ); - expr = module.unreachable(); - } - - var stmts = new Array(); - this.performAutoreleases(flow, stmts); - this.finishAutoreleases(flow, stmts); - - if (returnType != Type.void && stmts.length > 0) { - let temp = flow.getTempLocal(returnType); - if (flow.isNonnull(expr, returnType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - stmts.unshift( - module.local_set(temp.index, expr) - ); - expr = module.local_get(temp.index, returnType.toNativeType()); - flow.freeTempLocal(temp); + this.currentType = returnType; + return module.unreachable(); } flow.freeScopedLocals(); // Remember that this flow returns flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); - // If the last statement anyway, make it the block's return value - if (isLastInBody && expr != 0 && returnType != Type.void) { - if (!stmts.length) return expr; - stmts.push(expr); - return module.flatten(stmts, returnType.toNativeType()); - } - - // When inlining, break to the end of the inlined function's block (no need to wrap) + // Handle inline return if (flow.isInline) { - if (!stmts.length) return module.br(assert(flow.inlineReturnLabel), 0, expr); - stmts.push(module.br(assert(flow.inlineReturnLabel), 0, expr)); - // stmts.push(module.createUnreachable()); - return module.flatten(stmts); + return isLastInBody && expr != 0 + ? expr + : module.br(assert(flow.inlineReturnLabel), 0, expr); } // Otherwise emit a normal return - if (!stmts.length) return module.return(expr); - stmts.push(module.return(expr)); - return module.flatten(stmts); + return isLastInBody && expr != 0 + ? expr + : module.return(expr); } private compileSwitchStatement( @@ -2880,7 +2837,8 @@ export class Compiler extends DiagnosticEmitter { tempLocalIndex, this.compileExpression(statement.condition, Type.u32, Constraints.CONV_IMPLICIT - ) + ), + false // u32 ); // make one br_if per (possibly dynamic) labeled case (binaryen optimizes to br_table where possible) @@ -2949,7 +2907,6 @@ export class Compiler extends DiagnosticEmitter { commonConditional |= innerFlow.flags & FlowFlags.ANY_CONDITIONAL; // Switch back to the parent flow - if (!terminates) this.performAutoreleases(innerFlow, stmts); innerFlow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS @@ -2986,12 +2943,7 @@ export class Compiler extends DiagnosticEmitter { stmts.push( this.makeAbort(message, statement) ); - // generates dead code (after unreachable) but still updates state - var dropped = new Array(); - this.performAutoreleases(flow, dropped); - this.finishAutoreleases(flow, dropped); flow.freeScopedLocals(); - return this.module.flatten(stmts); } @@ -3024,7 +2976,6 @@ export class Compiler extends DiagnosticEmitter { let name = declaration.name.text; let type: Type | null = null; let initExpr: ExpressionRef = 0; - let initAutoreleaseSkipped = false; // Resolve type if annotated let typeNode = declaration.type; @@ -3043,9 +2994,8 @@ export class Compiler extends DiagnosticEmitter { let dummy = flow.addScopedDummyLocal(name, type); // pending dummy pendingElements.add(dummy); initExpr = this.compileExpression(initializerNode, type, // reports - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN + Constraints.CONV_IMPLICIT ); - initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr); pendingElements.delete(dummy); flow.freeScopedDummyLocal(name); } @@ -3055,10 +3005,7 @@ export class Compiler extends DiagnosticEmitter { let pendingElements = this.pendingElements; let temp = flow.addScopedDummyLocal(name, Type.auto); // pending dummy pendingElements.add(temp); - initExpr = this.compileExpression(initializerNode, Type.auto, - Constraints.WILL_RETAIN - ); // reports - initAutoreleaseSkipped = this.skippedAutoreleases.has(initExpr); + initExpr = this.compileExpression(initializerNode, Type.auto); // reports pendingElements.delete(temp); flow.freeScopedDummyLocal(name); @@ -3190,46 +3137,19 @@ export class Compiler extends DiagnosticEmitter { local = flow.parentFunction.addLocal(type, name, declaration); if (isConst) flow.setLocalFlag(local.index, LocalFlags.CONSTANT); } - let isManaged = type.isManaged; if (initExpr) { - if (flow.isNonnull(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL); - if (isManaged) { - flow.setLocalFlag(local.index, LocalFlags.RETAINED); - initializers.push( - module.local_set(local.index, - initAutoreleaseSkipped - ? initExpr - : this.makeRetain(initExpr, type) - ) - ); - } else { - initializers.push( - module.local_set(local.index, initExpr) - ); - if (local.type.isShortIntegerValue) { - if (!flow.canOverflow(initExpr, type)) flow.setLocalFlag(local.index, LocalFlags.WRAPPED); - else flow.unsetLocalFlag(local.index, LocalFlags.WRAPPED); - } - } + initializers.push( + this.makeLocalAssignment(local, initExpr, type, false) + ); } else { - if (isManaged) { - // This is necessary because the first use (and assign) of the local could be taking place - // in a loop, subsequently marking it retained, but the second iteration of the loop - // still wouldn't release whatever is assigned in the first. Likewise, if the variable wasn't - // initialized but becomes released later on, whatever was stored before would be released. - // TODO: Detect this condition inside of a loop instead? - initializers.push( - module.local_set(local.index, - this.makeZero(type, declaration) - ) - ); - flow.setLocalFlag(local.index, LocalFlags.CONDITIONALLY_RETAINED); - } else if (local.type.isShortIntegerValue) { + // no need to assign zero + if (local.type.isShortIntegerValue) { flow.setLocalFlag(local.index, LocalFlags.WRAPPED); } } } } + this.currentType = Type.void; return initializers.length == 0 ? 0 : module.flatten(initializers); @@ -3262,10 +3182,10 @@ export class Compiler extends DiagnosticEmitter { // (block $break └►┐ flow // (loop $continue ├◄───────────┐ recompile? // (local.set $tcond (condition)) └─┐ condFlow │ - // [autorelease] ┌─┘ │ + // ┌─┘ │ // (if (local.get $tcond) ┌◄┤ │ condition? // (body) │ └─┐ bodyFlow │ - // [autorelease] │ ┌─┘ │ + // │ ┌─┘ │ // ├◄┼►╢ │ breaks or terminates? // (br $continue) │ └────────────┘ // ) └─┐ @@ -3299,7 +3219,6 @@ export class Compiler extends DiagnosticEmitter { stmts.push( module.drop(condExpr) ); - this.performAutoreleases(condFlow, stmts); assert(!flow.hasScopedLocals); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; @@ -3308,12 +3227,11 @@ export class Compiler extends DiagnosticEmitter { // From here on condition is either always true or unknown - // Store condition result in a temp while we autorelease + // Store condition result in a temp var tcond = flow.getTempLocal(Type.bool); stmts.push( - module.local_set(tcond.index, condExpr) + module.local_set(tcond.index, condExpr, false) // bool ); - this.performAutoreleases(condFlow, stmts); condFlow.freeScopedLocals(); flow.inherit(condFlow); // always executes @@ -3341,7 +3259,6 @@ export class Compiler extends DiagnosticEmitter { // Terminate if condition is always true and body never breaks } else if (condKind == ConditionKind.TRUE && !bodyFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { - this.performAutoreleases(bodyFlow, bodyStmts); bodyStmts.push( module.br(continueLabel) ); @@ -3354,7 +3271,6 @@ export class Compiler extends DiagnosticEmitter { module.unreachable() ); } else { - this.performAutoreleases(bodyFlow, bodyStmts); bodyStmts.push( module.br(continueLabel) ); @@ -3577,32 +3493,6 @@ export class Compiler extends DiagnosticEmitter { return expr; } - /** Compiles an expression that is about to be returned, taking special care of retaining and setting flow states. */ - private compileReturnedExpression( - /** Expression to compile. */ - expression: Expression, - /** Return type of the function. */ - returnType: Type, - /** Constraints indicating contextual conditions. */ - constraints: Constraints = Constraints.NONE - ): ExpressionRef { - // pretend to retain the expression immediately so the autorelease, if any, is skipped - var expr = this.compileExpression(expression, returnType, constraints | Constraints.WILL_RETAIN); - var flow = this.currentFlow; - if (returnType.isManaged) { - // check if that worked, and if it didn't, keep the reference alive - if (!this.skippedAutoreleases.has(expr)) { - let index = this.tryUndoAutorelease(expr, flow); - if (index == -1) expr = this.makeRetain(expr, returnType); - this.skippedAutoreleases.add(expr); - } - } - // remember return states - if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); - if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); - return expr; - } - /** Converts an expression's result from one type to another. */ convertExpression( expr: ExpressionRef, @@ -4632,7 +4522,7 @@ export class Compiler extends DiagnosticEmitter { case Token.AMPERSAND_AMPERSAND: { // left && right -> (t = left) ? right : t let flow = this.currentFlow; - let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP); + let inheritedConstraints = constraints & Constraints.MUST_WRAP; leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints); leftType = this.currentType; @@ -4644,7 +4534,6 @@ export class Compiler extends DiagnosticEmitter { if (contextualType == Type.bool || contextualType == Type.void) { rightExpr = this.compileExpression(right, leftType, inheritedConstraints); rightType = this.currentType; - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); rightFlow.freeScopedLocals(); this.currentFlow = flow; expr = module.if( @@ -4657,80 +4546,28 @@ export class Compiler extends DiagnosticEmitter { } else { rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT); rightType = this.currentType; + rightFlow.freeScopedLocals(); + this.currentFlow = flow; - // references must properly retain and release, with the same outcome independent of the branch taken - if (leftType.isManaged) { - let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr); - let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr); - let temp = flow.getTempLocal(leftType); - leftExpr = module.local_tee(temp.index, leftExpr); - - // instead of retaining left and releasing it again in right when right - // is taken, we can also just retain left if right is not taken - let retainLeftInElse = false; - if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor - if (!leftAutoreleaseSkipped) { - retainLeftInElse = true; - } else { - rightExpr = this.makeRetain(rightExpr, rightType); - rightAutoreleaseSkipped = true; - } - } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer - rightExpr = this.delayAutorelease(rightExpr, rightType, rightFlow, flow); - } - - let rightStmts = new Array(); - if (leftAutoreleaseSkipped) { // left turned out to be true'ish and is dropped - rightStmts.unshift( - this.makeRelease( - module.local_get(temp.index, leftType.toNativeType()), - leftType - ) - ); - } - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts); - rightFlow.freeScopedLocals(); - this.currentFlow = flow; - + // simplify if cloning left without side effects is possible + if (expr = module.cloneExpression(leftExpr, true, 0)) { expr = module.if( - this.makeIsTrueish(leftExpr, leftType, left), + this.makeIsTrueish(leftExpr, this.currentType, left), rightExpr, - retainLeftInElse - ? this.makeRetain( - module.local_get(temp.index, leftType.toNativeType()), - leftType - ) - : module.local_get(temp.index, leftType.toNativeType()) + expr ); - if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr); - if (temp) flow.freeTempLocal(temp); - // basic values can use more aggressive optimizations + // if not possible, tee left to a temp } else { - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); - rightFlow.freeScopedLocals(); - this.currentFlow = flow; - - // simplify if cloning left without side effects is possible - if (expr = module.cloneExpression(leftExpr, true, 0)) { - expr = module.if( - this.makeIsTrueish(leftExpr, this.currentType, left), - rightExpr, - expr - ); - - // if not possible, tee left to a temp - } else { - let tempLocal = flow.getTempLocal(leftType); - if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED); - if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL); - expr = module.if( - this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr), leftType, left), - rightExpr, - module.local_get(tempLocal.index, leftType.toNativeType()) - ); - flow.freeTempLocal(tempLocal); - } + let tempLocal = flow.getTempLocal(leftType); + if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.WRAPPED); + if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(tempLocal.index, LocalFlags.NONNULL); + expr = module.if( + this.makeIsTrueish(module.local_tee(tempLocal.index, leftExpr, leftType.isManaged), leftType, left), + rightExpr, + module.local_get(tempLocal.index, leftType.toNativeType()) + ); + flow.freeTempLocal(tempLocal); } this.currentType = leftType; } @@ -4738,7 +4575,7 @@ export class Compiler extends DiagnosticEmitter { } case Token.BAR_BAR: { // left || right -> ((t = left) ? t : right) let flow = this.currentFlow; - let inheritedConstraints = constraints & (Constraints.WILL_RETAIN | Constraints.MUST_WRAP); + let inheritedConstraints = constraints & Constraints.MUST_WRAP; leftExpr = this.compileExpression(left, contextualType.exceptVoid, inheritedConstraints); leftType = this.currentType; @@ -4750,7 +4587,6 @@ export class Compiler extends DiagnosticEmitter { if (contextualType == Type.bool || contextualType == Type.void) { rightExpr = this.compileExpression(right, leftType, inheritedConstraints); rightType = this.currentType; - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, leftType); rightFlow.freeScopedLocals(); this.currentFlow = flow; expr = module.if( @@ -4763,82 +4599,28 @@ export class Compiler extends DiagnosticEmitter { } else { rightExpr = this.compileExpression(right, leftType, inheritedConstraints | Constraints.CONV_IMPLICIT); rightType = this.currentType; + rightFlow.freeScopedLocals(); + this.currentFlow = flow; - // references must properly retain and release, with the same outcome independent of the branch taken - if (leftType.isManaged) { - let leftAutoreleaseSkipped = this.skippedAutoreleases.has(leftExpr); - let rightAutoreleaseSkipped = this.skippedAutoreleases.has(rightExpr); - let temp = flow.getTempLocal(leftType); - leftExpr = module.local_tee(temp.index, leftExpr); - - // instead of retaining left and releasing it again in right when right - // is taken, we can also just retain left if right is not taken - let retainLeftInThen = false; - if (leftAutoreleaseSkipped != rightAutoreleaseSkipped) { // xor - if (!leftAutoreleaseSkipped) { - retainLeftInThen = true; - } else { - rightExpr = this.makeRetain(rightExpr, rightType); - rightAutoreleaseSkipped = true; - } - } else if (!(constraints & Constraints.WILL_RETAIN)) { // otherwise keep right alive a little longer - rightExpr = this.delayAutorelease(rightExpr, rightType, rightFlow, flow); - } - - let rightStmts = new Array(); - if (leftAutoreleaseSkipped) { // left turned out to be false'ish and is dropped - // TODO: usually, false'ish means left is null, but this might not hold - // once implicit conversion with strings is performed and left is "", so: - rightStmts.unshift( - this.makeRelease( - module.local_get(temp.index, leftType.toNativeType()), - leftType - ) - ); - } - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType, rightStmts); - rightFlow.freeScopedLocals(); - this.currentFlow = flow; - + // simplify if cloning left without side effects is possible + if (expr = module.cloneExpression(leftExpr, true, 0)) { expr = module.if( this.makeIsTrueish(leftExpr, leftType, left), - retainLeftInThen - ? this.makeRetain( - module.local_get(temp.index, leftType.toNativeType()), - leftType - ) - : module.local_get(temp.index, leftType.toNativeType()), + expr, rightExpr ); - if (leftAutoreleaseSkipped || rightAutoreleaseSkipped) this.skippedAutoreleases.add(expr); - if (temp) flow.freeTempLocal(temp); - // basic values can use more aggressive optimizations + // if not possible, tee left to a temp. local } else { - rightExpr = this.performAutoreleasesWithValue(rightFlow, rightExpr, rightType); - rightFlow.freeScopedLocals(); - this.currentFlow = flow; - - // simplify if cloning left without side effects is possible - if (expr = module.cloneExpression(leftExpr, true, 0)) { - expr = module.if( - this.makeIsTrueish(leftExpr, leftType, left), - expr, - rightExpr - ); - - // if not possible, tee left to a temp. local - } else { - let temp = flow.getTempLocal(leftType); - if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); - if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - expr = module.if( - this.makeIsTrueish(module.local_tee(temp.index, leftExpr), leftType, left), - module.local_get(temp.index, leftType.toNativeType()), - rightExpr - ); - flow.freeTempLocal(temp); - } + let temp = flow.getTempLocal(leftType); + if (!flow.canOverflow(leftExpr, leftType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); + if (flow.isNonnull(leftExpr, leftType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); + expr = module.if( + this.makeIsTrueish(module.local_tee(temp.index, leftExpr, leftType.isManaged), leftType, left), + module.local_get(temp.index, leftType.toNativeType()), + rightExpr + ); + flow.freeTempLocal(temp); } this.currentType = leftType; } @@ -4864,7 +4646,7 @@ export class Compiler extends DiagnosticEmitter { } return this.makeAssignment( target, - expr, // TODO: delay release above if possible? + expr, this.currentType, right, resolver.currentThisExpression, @@ -5917,7 +5699,7 @@ export class Compiler extends DiagnosticEmitter { rightType = operatorInstance.signature.parameterTypes[0]; } else { // FIXME: if LHS type differs we can't recompile left because that'd completely confuse - // local states, like having retained locals that actually do not even exist, possibly + // local states, like having local flags that actually do not even exist, possibly // releasing something random in that local before and evil things like that. Hence this // assumes that LHS type matches, which in turn means that static overloads must be // guaranteed to never mismatch LHS type, which in turn means that we can't have shiny @@ -6027,7 +5809,7 @@ export class Compiler extends DiagnosticEmitter { // compile the value and do the assignment assert(targetType != Type.void); - var valueExpr = this.compileExpression(valueExpression, targetType, Constraints.WILL_RETAIN); + var valueExpr = this.compileExpression(valueExpression, targetType); var valueType = this.currentType; return this.makeAssignment( target, @@ -6060,9 +5842,6 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var flow = this.currentFlow; - // NOTE: Only locals, globals and fields can make use of skipped autoreleases while - // everything else must insert the skipped autorelease now. See (*) - switch (target.kind) { case ElementKind.LOCAL: { let local = target; @@ -6136,8 +5915,6 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } assert(setterInstance.signature.parameterTypes.length == 1); - let valueType = setterInstance.signature.parameterTypes[0]; - if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, valueType, flow); // (*) if (propertyInstance.is(CommonFlags.INSTANCE)) { let thisType = assert(setterInstance.signature.thisType); let thisExpr = this.compileExpression( @@ -6153,7 +5930,7 @@ export class Compiler extends DiagnosticEmitter { let tempThis = flow.getTempLocal(returnType); let ret = module.block(null, [ this.makeCallDirect(setterInstance, [ - module.local_tee(tempThis.index, thisExpr), + module.local_tee(tempThis.index, thisExpr, returnType.isManaged), valueExpr ], valueExpression), this.makeCallDirect(getterInstance, [ @@ -6196,23 +5973,23 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } assert(setterInstance.signature.parameterTypes.length == 2); - let valueType = setterInstance.signature.parameterTypes[1]; - if (this.skippedAutoreleases.has(valueExpr)) valueExpr = this.makeAutorelease(valueExpr, valueType, flow); // (*) + let thisType = classInstance.type; let thisExpr = this.compileExpression( assert(thisExpression), - classInstance.type, + thisType, Constraints.CONV_IMPLICIT | Constraints.IS_THIS ); let elementExpr = this.compileExpression(assert(indexExpression), Type.i32, Constraints.CONV_IMPLICIT); + let elementType = this.currentType; if (tee) { - let tempTarget = flow.getTempLocal(classInstance.type); - let tempElement = flow.getTempLocal(this.currentType); + let tempTarget = flow.getTempLocal(thisType); + let tempElement = flow.getTempLocal(elementType); let returnType = getterInstance.signature.returnType; flow.freeTempLocal(tempTarget); let ret = module.block(null, [ this.makeCallDirect(setterInstance, [ - module.local_tee(tempTarget.index, thisExpr), - module.local_tee(tempElement.index, elementExpr), + module.local_tee(tempTarget.index, thisExpr, thisType.isManaged), + module.local_tee(tempElement.index, elementExpr, elementType.isManaged), valueExpr ], valueExpression), this.makeCallDirect(getterInstance, [ @@ -6236,7 +6013,7 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } - /** Makes an assignment to a local, possibly retaining and releasing affected references and keeping track of wrap and null states. */ + /** Makes an assignment to a local, keeping track of wrap and null states. */ private makeLocalAssignment( /** Local to assign to. */ local: Local, @@ -6258,52 +6035,20 @@ export class Compiler extends DiagnosticEmitter { else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL); } flow.setLocalFlag(localIndex, LocalFlags.INITIALIZED); - - if (type.isManaged) { - let alreadyRetained = this.skippedAutoreleases.has(valueExpr); - if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { - valueExpr = this.makeReplace( - valueExpr, - valueType, - module.local_get(localIndex, type.toNativeType()), - type, - alreadyRetained - ); - if (tee) { // local = REPLACE(local, value) - this.currentType = type; - return module.local_tee(localIndex, valueExpr); - } else { // void(local = REPLACE(local, value)) - this.currentType = Type.void; - return module.local_set(localIndex, valueExpr); - } - } else { - flow.unsetLocalFlag(localIndex, LocalFlags.CONDITIONALLY_RETAINED); - flow.setLocalFlag(localIndex, LocalFlags.RETAINED); - if (!alreadyRetained) valueExpr = this.makeRetain(valueExpr, valueType); - if (tee) { // local = __retain(value, local) - this.currentType = type; - return module.local_tee(localIndex, valueExpr); - } else { // void(local = __retain(value, local)) - this.currentType = Type.void; - return module.local_set(localIndex, valueExpr); - } - } - } else { - if (type.isShortIntegerValue) { - if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED); - else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED); - } - if (tee) { // local = value - this.currentType = type; - return module.local_tee(localIndex, valueExpr); - } else { // void(local = value) - this.currentType = Type.void; - return module.local_set(localIndex, valueExpr); - } + if (type.isShortIntegerValue) { + if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.WRAPPED); + else flow.unsetLocalFlag(localIndex, LocalFlags.WRAPPED); + } + if (tee) { // local = value + this.currentType = type; + return module.local_tee(localIndex, valueExpr, type.isManaged); + } else { // void(local = value) + this.currentType = Type.void; + return module.local_set(localIndex, valueExpr, type.isManaged); } } - /** Makes an assignment to a global, possibly retaining and releasing affected references. */ + /** Makes an assignment to a global. */ private makeGlobalAssignment( /** The global variable to assign to. */ global: VariableLikeElement, @@ -6319,45 +6064,22 @@ export class Compiler extends DiagnosticEmitter { assert(type != Type.void); var nativeType = type.toNativeType(); - if (type.isManaged) { - let alreadyRetained = this.skippedAutoreleases.has(valueExpr); - valueExpr = module.global_set(global.internalName, - this.makeReplace( - valueExpr, - valueType, - module.global_get(global.internalName, nativeType), - type, - alreadyRetained - ) + valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // globals must be wrapped + if (tee) { // (global = value), global + this.currentType = type; + return module.block(null, [ + module.global_set(global.internalName, valueExpr), + module.global_get(global.internalName, nativeType) + ], nativeType); + } else { // global = value + this.currentType = Type.void; + return module.global_set(global.internalName, + valueExpr ); - if (tee) { // (global = REPLACE(global, value))), global - this.currentType = type; - return module.block(null, [ - valueExpr, - module.global_get(global.internalName, nativeType) - ], nativeType); - } else { // global = REPLACE(global, value) - this.currentType = Type.void; - return valueExpr; - } - } else { - valueExpr = this.ensureSmallIntegerWrap(valueExpr, type); // globals must be wrapped - if (tee) { // (global = value), global - this.currentType = type; - return module.block(null, [ - module.global_set(global.internalName, valueExpr), - module.global_get(global.internalName, nativeType) - ], nativeType); - } else { // global = value - this.currentType = Type.void; - return module.global_set(global.internalName, - valueExpr - ); - } } } - /** Makes an assignment to a field, possibly retaining and releasing affected references. */ + /** Makes an assignment to a field. */ private makeFieldAssignment( /** The field to assign to. */ field: Field, @@ -6376,7 +6098,6 @@ export class Compiler extends DiagnosticEmitter { var nativeFieldType = fieldType.toNativeType(); assert(field.parent.kind == ElementKind.CLASS); var thisType = (field.parent).type; - var nativeThisType = thisType.toNativeType(); if (!field.is(CommonFlags.COMPILED)) { field.set(CommonFlags.COMPILED); @@ -6384,77 +6105,21 @@ export class Compiler extends DiagnosticEmitter { if (typeNode) this.checkTypeSupported(field.type, typeNode); } - if (fieldType.isManaged && thisType.isManaged) { - let tempThis = flow.getTempLocal(thisType, findUsedLocals(valueExpr)); - // set before and read after valueExpr executes below ^ - let alreadyRetained = this.skippedAutoreleases.has(valueExpr); - let ret: ExpressionRef; - if (tee) { // ((t1 = this).field = REPLACE(t1.field, t2 = value)), t2 - let tempValue = flow.getTempLocal(fieldType); - if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.WRAPPED); - if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(tempValue.index, LocalFlags.NONNULL); - ret = module.block(null, [ - module.store(fieldType.byteSize, - module.local_tee(tempThis.index, thisExpr), - this.makeReplace( - module.local_tee(tempValue.index, valueExpr), - valueType, - module.load(fieldType.byteSize, fieldType.isSignedIntegerValue, - module.local_get(tempThis.index, nativeThisType), - nativeFieldType, field.memoryOffset - ), - fieldType, - alreadyRetained - ), - nativeFieldType, field.memoryOffset - ), - module.local_get(tempValue.index, nativeFieldType) - ], nativeFieldType); - flow.freeTempLocal(tempValue); - this.currentType = fieldType; - } else { // (t1 = this).field = REPLACE(t1.field, value) - ret = module.store(fieldType.byteSize, - module.local_tee(tempThis.index, thisExpr), - this.makeReplace( - valueExpr, - valueType, - module.load(fieldType.byteSize, fieldType.isSignedIntegerValue, - module.local_get(tempThis.index, nativeThisType), - nativeFieldType, field.memoryOffset - ), - fieldType, - alreadyRetained - ), - nativeFieldType, field.memoryOffset - ); - this.currentType = Type.void; - } + if (tee) { + this.compileField(field); + let tempThis = flow.getTempLocal(thisType); + let expr = module.block(null, [ + module.call(field.internalSetterName, [ module.local_tee(tempThis.index, thisExpr, thisType.isManaged), valueExpr ], NativeType.None), + module.call(field.internalGetterName, [ module.local_get(tempThis.index, thisType.toNativeType()) ], nativeFieldType) + ], nativeFieldType); flow.freeTempLocal(tempThis); - return ret; + this.currentType = fieldType; + return expr; } else { - if (tee) { // (this.field = (t1 = value)), t1 - let temp = flow.getTempLocal(fieldType); - if (!flow.canOverflow(valueExpr, fieldType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); - if (flow.isNonnull(valueExpr, fieldType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - let ret = module.block(null, [ - module.store(fieldType.byteSize, - thisExpr, - module.local_tee(temp.index, valueExpr), - nativeFieldType, field.memoryOffset - ), - module.local_get(temp.index, nativeFieldType) - ], nativeFieldType); - flow.freeTempLocal(temp); - this.currentType = fieldType; - return ret; - } else { // this.field = value - this.currentType = Type.void; - return module.store(fieldType.byteSize, - thisExpr, - valueExpr, - nativeFieldType, field.memoryOffset - ); - } + this.compileFieldSetter(field); + let expr = module.call(field.internalSetterName, [ thisExpr, valueExpr ], NativeType.None); + this.currentType = Type.void; + return expr; } } @@ -6496,10 +6161,8 @@ export class Compiler extends DiagnosticEmitter { baseCtorInstance, expression.args, expression, - module.local_get(thisLocal.index, nativeSizeType), - Constraints.WILL_RETAIN + module.local_get(thisLocal.index, nativeSizeType) ); - assert(baseClassInstance.type.isUnmanaged || this.skippedAutoreleases.has(superCall)); // guaranteed // check that super had been called before accessing `this` if (flow.isAny( @@ -6514,7 +6177,7 @@ export class Compiler extends DiagnosticEmitter { } flow.set(FlowFlags.ACCESSES_THIS | FlowFlags.CALLS_SUPER); this.currentType = Type.void; - return module.local_set(thisLocal.index, superCall); + return module.local_set(thisLocal.index, superCall, classInstance.type.isManaged); } // otherwise resolve normally @@ -6864,19 +6527,10 @@ export class Compiler extends DiagnosticEmitter { // compile argument expressions let args = new Array(numArguments); for (let i = 0; i < numArguments; ++i) { - args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i], - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); + args[i] = this.compileExpression(argumentExpressions[i], parameterTypes[i], Constraints.CONV_IMPLICIT); } - // make the inlined call (is aware of autoreleases) + // make the inlined call let expr = this.makeCallInline(instance, args, thisArg, (constraints & Constraints.WILL_DROP) != 0); - if (this.currentType.isManaged) { - if (!(constraints & Constraints.WILL_RETAIN)) { - expr = this.makeAutorelease(expr, instance.signature.returnType, this.currentFlow); - } else { - this.skippedAutoreleases.add(expr); - } - } inlineStack.pop(); return expr; } @@ -6892,27 +6546,12 @@ export class Compiler extends DiagnosticEmitter { } var parameterTypes = signature.parameterTypes; for (let i = 0; i < numArguments; ++i, ++index) { - operands[index] = this.compileExpression(argumentExpressions[i], parameterTypes[i], - Constraints.CONV_IMPLICIT - ); + let paramType = parameterTypes[i]; + let paramExpr = this.compileExpression(argumentExpressions[i], paramType, Constraints.CONV_IMPLICIT); + operands[index] = paramExpr; } assert(index == numArgumentsInclThis); - if (signature.returnType.isManaged) { - if (constraints & Constraints.WILL_DROP) { - // Skip autorelease and simply release - return this.makeCallDirect(instance, operands, reportNode, true); - } else if (constraints & Constraints.WILL_RETAIN) { - // Skip autorelease and remember - let expr = this.makeCallDirect(instance, operands, reportNode, false, true); - this.skippedAutoreleases.add(expr); - return expr; - } else { - return this.makeCallDirect(instance, operands, reportNode, false, false); - } - } - return this.makeCallDirect(instance, operands, reportNode, - (constraints & Constraints.WILL_DROP) != 0 - ); + return this.makeCallDirect(instance, operands, reportNode, (constraints & Constraints.WILL_DROP) != 0); } makeCallInline( @@ -6947,13 +6586,8 @@ export class Compiler extends DiagnosticEmitter { // inlining is aware of wrap/nonnull states: if (!previousFlow.canOverflow(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED); if (flow.isNonnull(paramExpr, paramType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL); - // inlining is aware of skipped autoreleases: - if (paramType.isManaged) { - if (!this.skippedAutoreleases.has(paramExpr)) paramExpr = this.makeRetain(paramExpr, paramType); - flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED); - } body.unshift( - module.local_set(argumentLocal.index, paramExpr) + module.local_set(argumentLocal.index, paramExpr, paramType.isManaged) ); } if (thisArg) { @@ -6962,15 +6596,8 @@ export class Compiler extends DiagnosticEmitter { let classInstance = parent; let thisType = assert(instance.signature.thisType); let thisLocal = flow.addScopedLocal(CommonNames.this_, thisType, usedLocals); - // In normal instance functions, `this` is effectively a constant - // retained elsewhere so does not need to be retained. - if (instance.is(CommonFlags.CONSTRUCTOR)) { - // Constructors, however, can allocate their own memory, and as such - // must refcount the allocation in case something else is `return`ed. - flow.setLocalFlag(thisLocal.index, LocalFlags.RETAINED); - } body.unshift( - module.local_set(thisLocal.index, thisArg) + module.local_set(thisLocal.index, thisArg, thisType.isManaged) ); let base = classInstance.base; if (base) flow.addScopedAlias(CommonNames.super_, base.type, thisLocal.index); @@ -6986,17 +6613,11 @@ export class Compiler extends DiagnosticEmitter { let initExpr = this.compileExpression( assert(instance.prototype.functionTypeNode.parameters[i].initializer), initType, - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN + Constraints.CONV_IMPLICIT ); let argumentLocal = flow.addScopedLocal(instance.getParameterName(i), initType); - if (!flow.canOverflow(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.WRAPPED); - if (flow.isNonnull(initExpr, initType)) flow.setLocalFlag(argumentLocal.index, LocalFlags.NONNULL); - if (initType.isManaged) { - flow.setLocalFlag(argumentLocal.index, LocalFlags.RETAINED); - if (!this.skippedAutoreleases.has(initExpr)) initExpr = this.makeRetain(initExpr, initType); - } body.push( - module.local_set(argumentLocal.index, initExpr) + this.makeLocalAssignment(argumentLocal, initExpr, initType, false) ); } @@ -7011,24 +6632,13 @@ export class Compiler extends DiagnosticEmitter { } // Free any new scoped locals and reset to the original flow - if (!flow.is(FlowFlags.TERMINATES)) { - this.performAutoreleases(flow, body); - this.finishAutoreleases(flow, body); - } flow.freeScopedLocals(); var returnType = flow.returnType; this.currentFlow = previousFlow; // Create an outer block that we can break to when returning a value out of order - var expr = module.block(flow.inlineReturnLabel, body, returnType.toNativeType()); this.currentType = returnType; - if (returnType.isManaged) { - if (immediatelyDropped) { - expr = this.makeRelease(expr, returnType); - this.currentType = Type.void; - } - } - return expr; + return module.block(flow.inlineReturnLabel, body, returnType.toNativeType()); } /** Makes sure that the arguments length helper global is present. */ @@ -7068,17 +6678,20 @@ export class Compiler extends DiagnosticEmitter { var forwardedOperands = new Array(minOperands); var operandIndex = 0; + var stmts = new Array(); // forward `this` if applicable var module = this.module; - if (isInstance) { - forwardedOperands[0] = module.local_get(0, this.options.nativeSizeType); + var thisType = originalSignature.thisType; + if (thisType) { + forwardedOperands[0] = module.local_get(0, thisType.toNativeType()); operandIndex = 1; } // forward required arguments for (let i = 0; i < minArguments; ++i, ++operandIndex) { - forwardedOperands[operandIndex] = module.local_get(operandIndex, originalParameterTypes[i].toNativeType()); + let paramType = originalParameterTypes[i]; + forwardedOperands[operandIndex] = module.local_get(operandIndex, paramType.toNativeType()); } assert(operandIndex == minOperands); @@ -7101,7 +6714,7 @@ export class Compiler extends DiagnosticEmitter { let label = i.toString() + ofN; names[i] = label; } - var body = module.block(names[0], [ + var table = module.block(names[0], [ module.block("outOfRange", [ module.switch(names, "outOfRange", // condition is number of provided optional arguments, so subtract required arguments @@ -7122,13 +6735,12 @@ export class Compiler extends DiagnosticEmitter { let initializer = declaration.initializer; let initExpr: ExpressionRef; if (initializer) { - initExpr = module.local_set(operandIndex, - this.compileExpression( - initializer, - type, - Constraints.CONV_IMPLICIT - ) + initExpr = this.compileExpression( + initializer, + type, + Constraints.CONV_IMPLICIT ); + initExpr = module.local_set(operandIndex, initExpr, type.isManaged); } else { this.error( DiagnosticCode.Optional_parameter_must_have_an_initializer, @@ -7136,22 +6748,20 @@ export class Compiler extends DiagnosticEmitter { ); initExpr = module.unreachable(); } - body = module.block(names[i + 1], [ - body, + table = module.block(names[i + 1], [ + table, initExpr, ]); forwardedOperands[operandIndex] = module.local_get(operandIndex, type.toNativeType()); } assert(operandIndex == maxOperands); - var stmts: ExpressionRef[] = [ body ]; - var theCall = module.call(original.internalName, forwardedOperands, returnType.toNativeType()); - if (returnType != Type.void) { - this.performAutoreleasesWithValue(flow, theCall, returnType, stmts); - } else { - stmts.push(theCall); - this.performAutoreleases(flow, stmts); - } + stmts.push( + table + ); + stmts.push( + module.call(original.internalName, forwardedOperands, returnType.toNativeType()) + ); flow.freeScopedLocals(); this.currentFlow = previousFlow; @@ -7358,317 +6968,45 @@ export class Compiler extends DiagnosticEmitter { stub.set(CommonFlags.COMPILED); } - // - - /** Makes a retain call, retaining the expression's value. */ - makeRetain(expr: ExpressionRef, type: Type): ExpressionRef { - var retainInstance = this.program.retainInstance; - this.compileFunction(retainInstance); - return this.module.call(retainInstance.internalName, [ expr ], this.options.nativeSizeType); - } - - /** Makes a release call, releasing the expression's value. Changes the current type to void.*/ - makeRelease(expr: ExpressionRef, type: Type): ExpressionRef { - var releaseInstance = this.program.releaseInstance; - this.compileFunction(releaseInstance); - return this.module.call(releaseInstance.internalName, [ expr ], NativeType.None); - } - - /** Makes a replace, retaining the new expression's value and releasing the old expression's value, in this order. */ - makeReplace( - /** New value being assigned. */ - newExpr: ExpressionRef, - /** The type of the new expression. */ - newType: Type, - /** Old value being replaced. */ - oldExpr: ExpressionRef, - /** The type of the old expression. */ - oldType: Type, - /** Whether the new value is already retained. */ - alreadyRetained: bool = false, - ): ExpressionRef { + /** Marks managed call operands for the shadow stack. */ + private operandsTostack(signature: Signature, operands: ExpressionRef[]): void { + if (!this.options.stackSize) return; var module = this.module; - var flow = this.currentFlow; - var nativeSizeType = this.options.nativeSizeType; - if (alreadyRetained) { - // (t1=newExpr), __release(oldExpr), t1 - // it is important that `newExpr` evaluates before `oldExpr` is released, hence the local - let temp = flow.getTempLocal(this.options.usizeType, findUsedLocals(oldExpr)); - let ret = module.block(null, [ - module.local_set(temp.index, newExpr), - this.makeRelease(oldExpr, oldType), - module.local_get(temp.index, nativeSizeType) - ], nativeSizeType); - flow.freeTempLocal(temp); - return ret; - } else { - // if ((t1=newExpr) != (t2=oldExpr)) { - // t1 = __retain(t1); - // __release(t2); - // }, t1 - let usizeType = this.options.usizeType; - let temp1 = flow.getTempLocal(usizeType, findUsedLocals(oldExpr)); - let temp2 = flow.getTempLocal(usizeType); - let ret = module.block(null, [ - module.if( - module.binary(nativeSizeType == NativeType.I64 ? BinaryOp.NeI64 : BinaryOp.NeI32, - module.local_tee(temp1.index, newExpr), - module.local_tee(temp2.index, oldExpr) - ), - module.block(null, [ - module.local_set(temp1.index, - this.makeRetain(module.local_get(temp1.index, nativeSizeType), newType) - ), - this.makeRelease(module.local_get(temp2.index, nativeSizeType), oldType) - ]) - ), - module.local_get(temp1.index, nativeSizeType) - ], nativeSizeType); - flow.freeTempLocal(temp2); - flow.freeTempLocal(temp1); - return ret; - } - } - - /** Makes an autorelease call at the end of the specified `flow`. */ - makeAutorelease( - /** Expression to autorelease. */ - expr: ExpressionRef, - /** Type of the expression. */ - type: Type, - /** Flow that should autorelease. Defaults to the current flow. */ - flow: Flow = this.currentFlow - ): ExpressionRef { - // An 'autorelease' is the assignment of a managed reference to a temporary local, - // keeping the reference alive until the surrounding flow concludes. This is useful - // if a reference is not being immediately assigned to something that would keep it - // alive, like a local or a global, yet it'll remain alive in other code. Example: - // - // callReceivingAReference(callReturningAReference()) - // - // will be transformed into an autorelease like - // - // callReceivingAReference(t = callReturningAReference()) - // ... - // __release(t) - // - // since releasing immediately would free the value before the call: - // - // callReceivingAReference((__release(t = callReturningAReference()), t)) - // - var local = flow.getAutoreleaseLocal(type); - if (flow.isNonnull(expr, type)) flow.setLocalFlag(local.index, LocalFlags.NONNULL); - return this.module.local_tee(local.index, expr); - } - - /** - * Attempts to undo an autorelease in the specified `flow`. - * Returns the index of the previously retaining variable or -1 if not possible. - */ - tryUndoAutorelease( - /** Expression being autoreleased. */ - expr: ExpressionRef, - /** Flow that would autorelease. */ - flow: Flow - ): i32 { - // The following assumes that the expression actually belongs to the flow and that - // top-level autoreleases are never undone. While that's true, it's not necessary - // to check presence in scopedLocals. - switch (getExpressionId(expr)) { - case ExpressionId.LocalGet: { // local.get(idx) - let index = getLocalGetIndex(expr); - if (flow.isAnyLocalFlag(index, LocalFlags.ANY_RETAINED)) { - flow.unsetLocalFlag(index, LocalFlags.ANY_RETAINED); - return index; - } - break; - } - case ExpressionId.LocalSet: { // local.tee(idx, expr) - if (isLocalTee(expr)) { - // NOTE: Can't remove the local.tee completely because it's already compiled - // and a child of something else. Preventing the final release however makes - // it optimize away. - let index = getLocalSetIndex(expr); - if (flow.isAnyLocalFlag(index, LocalFlags.ANY_RETAINED)) { - flow.unsetLocalFlag(index, LocalFlags.ANY_RETAINED); - return index; - } - } - break; - } - case ExpressionId.Block: { // { ..., local.get|tee(...) } - if (getBlockName(expr) === null) { // must not be a break target - let count = getBlockChildCount(expr); - if (count) { - return this.tryUndoAutorelease(getBlockChildAt(expr, count - 1), flow); - } - } - break; - } - } - return -1; - } - - /** Delays an autorelease in `innerFlow` until `outerFlow` concludes. */ - delayAutorelease( - /** Expression being autoreleased in `innerFlow`. */ - expr: ExpressionRef, - /** Type of the expression. */ - type: Type, - /** Inner flow that would autorelease. Must not have processed autoreleases yet. */ - innerFlow: Flow, - /** Outer flow that should autorelease instead. */ - outerFlow: Flow - ): ExpressionRef { - // Attempt to undo the autorelease in `innerFlow` - var index = this.tryUndoAutorelease(expr, innerFlow); - return ~index - // If it worked, autorelease in `outerFlow` instead - ? this.makeAutorelease(expr, type, outerFlow) - // If it didn't work, extend the lifetime into `outerFlow` - : this.makeAutorelease(this.makeRetain(expr, type), type, outerFlow); - } - - /** Performs any queued autoreleases in the specified flow. */ - performAutoreleases( - /** Flow releasing its queued autoreleases. */ - flow: Flow, - /** Array of statements to append the releases to. */ - stmts: ExpressionRef[], - /** - * Whether to finalize affected locals. Defaults to `true`, which - * is almost always correct, except when bubbling up parent flows - * in break-like scenarios. - */ - finalize: bool = true - ): void { - // Autoreleases must be performed whenever a flow concludes, decrementing - // the RC of all the references in that flow scheduled for an autorelease. - var scopedLocals = flow.scopedLocals; - if (scopedLocals) { - let module = this.module; - // TODO: for (let local of scopedLocals.values()) { - for (let _values = Map_values(scopedLocals), i = 0, k = _values.length; i < k; ++i) { - let local = unchecked(_values[i]); - if (local.is(CommonFlags.SCOPED)) { // otherwise an alias - let localIndex = local.index; - if (flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { - if (finalize) flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED); - stmts.push( - this.makeRelease( - module.local_get(localIndex, local.type.toNativeType()), - local.type - ) - ); - } + var operandIndex = 0; + var thisType = signature.thisType; + if (thisType) { + if (thisType.isManaged) { + let operand = operands[0]; + let precomp = module.runExpression(operand, ExpressionRunnerFlags.Default); + if (!isConstZero(precomp)) { // otherwise unnecessary + operands[operandIndex] = module.tostack(operand); } } + ++operandIndex; } - } - - /** Performs any queued autoreleases in the specified flow and returns the given value. */ - performAutoreleasesWithValue( - /** Flow releasing its queued autoreleases. */ - flow: Flow, - /** Value to return. */ - valueExpr: ExpressionRef, - /** Type of the returned value. */ - valueType: Type, - /** Array of statements to append the releases to. */ - stmts: ExpressionRef[] | null = null, - /** Whether to finalize affected locals. */ - finalize: bool = true - ): ExpressionRef { - if (!stmts) stmts = new Array(); - stmts.push( - this.module.nop() - ); - var lengthBefore = stmts.length; - this.performAutoreleases(flow, stmts, finalize); - var module = this.module; - if (stmts.length > lengthBefore) { - let nativeType = valueType.toNativeType(); - let temp = flow.getTempLocal(valueType); - if (!flow.canOverflow(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); - if (flow.isNonnull(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - stmts[lengthBefore - 1] = module.local_set(temp.index, valueExpr); // nop -> set - stmts.push( - module.local_get(temp.index, nativeType) // append get - ); - let ret = module.flatten(stmts, nativeType); - flow.freeTempLocal(temp); - return ret; - } else if (stmts.length > 1) { - stmts[lengthBefore - 1] = valueExpr; // nop -> value - return module.flatten(stmts, valueType.toNativeType()); - } - return valueExpr; - } - - /** Finishes any queued autoreleases in the actual function of the specified flow. */ - finishAutoreleases( - /** Flow releasing its queued autoreleases. */ - flow: Flow, - /** Array of statements to append the releases to. */ - stmts: ExpressionRef[] - ): void { - // Differs from `performAutoreleases` in that concluding this flow also - // concludes all its parent flows, for example on a `return`. - if (flow.isInline) { - // Traverse to the top-most flow containing the inlined function's - // locals as scoped locals and release these instead of all the locals. - let current = flow; - let parent: Flow | null; - while (parent = current.parent) current = parent; - let scopedLocals = current.scopedLocals; - if (scopedLocals) { - // TODO: for (let local of scopedLocals.values()) { - for (let _values = Map_values(scopedLocals), i = 0, k = _values.length; i < k; ++i) { - let local = unchecked(_values[i]); - this.maybeFinishAutorelease(local, flow, stmts); + var parameterIndex = 0; + var parameterTypes = signature.parameterTypes; + assert(parameterTypes.length >= operands.length - operandIndex); + while (operandIndex < operands.length) { + let paramType = parameterTypes[parameterIndex]; + if (paramType.isManaged) { + let operand = operands[operandIndex]; + let precomp = module.runExpression(operand, ExpressionRunnerFlags.Default); + if (!isConstZero(precomp)) { // otherwise unnecessary + operands[operandIndex] = module.tostack(operand); } } - } else { - let localsByIndex = flow.parentFunction.localsByIndex; - for (let i = 0, k = localsByIndex.length; i < k; ++i) { - let local = unchecked(localsByIndex[i]); - this.maybeFinishAutorelease(local, flow, stmts); - } + ++operandIndex; + ++parameterIndex; } } - /** Finishes a single autorelease of the specified local. */ - private maybeFinishAutorelease( - /** Local to finish autoreleasing. */ - local: Local, - /** Flow releasing its queued autoreleases. */ - flow: Flow, - /** Array of statements to append the releases to. */ - stmts: ExpressionRef[] - ): void { - var localIndex = local.index; - var module = this.module; - if (~localIndex && flow.isAnyLocalFlag(localIndex, LocalFlags.ANY_RETAINED)) { - flow.unsetLocalFlag(localIndex, LocalFlags.ANY_RETAINED); - stmts.push( - this.makeRelease( - module.local_get(localIndex, local.type.toNativeType()), - local.type - ) - ); - } - } - - // - /** Creates a direct call to the specified function. */ makeCallDirect( instance: Function, operands: ExpressionRef[] | null, reportNode: Node, - immediatelyDropped: bool = false, - /** Skip the usual autorelease and manage this at the callsite instead. */ - skipAutorelease: bool = false + immediatelyDropped: bool = false ): ExpressionRef { if (instance.hasDecorator(DecoratorFlags.INLINE)) { if (!instance.is(CommonFlags.VIRTUAL)) { @@ -7689,14 +7027,6 @@ export class Compiler extends DiagnosticEmitter { } else { expr = this.makeCallInline(instance, operands, 0, immediatelyDropped); } - let returnType = this.currentType; - if (returnType.isManaged) { - if (!skipAutorelease) { - expr = this.makeAutorelease(expr, returnType); - } else { - this.skippedAutoreleases.add(expr); - } - } inlineStack.pop(); return expr; } @@ -7770,37 +7100,31 @@ export class Compiler extends DiagnosticEmitter { operands.push(this.makeZero(parameterTypes[i], instance.declaration)); allOptionalsAreConstant = false; } - if (!allOptionalsAreConstant) { - if (!instance.is(CommonFlags.MODULE_IMPORT)) { - let original = instance; - instance = this.ensureVarargsStub(instance); - if (!this.compileFunction(instance)) return module.unreachable(); - instance.flow.flags = original.flow.flags; - let nativeReturnType = returnType.toNativeType(); - // We know the last operand is optional and omitted, so inject setting - // ~argumentsLength into that operand, which is always safe. - let lastOperand = operands[maxOperands - 1]; - assert(!(getSideEffects(lastOperand) & SideEffects.WritesGlobal)); - let lastOperandType = parameterTypes[maxArguments - 1]; - operands[maxOperands - 1] = module.block(null, [ - module.global_set(BuiltinNames.argumentsLength, module.i32(numArguments)), - lastOperand - ], lastOperandType.toNativeType()); - let expr = module.call(instance.internalName, operands, nativeReturnType); + if (!allOptionalsAreConstant && !instance.is(CommonFlags.MODULE_IMPORT)) { + let original = instance; + instance = this.ensureVarargsStub(instance); + if (!this.compileFunction(instance)) return module.unreachable(); + instance.flow.flags = original.flow.flags; + let nativeReturnType = returnType.toNativeType(); + // We know the last operand is optional and omitted, so inject setting + // ~argumentsLength into that operand, which is always safe. + let lastOperand = operands[maxOperands - 1]; + assert(!(getSideEffects(lastOperand) & SideEffects.WritesGlobal)); + let lastOperandType = parameterTypes[maxArguments - 1]; + operands[maxOperands - 1] = module.block(null, [ + module.global_set(BuiltinNames.argumentsLength, module.i32(numArguments)), + lastOperand + ], lastOperandType.toNativeType()); + this.operandsTostack(instance.signature, operands); + let expr = module.call(instance.internalName, operands, nativeReturnType); + if (returnType != Type.void && immediatelyDropped) { + expr = module.drop(expr); + this.currentType = Type.void; + } else { this.currentType = returnType; - if (returnType.isManaged) { - if (immediatelyDropped) { - expr = this.makeRelease(expr, returnType); - this.currentType = Type.void; - } else if (!skipAutorelease) { - expr = this.makeAutorelease(expr, returnType); - } else { - this.skippedAutoreleases.add(expr); - } - } - this.ensureArgumentsLength(); - return expr; } + this.ensureArgumentsLength(); + return expr; } } @@ -7809,19 +7133,9 @@ export class Compiler extends DiagnosticEmitter { instance = this.ensureVirtualStub(instance); } - // If the return value is of a reference type it has not yet been released but is in flight - // which is equivalent to a skipped autorelease. Hence, insert either a release if it is - // dropped anyway, preserve the skipped autorelease if explicitly requested or autorelease now. + if (operands) this.operandsTostack(instance.signature, operands); var expr = module.call(instance.internalName, operands, returnType.toNativeType()); this.currentType = returnType; - if (returnType.isManaged) { - if (immediatelyDropped) { - expr = this.makeRelease(expr, returnType); - this.currentType = Type.void; - } else if (!skipAutorelease) { - expr = this.makeAutorelease(expr, returnType); - } - } return expr; } @@ -7911,7 +7225,7 @@ export class Compiler extends DiagnosticEmitter { let flow = this.currentFlow; let temp = flow.getTempLocal(this.options.usizeType, findUsedLocals(indexArg)); indexArg = module.block(null, [ - module.local_set(temp.index, indexArg), + module.local_set(temp.index, indexArg, true), // Function module.global_set(BuiltinNames.argumentsLength, module.i32(numArguments)), module.local_get(temp.index, nativeSizeType) ], nativeSizeType); @@ -7922,6 +7236,7 @@ export class Compiler extends DiagnosticEmitter { indexArg ], nativeSizeType); } + if (operands) this.operandsTostack(signature, operands); var expr = module.call_indirect( nativeSizeType == NativeType.I64 ? module.unary(UnaryOp.WrapI64, @@ -7933,14 +7248,6 @@ export class Compiler extends DiagnosticEmitter { signature.nativeResults ); this.currentType = returnType; - if (returnType.isManaged) { - if (immediatelyDropped) { - expr = this.makeRelease(expr, returnType); - this.currentType = Type.void; - } else { - expr = this.makeAutorelease(expr, returnType); - } - } return expr; } @@ -8114,15 +7421,19 @@ export class Compiler extends DiagnosticEmitter { signature, contextualTypeArguments ); - if (!this.compileFunction(instance)) return this.module.unreachable(); + instance.flow.outer = flow; + let worked = this.compileFunction(instance); this.currentType = contextualSignature.type; + if (!worked) return this.module.unreachable(); // otherwise compile like a normal function } else { instance = this.resolver.resolveFunction(prototype, null, contextualTypeArguments); if (!instance) return this.module.unreachable(); - this.compileFunction(instance); + instance.flow.outer = flow; + let worked = this.compileFunction(instance); this.currentType = instance.signature.type; + if (!worked) return this.module.unreachable(); } var offset = this.ensureRuntimeFunction(instance); // reports @@ -8358,7 +7669,7 @@ export class Compiler extends DiagnosticEmitter { if (!functionInstance || !this.compileFunction(functionInstance)) return module.unreachable(); if (contextualType.isExternalReference) { this.currentType = Type.funcref; - return module.ref_func(functionInstance.internalName); + return module.ref_func(functionInstance.internalName, NativeType.Funcref); // TODO } let offset = this.ensureRuntimeFunction(functionInstance); this.currentType = functionInstance.signature.type; @@ -8452,7 +7763,7 @@ export class Compiler extends DiagnosticEmitter { nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_tee(temp.index, expr), + module.local_tee(temp.index, expr, actualType.isManaged), ), module.i32(0), this.makeCallDirect(instanceofInstance, [ @@ -8498,7 +7809,7 @@ export class Compiler extends DiagnosticEmitter { nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_tee(temp.index, expr), + module.local_tee(temp.index, expr, actualType.isManaged), ), module.i32(0), this.makeCallDirect(instanceofInstance, [ @@ -8635,14 +7946,7 @@ export class Compiler extends DiagnosticEmitter { expression: StringLiteralExpression, constraints: Constraints ): ExpressionRef { - var expr = this.ensureStaticString(expression.value); - if (constraints & Constraints.WILL_RETAIN) { - this.skippedAutoreleases.add(expr); - } else { - // not necessary since this is static data anyway - // expr = this.makeAutorelease(expr, this.currentType); - } - return expr; + return this.ensureStaticString(expression.value); } private compileArrayLiteral( @@ -8678,13 +7982,10 @@ export class Compiler extends DiagnosticEmitter { var length = expressions.length; var values = new Array(length); var isStatic = !elementType.isExternalReference; - var nativeElementType = elementType.toNativeType(); for (let i = 0; i < length; ++i) { let elementExpression = expressions[i]; if (elementExpression.kind != NodeKind.OMITTED) { - let expr = this.compileExpression(elementExpression, elementType, - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); + let expr = this.compileExpression(elementExpression, elementType, Constraints.CONV_IMPLICIT); let precomp = module.runExpression(expr, ExpressionRunnerFlags.PreserveSideeffects); if (precomp) { expr = precomp; @@ -8730,21 +8031,13 @@ export class Compiler extends DiagnosticEmitter { : module.i32(i64_low(bufferAddress)) ], expression); this.currentType = arrayType; - expr = this.makeRetain(expr, arrayType); - if (arrayType.isManaged) { - if (!(constraints & Constraints.WILL_RETAIN)) { - expr = this.makeAutorelease(expr, arrayType); - } else { - this.skippedAutoreleases.add(expr); - } - } return expr; } } // otherwise compile an explicit instantiation with indexed sets - var setter = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true); - if (!setter) { + var indexedSet = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true); + if (!indexedSet) { flow.freeTempLocal(tempThis); flow.freeTempLocal(tempDataStart); this.error( @@ -8760,19 +8053,17 @@ export class Compiler extends DiagnosticEmitter { // tempThis = __newArray(length, alignLog2, classId, source = 0) stmts.push( module.local_set(tempThis.index, - this.makeRetain( - this.makeCallDirect(program.newArrayInstance, [ - module.i32(length), - program.options.isWasm64 - ? module.i64(elementType.alignLog2) - : module.i32(elementType.alignLog2), - module.i32(arrayInstance.id), - program.options.isWasm64 - ? module.i64(0) - : module.i32(0) - ], expression), - arrayType - ) + this.makeCallDirect(program.newArrayInstance, [ + module.i32(length), + program.options.isWasm64 + ? module.i64(elementType.alignLog2) + : module.i32(elementType.alignLog2), + module.i32(arrayInstance.id), + program.options.isWasm64 + ? module.i64(0) + : module.i32(0) + ], expression), + arrayType.isManaged ) ); // tempData = tempThis.dataStart @@ -8784,26 +8075,18 @@ export class Compiler extends DiagnosticEmitter { module.local_get(tempThis.index, nativeArrayType), nativeArrayType, (dataStartMember).memoryOffset - ) + ), + true // ArrayBuffer ) ); - var isManaged = elementType.isManaged; - for (let i = 0, alignLog2 = elementType.alignLog2; i < length; ++i) { - let valueExpr = values[i]; - if (isManaged) { - // value = __retain(value) - if (!this.skippedAutoreleases.has(valueExpr)) { - valueExpr = this.makeRetain(valueExpr, elementType); - } - } - // store(tempData, value, immOffset) + for (let i = 0; i < length; ++i) { + // this[i] = value stmts.push( - module.store(elementType.byteSize, - module.local_get(tempDataStart.index, nativeArrayType), - valueExpr, - nativeElementType, - i << alignLog2 - ) + module.call(indexedSet.internalName, [ + module.local_get(tempThis.index, nativeArrayType), + module.i32(i), + values[i] + ], NativeType.None) ); } // -> tempThis @@ -8812,16 +8095,9 @@ export class Compiler extends DiagnosticEmitter { ); flow.freeTempLocal(tempThis); flow.freeTempLocal(tempDataStart); + if (length) this.compileFunction(indexedSet); this.currentType = arrayType; - var expr = module.flatten(stmts, nativeArrayType); - if (arrayType.isManaged) { - if (constraints & Constraints.WILL_RETAIN) { - this.skippedAutoreleases.add(expr); - } else { - expr = this.makeAutorelease(expr, arrayType, this.currentFlow); - } - } - return expr; + return module.flatten(stmts, nativeArrayType); } /** Compiles a special `fixed` array literal. */ @@ -8847,14 +8123,11 @@ export class Compiler extends DiagnosticEmitter { var expressions = expression.elementExpressions; var length = expressions.length; var values = new Array(length); - var nativeElementType = elementType.toNativeType(); var isStatic = !elementType.isExternalReference; for (let i = 0; i < length; ++i) { let elementExpression = expressions[i]; if (elementExpression.kind != NodeKind.OMITTED) { - let expr = this.compileExpression(elementExpression, elementType, - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); + let expr = this.compileExpression(elementExpression, elementType, Constraints.CONV_IMPLICIT); let precomp = module.runExpression(expr, ExpressionRunnerFlags.PreserveSideeffects); if (precomp) { expr = precomp; @@ -8882,45 +8155,29 @@ export class Compiler extends DiagnosticEmitter { let expr = this.options.isWasm64 ? module.i64(i64_low(bufferAddress), i64_high(bufferAddress)) : module.i32(i64_low(bufferAddress)); - if (constraints & Constraints.WILL_RETAIN) { - this.skippedAutoreleases.add(expr); - } else { - // not necessary since this is static data anyway - // expr = this.makeAutorelease(expr, arrayType, flow); - } this.currentType = arrayType; return expr; // otherwise allocate a new chunk of memory and return a copy of the buffer } else { // __newBuffer(bufferSize, id, buffer) - let expr = this.makeRetain( - this.makeCallDirect(program.newBufferInstance, [ - isWasm64 - ? module.i64(bufferSize) - : module.i32(bufferSize), - module.i32(arrayInstance.id), - isWasm64 - ? module.i64(i64_low(bufferAddress), i64_high(bufferAddress)) - : module.i32(i64_low(bufferAddress)) - ], expression), - program.arrayBufferInstance.type - ); - if (arrayType.isManaged) { - if (constraints & Constraints.WILL_RETAIN) { - this.skippedAutoreleases.add(expr); - } else { - expr = this.makeAutorelease(expr, arrayType); - } - } + let expr = this.makeCallDirect(program.newBufferInstance, [ + isWasm64 + ? module.i64(bufferSize) + : module.i32(bufferSize), + module.i32(arrayInstance.id), + isWasm64 + ? module.i64(i64_low(bufferAddress), i64_high(bufferAddress)) + : module.i32(i64_low(bufferAddress)) + ], expression); this.currentType = arrayType; return expr; } } // otherwise compile an explicit instantiation with indexed sets - var setter = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true); - if (!setter) { + var indexedSet = arrayInstance.lookupOverload(OperatorKind.INDEXED_SET, true); + if (!indexedSet) { flow.freeTempLocal(tempThis); this.error( DiagnosticCode.Index_signature_in_type_0_only_permits_reading, @@ -8935,34 +8192,23 @@ export class Compiler extends DiagnosticEmitter { // tempThis = __newBuffer(bufferSize, classId) stmts.push( module.local_set(tempThis.index, - this.makeRetain( - this.makeCallDirect(program.newBufferInstance, [ - isWasm64 - ? module.i64(bufferSize) - : module.i32(bufferSize), - module.i32(arrayInstance.id) - ], expression), - program.arrayBufferInstance.type - ) + this.makeCallDirect(program.newBufferInstance, [ + isWasm64 + ? module.i64(bufferSize) + : module.i32(bufferSize), + module.i32(arrayInstance.id) + ], expression), + arrayType.isManaged ) ); - var isManaged = elementType.isManaged; - for (let i = 0, alignLog2 = elementType.alignLog2; i < length; ++i) { - let valueExpr = values[i]; - if (isManaged) { - // value = __retain(value) - if (!this.skippedAutoreleases.has(valueExpr)) { - valueExpr = this.makeRetain(valueExpr, elementType); - } - } - // store(tempThis, value, immOffset) + for (let i = 0; i < length; ++i) { + // array[i] = value stmts.push( - module.store(elementType.byteSize, + module.call(indexedSet.internalName, [ module.local_get(tempThis.index, nativeArrayType), - valueExpr, - nativeElementType, - i << alignLog2 - ) + module.i32(i), + values[i] + ], NativeType.None) ); } // -> tempThis @@ -8970,16 +8216,9 @@ export class Compiler extends DiagnosticEmitter { module.local_get(tempThis.index, nativeArrayType) ); flow.freeTempLocal(tempThis); + if (length) this.compileFunction(indexedSet); this.currentType = arrayType; - var expr = module.flatten(stmts, nativeArrayType); - if (arrayType.isManaged) { - if (constraints & Constraints.WILL_RETAIN) { - this.skippedAutoreleases.add(expr); - } else { - expr = this.makeAutorelease(expr, arrayType, this.currentFlow); - } - } - return expr; + return module.flatten(stmts, nativeArrayType); } private compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef { @@ -9027,9 +8266,7 @@ export class Compiler extends DiagnosticEmitter { var hasErrors = false; var exprs = new Array(); var flow = this.currentFlow; - var tempLocal = isManaged - ? flow.getAutoreleaseLocal(classType) - : flow.getTempLocal(classType); + var tempLocal = flow.getTempLocal(classType); var nativeClassType = classType.toNativeType(); assert(numNames == values.length); @@ -9076,19 +8313,14 @@ export class Compiler extends DiagnosticEmitter { let fieldInstance = member; let fieldType = fieldInstance.type; - let expr = this.compileExpression(values[i], fieldType, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN); - if (fieldType.isManaged && !this.skippedAutoreleases.has(expr)) { - expr = this.makeRetain(expr, fieldType); - } + let expr = this.compileExpression(values[i], fieldType, Constraints.CONV_IMPLICIT); exprs.push( - module.store( // TODO: handle setters as well - fieldType.byteSize, + module.call(fieldInstance.internalSetterName, [ module.local_get(tempLocal.index, nativeClassType), - expr, - fieldType.toNativeType(), - fieldInstance.memoryOffset - ) + expr + ], NativeType.None) ); + this.compileFieldSetter(fieldInstance); // This member is no longer omitted, so delete from our omitted fields omittedFields.delete(fieldInstance); @@ -9132,14 +8364,12 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.F32: case TypeKind.F64: { exprs.push( - module.store( // TODO: handle setters as well - fieldType.byteSize, + module.call(fieldInstance.internalSetterName, [ module.local_get(tempLocal.index, nativeClassType), - this.makeZero(fieldType, expression), - fieldType.toNativeType(), - fieldInstance.memoryOffset - ) + this.makeZero(fieldType, expression) + ], NativeType.None) ); + this.compileFieldSetter(fieldInstance); continue; } } @@ -9161,7 +8391,8 @@ export class Compiler extends DiagnosticEmitter { // allocate a new instance first and assign 'this' to the temp. local exprs.unshift( module.local_set(tempLocal.index, - this.compileInstantiate(ctor, [], Constraints.WILL_RETAIN, expression) + this.compileInstantiate(ctor, [], Constraints.NONE, expression), + classType.isManaged ) ); @@ -9306,22 +8537,14 @@ export class Compiler extends DiagnosticEmitter { let stmts = new Array(); // { - // if (!this) this = + // this = // IF_DERIVED: this = super(this, ...args) // this.a = X // this.b = Y // return this // } - let allocExpr = this.makeAllocation(classInstance); - let classType = classInstance.type; - if (classType.isManaged) allocExpr = this.makeRetain(allocExpr, classType); stmts.push( - module.if( - module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_get(0, nativeSizeType) - ), - module.local_set(0, allocExpr) - ) + this.makeConditionalAllocation(classInstance, 0) ); if (baseClass) { let parameterTypes = signature.parameterTypes; @@ -9333,12 +8556,15 @@ export class Compiler extends DiagnosticEmitter { } stmts.push( module.local_set(0, - this.makeCallDirect(assert(baseClass.constructorInstance), operands, reportNode, false, true) + this.makeCallDirect(assert(baseClass.constructorInstance), operands, reportNode, false), + baseClass.type.isManaged ) ); } this.makeFieldInitializationInConstructor(classInstance, stmts); - let body = this.performAutoreleasesWithValue(flow, module.local_get(0, nativeSizeType), classInstance.type, stmts); + stmts.push( + module.local_get(0, nativeSizeType) + ); flow.freeScopedLocals(); this.currentFlow = previousFlow; @@ -9350,7 +8576,13 @@ export class Compiler extends DiagnosticEmitter { if (numLocals > numOperands) { for (let i = numOperands; i < numLocals; ++i) varTypes.push(locals[i].type.toNativeType()); } - let funcRef = module.addFunction(instance.internalName, signature.nativeParams, signature.nativeResults, varTypes, body); + let funcRef = module.addFunction( + instance.internalName, + signature.nativeParams, + signature.nativeResults, + varTypes, + module.flatten(stmts, nativeSizeType) + ); instance.finalize(module, funcRef); } @@ -9424,7 +8656,7 @@ export class Compiler extends DiagnosticEmitter { assert(parent.kind == ElementKind.CLASS); var classInstance = parent; if (classInstance.type.isUnmanaged || ctorInstance.hasDecorator(DecoratorFlags.UNSAFE)) this.checkUnsafe(reportNode); - var expr = this.compileCallDirect( // no need for another autoreleased local + var expr = this.compileCallDirect( ctorInstance, argumentExpressions, reportNode, @@ -9603,22 +8835,18 @@ export class Compiler extends DiagnosticEmitter { return module.maybeDropCondition(condExpr, this.compileExpression(ifElse, ctxType)); } - var inheritedConstraints = constraints & Constraints.WILL_RETAIN; - var outerFlow = this.currentFlow; var ifThenFlow = outerFlow.fork(); ifThenFlow.inheritNonnullIfTrue(condExpr); this.currentFlow = ifThenFlow; - var ifThenExpr = this.compileExpression(ifThen, ctxType, inheritedConstraints); + var ifThenExpr = this.compileExpression(ifThen, ctxType); var ifThenType = this.currentType; - var ifThenAutoreleaseSkipped = this.skippedAutoreleases.has(ifThenExpr); var ifElseFlow = outerFlow.fork(); ifElseFlow.inheritNonnullIfFalse(condExpr); this.currentFlow = ifElseFlow; - var ifElseExpr = this.compileExpression(ifElse, ctxType == Type.auto ? ifThenType : ctxType, inheritedConstraints); + var ifElseExpr = this.compileExpression(ifElse, ctxType == Type.auto ? ifThenType : ctxType); var ifElseType = this.currentType; - var ifElseAutoreleaseSkipped = this.skippedAutoreleases.has(ifElseExpr); var commonType = Type.commonDenominator(ifThenType, ifElseType, false); if (!commonType) { @@ -9635,41 +8863,13 @@ export class Compiler extends DiagnosticEmitter { ifElseType = commonType; this.currentType = commonType; - if (ifThenAutoreleaseSkipped != ifElseAutoreleaseSkipped) { // unify to both skipped - if (!ifThenAutoreleaseSkipped) { - ifThenExpr = this.makeRetain(ifThenExpr, ifThenType); - ifThenAutoreleaseSkipped = true; - } else { - ifElseExpr = this.makeRetain(ifElseExpr, ifElseType); - ifElseAutoreleaseSkipped = true; - } - } else if (!ifThenAutoreleaseSkipped && commonType.isManaged) { // keep alive a little longer - if (constraints & Constraints.WILL_RETAIN) { // try to undo both - let ifThenIndex = this.tryUndoAutorelease(ifThenExpr, ifThenFlow); - if (ifThenIndex == -1) ifThenExpr = this.makeRetain(ifThenExpr, ifThenType); - let ifElseIndex = this.tryUndoAutorelease(ifElseExpr, ifElseFlow); - if (ifElseIndex == -1) ifElseExpr = this.makeRetain(ifElseExpr, ifElseType); - ifThenAutoreleaseSkipped = true; - ifElseAutoreleaseSkipped = true; - } else { - ifThenExpr = this.delayAutorelease(ifThenExpr, ifThenType, ifThenFlow, outerFlow); - ifElseExpr = this.delayAutorelease(ifElseExpr, ifElseType, ifElseFlow, outerFlow); - } - } - - ifThenExpr = this.performAutoreleasesWithValue(ifThenFlow, ifThenExpr, commonType); ifThenFlow.freeScopedLocals(); - - ifElseExpr = this.performAutoreleasesWithValue(ifElseFlow, ifElseExpr, commonType); ifElseFlow.freeScopedLocals(); this.currentFlow = outerFlow; outerFlow.inheritMutual(ifThenFlow, ifElseFlow); - var expr = module.if(condExpr, ifThenExpr, ifElseExpr); - assert(ifThenAutoreleaseSkipped == ifElseAutoreleaseSkipped); - if (ifThenAutoreleaseSkipped) this.skippedAutoreleases.add(expr); - return expr; + return module.if(condExpr, ifThenExpr, ifElseExpr); } private compileUnaryPostfixExpression( @@ -9697,7 +8897,8 @@ export class Compiler extends DiagnosticEmitter { tempLocal = flow.getTempLocal(this.currentType); getValue = module.local_tee( tempLocal.index, - getValue + getValue, + this.currentType.isManaged ); } @@ -10636,7 +9837,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.U64: { return module.binary(BinaryOp.NeI64, expr, module.i64(0)); } - case TypeKind.USIZE: if (type.isManaged && this.skippedAutoreleases.has(expr)) expr = this.makeAutorelease(expr, type); + case TypeKind.USIZE: case TypeKind.ISIZE: { return type.size == 64 ? module.binary(BinaryOp.NeI64, expr, module.i64(0)) @@ -10718,6 +9919,26 @@ export class Compiler extends DiagnosticEmitter { } } + /** Makes a conditional allocation where `this` might not have been initialized yet. */ + makeConditionalAllocation( + classInstance: Class, + thisIndex: i32 + ): ExpressionRef { + var module = this.module; + var classType = classInstance.type; + var nativeClassType = classType.toNativeType(); + assert(nativeClassType == this.options.nativeSizeType); + return module.if( + module.unary(nativeClassType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, + module.local_get(thisIndex, nativeClassType) + ), + module.local_set(thisIndex, + this.makeAllocation(classInstance), + classInstance.type.isManaged + ) + ); + } + /** Makes the initializers for a class's fields within the constructor. */ makeFieldInitializationInConstructor( /** Class being initialized. */ @@ -10763,29 +9984,22 @@ export class Compiler extends DiagnosticEmitter { : 1 + parameterIndex, // this is local 0 nativeFieldType ); - if (fieldType.isManaged) initExpr = this.makeRetain(initExpr, fieldType); // fall back to use initializer if present } else if (initializerNode) { - initExpr = this.compileExpression(initializerNode, fieldType, - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); - if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) { - initExpr = this.makeRetain(initExpr, fieldType); - } + initExpr = this.compileExpression(initializerNode, fieldType, Constraints.CONV_IMPLICIT); // otherwise initialize with zero } else { initExpr = this.makeZero(fieldType, fieldPrototype.declaration); } + this.compileFieldSetter(field); stmts.push( - module.store(fieldType.byteSize, + module.call(field.internalSetterName, [ module.local_get(thisLocalIndex, nativeSizeType), - initExpr, - nativeFieldType, - field.memoryOffset - ) + initExpr + ], NativeType.None) ); } return stmts; @@ -10805,11 +10019,7 @@ export class Compiler extends DiagnosticEmitter { var stringInstance = program.stringInstance; var messageArg: ExpressionRef; if (message !== null) { - // The message argument works much like an arm of an IF that does not become executed if the - // assertion succeeds respectively is only being computed if the program actually crashes. - // Hence, let's make it so that the autorelease is skipped at the end of the current block, - // essentially ignoring the message GC-wise. Doesn't matter anyway on a crash. - messageArg = this.compileExpression(message, stringInstance.type, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN); + messageArg = this.compileExpression(message, stringInstance.type, Constraints.CONV_IMPLICIT); } else { messageArg = this.makeZero(stringInstance.type, codeLocation); } @@ -10861,7 +10071,7 @@ export class Compiler extends DiagnosticEmitter { if (!flow.canOverflow(expr, type)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); flow.setLocalFlag(temp.index, LocalFlags.NONNULL); expr = module.if( - module.local_tee(temp.index, expr), + module.local_tee(temp.index, expr, type.isManaged), module.local_get(temp.index, type.toNativeType()), this.makeStaticAbort(this.ensureStaticString("unexpected null"), reportNode) // TODO: throw ); @@ -10889,7 +10099,7 @@ export class Compiler extends DiagnosticEmitter { assert(this.compileFunction(instanceofInstance)); expr = module.if( module.call(instanceofInstance.internalName, [ - module.local_tee(temp.index, expr), + module.local_tee(temp.index, expr, type.isManaged), module.i32(toType.classReference!.id) ], NativeType.I32), module.local_get(temp.index, type.toNativeType()), diff --git a/src/diagnosticMessages.generated.ts b/src/diagnosticMessages.generated.ts index 3035ba2345..4969ff3e51 100644 --- a/src/diagnosticMessages.generated.ts +++ b/src/diagnosticMessages.generated.ts @@ -50,7 +50,6 @@ export enum DiagnosticCode { A_class_with_a_constructor_explicitly_returning_something_else_than_this_must_be_final = 231, Exported_generic_function_or_class_has_no_concrete_instances = 232, Property_0_is_always_assigned_before_being_used = 233, - Type_0_is_cyclic_Module_will_include_deferred_garbage_collection = 900, 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, @@ -229,7 +228,6 @@ export function diagnosticCodeToString(code: DiagnosticCode): string { case 231: return "A class with a constructor explicitly returning something else than 'this' must be '@final'."; case 232: return "Exported generic function or class has no concrete instances."; case 233: return "Property '{0}' is always assigned before being used."; - case 900: return "Type '{0}' is cyclic. Module will include deferred garbage collection."; 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."; diff --git a/src/diagnosticMessages.json b/src/diagnosticMessages.json index fa610788ae..28ea8baab1 100644 --- a/src/diagnosticMessages.json +++ b/src/diagnosticMessages.json @@ -44,7 +44,6 @@ "Exported generic function or class has no concrete instances.": 232, "Property '{0}' is always assigned before being used.": 233, - "Type '{0}' is cyclic. Module will include deferred garbage collection.": 900, "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, diff --git a/src/diagnostics.ts b/src/diagnostics.ts index adbb143da7..3fe2ecb821 100644 --- a/src/diagnostics.ts +++ b/src/diagnostics.ts @@ -17,7 +17,14 @@ import { } from "./diagnosticMessages.generated"; import { - isLineBreak + isLineBreak, + COLOR_CYAN, + COLOR_YELLOW, + COLOR_RED, + COLOR_MAGENTA, + COLOR_RESET, + isColorsEnabled, + setColorsEnabled } from "./util"; export { @@ -51,22 +58,11 @@ export function diagnosticCategoryToString(category: DiagnosticCategory): string } } -/** ANSI escape sequence for blue foreground. */ -export const COLOR_BLUE: string = "\u001b[96m"; -/** ANSI escape sequence for yellow foreground. */ -export const COLOR_YELLOW: string = "\u001b[93m"; -/** ANSI escape sequence for red foreground. */ -export const COLOR_RED: string = "\u001b[91m"; -/** ANSI escape sequence for magenta foreground. */ -export const COLOR_MAGENTA: string = "\u001b[95m"; -/** ANSI escape sequence to reset the foreground color. */ -export const COLOR_RESET: string = "\u001b[0m"; - /** Returns the ANSI escape sequence for the specified category. */ export function diagnosticCategoryToColor(category: DiagnosticCategory): string { switch (category) { case DiagnosticCategory.PEDANTIC: return COLOR_MAGENTA; - case DiagnosticCategory.INFO: return COLOR_BLUE; + case DiagnosticCategory.INFO: return COLOR_CYAN; case DiagnosticCategory.WARNING: return COLOR_YELLOW; case DiagnosticCategory.ERROR: return COLOR_RED; default: { @@ -182,12 +178,13 @@ export function formatDiagnosticMessage( useColors: bool = false, showContext: bool = false ): string { + var wasColorsEnabled = setColorsEnabled(useColors); // general information var sb: string[] = []; - if (useColors) sb.push(diagnosticCategoryToColor(message.category)); + if (isColorsEnabled()) sb.push(diagnosticCategoryToColor(message.category)); sb.push(diagnosticCategoryToString(message.category)); - if (useColors) sb.push(COLOR_RESET); + if (isColorsEnabled()) sb.push(COLOR_RESET); sb.push(message.code < 1000 ? " AS" : " TS"); sb.push(message.code.toString()); sb.push(": "); @@ -201,7 +198,7 @@ export function formatDiagnosticMessage( // include context information if requested if (showContext) { sb.push("\n"); - sb.push(formatDiagnosticContext(range, useColors)); + sb.push(formatDiagnosticContext(range)); } sb.push("\n"); sb.push(" in "); @@ -217,7 +214,7 @@ export function formatDiagnosticMessage( let relatedSource = relatedRange.source; if (showContext) { sb.push("\n"); - sb.push(formatDiagnosticContext(relatedRange, useColors)); + sb.push(formatDiagnosticContext(relatedRange)); } sb.push("\n"); sb.push(" in "); @@ -229,11 +226,12 @@ export function formatDiagnosticMessage( sb.push(")"); } } + setColorsEnabled(wasColorsEnabled); return sb.join(""); } /** Formats the diagnostic context for the specified range, optionally with terminal colors. */ -export function formatDiagnosticContext(range: Range, useColors: bool = false): string { +function formatDiagnosticContext(range: Range): string { var text = range.source.text; var len = text.length; var start = range.start; @@ -249,7 +247,7 @@ export function formatDiagnosticContext(range: Range, useColors: bool = false): sb.push(" "); start++; } - if (useColors) sb.push(COLOR_RED); + if (isColorsEnabled()) sb.push(COLOR_RED); if (range.start == range.end) { sb.push("^"); } else { @@ -261,7 +259,7 @@ export function formatDiagnosticContext(range: Range, useColors: bool = false): sb.push("~"); } } - if (useColors) sb.push(COLOR_RESET); + if (isColorsEnabled()) sb.push(COLOR_RESET); return sb.join(""); } diff --git a/src/flow.ts b/src/flow.ts index 14de918a64..7c9549aee1 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -65,9 +65,7 @@ import { getLocalSetIndex, getIfCondition, getConstValueI64High, - getUnaryValue, - getCallOperandAt, - traverse + getUnaryValue } from "./module"; import { @@ -165,16 +163,7 @@ export enum LocalFlags { /** Local is non-null. */ NONNULL = 1 << 2, /** Local is initialized. */ - INITIALIZED = 1 << 3, - /** Local is retained. */ - RETAINED = 1 << 4, - - /** Local must be conditionally retained. */ - CONDITIONALLY_RETAINED = 1 << 5, - - /** Any retained flag. */ - ANY_RETAINED = RETAINED - | CONDITIONALLY_RETAINED + INITIALIZED = 1 << 3 } /** Flags indicating the current state of a field. */ @@ -225,6 +214,8 @@ export class Flow { /** Parent flow. */ parent: Flow | null = null; + /** Outer flow. Only relevant for first-class functions. */ + outer: Flow | null = null; /** Flow flags indicating specific conditions. */ flags: FlowFlags = FlowFlags.NONE; /** The label we break to when encountering a continue statement. */ @@ -277,6 +268,7 @@ export class Flow { fork(resetBreakContext: bool = false): Flow { var branch = new Flow(this.parentFunction); branch.parent = this; + branch.outer = this.outer; if (resetBreakContext) { branch.flags = this.flags & ~( FlowFlags.BREAKS | @@ -347,17 +339,6 @@ export class Flow { return local; } - /** Gets a local that sticks around until this flow is exited, and then released. */ - getAutoreleaseLocal(type: Type, except: Set | null = null): Local { - var local = this.getTempLocal(type, except); - local.set(CommonFlags.SCOPED); - var scopedLocals = this.scopedLocals; - if (!scopedLocals) this.scopedLocals = scopedLocals = new Map(); - scopedLocals.set("~auto" + (this.parentFunction.nextAutoreleaseId++).toString(), local); - this.setLocalFlag(local.index, LocalFlags.RETAINED); - return local; - } - /** Frees the temporary local for reuse. */ freeTempLocal(local: Local): void { if (local.is(CommonFlags.INLINED)) return; @@ -460,27 +441,26 @@ export class Flow { /** Adds a new scoped alias for the specified local. For example `super` aliased to the `this` local. */ addScopedAlias(name: string, type: Type, index: i32, reportNode: Node | null = null): Local { var scopedLocals = this.scopedLocals; - if (!scopedLocals) this.scopedLocals = scopedLocals = new Map(); - else { - let existingLocal = scopedLocals.get(name); - if (existingLocal) { - if (reportNode) { - if (!existingLocal.declaration.range.source.isNative) { - this.parentFunction.program.errorRelated( - DiagnosticCode.Duplicate_identifier_0, - reportNode.range, - existingLocal.declaration.name.range, - name - ); - } else { - this.parentFunction.program.error( - DiagnosticCode.Duplicate_identifier_0, - reportNode.range, name - ); - } + if (!scopedLocals) { + this.scopedLocals = scopedLocals = new Map(); + } else if (scopedLocals.has(name)) { + let existingLocal = assert(scopedLocals.get(name)); + if (reportNode) { + if (!existingLocal.declaration.range.source.isNative) { + this.parentFunction.program.errorRelated( + DiagnosticCode.Duplicate_identifier_0, + reportNode.range, + existingLocal.declaration.name.range, + name + ); + } else { + this.parentFunction.program.error( + DiagnosticCode.Duplicate_identifier_0, + reportNode.range, name + ); } - return existingLocal; } + return existingLocal; } assert(index < this.parentFunction.localsByIndex.length); var scopedAlias = new Local(name, index, type, this.parentFunction); @@ -774,24 +754,12 @@ export class Flow { for (let i = 0; i < maxLocalFlags; ++i) { let thisFlags = i < numThisLocalFlags ? thisLocalFlags[i] : 0; let otherFlags = i < numOtherLocalFlags ? otherLocalFlags[i] : 0; - let newFlags = thisFlags & otherFlags & ( + thisLocalFlags[i] = thisFlags & otherFlags & ( LocalFlags.CONSTANT | LocalFlags.WRAPPED | LocalFlags.NONNULL | LocalFlags.INITIALIZED ); - if (thisFlags & LocalFlags.RETAINED) { - if (otherFlags & LocalFlags.RETAINED) { - newFlags |= LocalFlags.RETAINED; - } else { - newFlags |= LocalFlags.CONDITIONALLY_RETAINED; - } - } else if (otherFlags & LocalFlags.RETAINED) { - newFlags |= LocalFlags.CONDITIONALLY_RETAINED; - } else { - newFlags |= (thisFlags | otherFlags) & LocalFlags.CONDITIONALLY_RETAINED; - } - thisLocalFlags[i] = newFlags; } // field flags do not matter here since there's only INITIALIZED, which can @@ -912,24 +880,12 @@ export class Flow { for (let i = 0; i < maxLocalFlags; ++i) { let leftFlags = i < numLeftLocalFlags ? leftLocalFlags[i] : 0; let rightFlags = i < numRightLocalFlags ? rightLocalFlags[i] : 0; - let newFlags = leftFlags & rightFlags & ( + thisLocalFlags[i] = leftFlags & rightFlags & ( LocalFlags.CONSTANT | LocalFlags.WRAPPED | LocalFlags.NONNULL | LocalFlags.INITIALIZED ); - if (leftFlags & LocalFlags.RETAINED) { - if (rightFlags & LocalFlags.RETAINED) { - newFlags |= LocalFlags.RETAINED; - } else { - newFlags |= LocalFlags.CONDITIONALLY_RETAINED; - } - } else if (rightFlags & LocalFlags.RETAINED) { - newFlags |= LocalFlags.CONDITIONALLY_RETAINED; - } else { - newFlags |= (leftFlags | rightFlags) & LocalFlags.CONDITIONALLY_RETAINED; - } - thisLocalFlags[i] = newFlags; } } @@ -990,11 +946,6 @@ export class Flow { if (this.isLocalFlag(i, LocalFlags.NONNULL) != other.isLocalFlag(i, LocalFlags.NONNULL)) { this.unsetLocalFlag(i, LocalFlags.NONNULL); // assume possibly null } - assert( - // having different retain states would be a problem because the compiler - // either can't release a retained local or would release a non-retained local - this.isAnyLocalFlag(i, LocalFlags.ANY_RETAINED) == other.isAnyLocalFlag(i, LocalFlags.ANY_RETAINED) - ); } } @@ -1123,15 +1074,6 @@ export class Flow { } break; } - case ExpressionId.Call: { - let name = getCallTarget(expr); - let program = this.parentFunction.program; - if (name == program.retainInstance.internalName) { - // __retain just passes through the argument - this.inheritNonnullIfTrue(getCallOperandAt(expr, 0), iff); - } - break; - } } } @@ -1513,23 +1455,4 @@ function canConversionOverflow(fromType: Type, toType: Type): bool { ); } -/** Finds all indexes of locals used in the specified expression. */ -export function findUsedLocals(expr: ExpressionRef, used: Set = new Set()): Set { - traverse(expr, used, findUsedLocalsVisit); - return used; -} - -/** A visitor function for use with `traverse` that finds all indexes of used locals. */ -function findUsedLocalsVisit(expr: ExpressionRef, used: Set): void { - switch (getExpressionId(expr)) { - case ExpressionId.LocalGet: { - used.add(getLocalGetIndex(expr)); - break; - } - case ExpressionId.LocalSet: { - used.add(getLocalSetIndex(expr)); - // fall-through for value - } - default: traverse(expr, used, findUsedLocalsVisit); - } -} +export { findUsedLocals } from "./passes/findusedlocals"; diff --git a/src/glue/binaryen.d.ts b/src/glue/binaryen.d.ts index 8954c6f51b..8e5980b139 100644 --- a/src/glue/binaryen.d.ts +++ b/src/glue/binaryen.d.ts @@ -790,10 +790,16 @@ export declare function _BinaryenRefIsNull(module: BinaryenModuleRef, valueExpr: export declare function _BinaryenRefIsNullGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenRefIsNullSetValue(expr: BinaryenExpressionRef, valueExpr: BinaryenExpressionRef): void; -export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString): BinaryenExpressionRef; +export declare function _BinaryenRefFunc(module: BinaryenModuleRef, funcName: BinaryenString, type: BinaryenType): BinaryenExpressionRef; export declare function _BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef): BinaryenString; export declare function _BinaryenRefFuncSetFunc(expr: BinaryenExpressionRef, funcName: BinaryenString): void; +export declare function _BinaryenRefEq(module: BinaryenModuleRef, leftExpr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefEqGetLeft(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefEqSetLeft(expr: BinaryenExpressionRef, leftExpr: BinaryenExpressionRef): void; +export declare function _BinaryenRefEqGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef; +export declare function _BinaryenRefEqSetRight(expr: BinaryenExpressionRef, rightExpr: BinaryenExpressionRef): void; + export declare function _BinaryenTry(module: BinaryenModuleRef, bodyExpr: BinaryenExpressionRef, catchBodyExpr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenTryGetBody(expr: BinaryenExpressionRef): BinaryenExpressionRef; export declare function _BinaryenTrySetBody(expr: BinaryenExpressionRef, bodyExpr: BinaryenExpressionRef): void; @@ -870,21 +876,28 @@ export declare function _BinaryenAddGlobalImport(module: BinaryenModuleRef, inte export declare function _BinaryenAddEventImport(module: BinaryenModuleRef, internalName: BinaryenString, externalModuleName: BinaryenString, externalBaseName: BinaryenString, attribute: u32, params: BinaryenType, results: BinaryenType): void; type BinaryenExportRef = usize; +type BinaryenExternalKind = u32; export declare function _BinaryenAddFunctionExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; export declare function _BinaryenAddTableExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; export declare function _BinaryenAddMemoryExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; export declare function _BinaryenAddGlobalExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; export declare function _BinaryenAddEventExport(module: BinaryenModuleRef, internalName: BinaryenString, externalName: BinaryenString): BinaryenExportRef; +export declare function _BinaryenGetExport(module: BinaryenModuleRef, externalName: BinaryenString): BinaryenExportRef; export declare function _BinaryenRemoveExport(module: BinaryenModuleRef, externalName: BinaryenString): void; export declare function _BinaryenGetNumExports(module: BinaryenModuleRef): BinaryenIndex; export declare function _BinaryenGetExportByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenExportRef; +export declare function _BinaryenExportGetKind(ref: BinaryenExportRef): BinaryenExternalKind; +export declare function _BinaryenExportGetName(ref: BinaryenExportRef): BinaryenString; +export declare function _BinaryenExportGetValue(ref: BinaryenExportRef): BinaryenString; type BinaryenGlobalRef = usize; export declare function _BinaryenAddGlobal(module: BinaryenModuleRef, name: BinaryenString, type: BinaryenType, mutable: bool, init: BinaryenExpressionRef): BinaryenGlobalRef; export declare function _BinaryenGetGlobal(module: BinaryenModuleRef, name: BinaryenString): BinaryenGlobalRef; export declare function _BinaryenRemoveGlobal(module: BinaryenModuleRef, name: BinaryenString): void; +export declare function _BinaryenGetNumGlobals(module: BinaryenModuleRef): BinaryenIndex; +export declare function _BinaryenGetGlobalByIndex(module: BinaryenModuleRef, index: BinaryenIndex): BinaryenGlobalRef; export declare function _BinaryenGlobalGetName(global: BinaryenGlobalRef): BinaryenString; export declare function _BinaryenGlobalGetType(global: BinaryenGlobalRef): BinaryenType; diff --git a/src/index.ts b/src/index.ts index 6082cfc53c..9ae88ab49d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -129,6 +129,19 @@ 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; +} + /** Sign extension operations. */ export const FEATURE_SIGN_EXTENSION = Feature.SIGN_EXTENSION; /** Mutable global imports and exports. */ diff --git a/src/module.ts b/src/module.ts index 68d47fca64..203afc707d 100644 --- a/src/module.ts +++ b/src/module.ts @@ -8,6 +8,7 @@ * @license Apache-2.0 */ +import { BuiltinNames } from "./builtins"; import { Target } from "./common"; import * as binaryen from "./glue/binaryen"; @@ -21,6 +22,7 @@ export type ExportRef = usize; export type RelooperRef = usize; export type RelooperBlockRef = usize; export type Index = u32; +export type CString = usize; // The following constants must be updated by running scripts/update-constants. // This is necessary because the functions are not yet callable with Binaryen @@ -112,7 +114,30 @@ export enum ExpressionId { Rethrow = 47 /* _BinaryenRethrowId */, BrOnExn = 48 /* _BinaryenBrOnExnId */, TupleMake = 49 /* _BinaryenTupleMakeId */, - TupleExtract = 50 /* _BinaryenTupleExtractId */ + TupleExtract = 50, /* _BinaryenTupleExtractId */ + I31New = 51, /* _BinaryenI32NewId */ + I31Get = 52, /* _BinaryenI31GetId */ + CallRef = 53, /* _BinaryenCallRefId */ + RefTest = 54, /* _BinaryenRefTestId */ + RefCast = 55, /* _BinaryenRefCastId */ + BrOnCast = 56, /* _BinaryenBrOnCastId */ + RttCanon = 57, /* _BinaryenRttCanonId */ + RttSub = 58, /* _BinaryenRttSubId */ + StructNew = 59, /* _BinaryenStructNewId */ + StructGet = 60, /* _BinaryenStructGetId */ + StructSet = 61, /* _BinaryenStructSetId */ + ArrayNew = 62, /* _BinaryenArrayNewId */ + ArrayGet = 63, /* _BinaryenArrayGetId */ + ArraySet = 64, /* _BinaryenArraySetId */ + ArrayLen = 64 /* _BinaryenArrayLenId */ +} + +export enum ExternalKind { + Function = 0, /* _BinaryenExternalFunction */ + Table = 1, /* _BinaryenExternalTable */ + Memory = 2, /* _BinaryenExternalMemory */ + Global = 3, /* _BinaryenExternalGlobal */ + Event = 4 /* _BinaryenExternalEvent */ } export enum UnaryOp { @@ -514,20 +539,22 @@ export class MemorySegment { export class Module { constructor( /** Binaryen module reference. */ - public ref: ModuleRef + public ref: ModuleRef, + /** Whether a shadow stack is used. */ + public useShadowStack: bool ) { this.lit = binaryen._malloc(binaryen._BinaryenSizeofLiteral()); } private lit: usize; - static create(): Module { - return new Module(binaryen._BinaryenModuleCreate()); + static create(useShadowStack: bool): Module { + return new Module(binaryen._BinaryenModuleCreate(), useShadowStack); } - static createFrom(buffer: Uint8Array): Module { + static createFrom(buffer: Uint8Array, useShadowStack: bool): Module { var cArr = allocU8Array(buffer); - var module = new Module(binaryen._BinaryenModuleRead(cArr, buffer.length)); + var module = new Module(binaryen._BinaryenModuleRead(cArr, buffer.length), useShadowStack); binaryen._free(changetype(cArr)); return module; } @@ -604,12 +631,25 @@ export class Module { return binaryen._BinaryenLocalGet(this.ref, index, type); } + tostack(value: ExpressionRef): ExpressionRef { + if (this.useShadowStack) { + let type = binaryen._BinaryenExpressionGetType(value); + assert(type == NativeType.I32 || type == NativeType.Unreachable); + return this.call(BuiltinNames.tostack, [ value ], type); + } + return value; + } + local_tee( index: i32, value: ExpressionRef, - type: NativeType = NativeType.Auto + isManaged: bool, + type: NativeType = NativeType.Auto, ): ExpressionRef { if (type == NativeType.Auto) type = binaryen._BinaryenExpressionGetType(value); + if (isManaged && this.useShadowStack) { + value = this.tostack(value); + } return binaryen._BinaryenLocalTee(this.ref, index, value, type); } @@ -708,8 +748,12 @@ export class Module { local_set( index: Index, - value: ExpressionRef + value: ExpressionRef, + isManaged: bool ): ExpressionRef { + if (isManaged && this.useShadowStack) { + value = this.tostack(value); + } return binaryen._BinaryenLocalSet(this.ref, index, value); } @@ -1041,10 +1085,11 @@ export class Module { } ref_func( - name: string + name: string, + type: NativeType ): ExpressionRef { var cStr = this.allocStringCached(name); - return binaryen._BinaryenRefFunc(this.ref, cStr); + return binaryen._BinaryenRefFunc(this.ref, cStr, type); } // globals @@ -1135,6 +1180,11 @@ export class Module { binaryen._BinaryenRemoveFunction(this.ref, cStr); } + hasFunction(name: string): bool { + var cStr = this.allocStringCached(name); + return binaryen._BinaryenGetFunction(this.ref, cStr) != 0; + } + private hasTemporaryFunction: bool = false; addTemporaryFunction( @@ -1218,6 +1268,11 @@ export class Module { binaryen._BinaryenRemoveExport(this.ref, cStr); } + hasExport(externalName: string): bool { + var cStr = this.allocStringCached(externalName); + return binaryen._BinaryenGetExport(this.ref, cStr) != 0; + } + // imports addFunctionImport( @@ -1489,7 +1544,7 @@ export class Module { for (let i = numNames - 1; i >= 0; --i) binaryen._free(cStrs[i]); } - optimize(optimizeLevel: i32, shrinkLevel: i32, debugInfo: bool = false, usesARC: bool = true): void { + optimize(optimizeLevel: i32, shrinkLevel: i32, debugInfo: bool = false): void { // Implicitly run costly non-LLVM optimizations on -O3 or -Oz if (optimizeLevel >= 3 || shrinkLevel >= 2) optimizeLevel = 4; @@ -1551,13 +1606,6 @@ export class Module { passes.push("local-cse"); passes.push("reorder-locals"); } - // FIXME: see issue #1288 - // if (usesARC) { - // if (optimizeLevel < 3) { - // passes.push("flatten"); - // } - // passes.push("post-assemblyscript"); - // } passes.push("optimize-instructions"); if (optimizeLevel >= 3 || shrinkLevel >= 1) { passes.push("dce"); @@ -1643,10 +1691,6 @@ export class Module { passes.push("directize"); // replace indirect with direct calls passes.push("dae-optimizing"); // reduce arity passes.push("inlining-optimizing"); // and inline if possible - if (usesARC) { - // works best after inlining to cover most retains/releases - passes.push("post-assemblyscript-finalize"); - } if (optimizeLevel >= 2 || shrinkLevel >= 1) { passes.push("rse"); // move code on early return (after CFG cleanup) @@ -1724,25 +1768,38 @@ export class Module { throw new Error("not implemented"); // JS glue overrides this } - private cachedStrings: Map = new Map(); + private cachedStringsToPointers: Map = new Map(); + private cachedPointersToStrings: Map = new Map(); - private allocStringCached(str: string | null): usize { + allocStringCached(str: string | null): usize { if (str === null) return 0; - var cachedStrings = this.cachedStrings; - if (cachedStrings.has(str)) return cachedStrings.get(str); + var cached = this.cachedStringsToPointers; + if (cached.has(str)) return changetype(cached.get(str)); var ptr = allocString(str); - cachedStrings.set(str, ptr); + cached.set(str, ptr); return ptr; } + readStringCached(ptr: usize): string | null { + // Binaryen internalizes names, so using this method where it's safe can + // avoid quite a bit of unnecessary garbage. + if (ptr == 0) return null; + var cached = this.cachedPointersToStrings; + if (cached.has(ptr)) return changetype(this.cachedPointersToStrings.get(ptr)); + var str = readString(ptr); + cached.set(ptr, str); + return str; + } + dispose(): void { assert(this.ref); // TODO: for (let ptr of this.cachedStrings.values()) { - for (let _values = Map_values(this.cachedStrings), i = 0, k = _values.length; i < k; ++i) { + for (let _values = Map_values(this.cachedStringsToPointers), i = 0, k = _values.length; i < k; ++i) { let ptr = unchecked(_values[i]); binaryen._free(ptr); } - this.cachedStrings = new Map(); + this.cachedStringsToPointers.clear(); + this.cachedPointersToStrings.clear(); binaryen._free(this.lit); binaryen._BinaryenModuleDispose(this.ref); this.ref = 0; @@ -1959,6 +2016,16 @@ export function getConstValueF64(expr: ExpressionRef): f64 { return binaryen._BinaryenConstGetValueF64(expr); } +export function isConstZero(expr: ExpressionRef): bool { + if (getExpressionId(expr) != ExpressionId.Const) return false; + var type = getExpressionType(expr); + if (type == NativeType.I32) return getConstValueI32(expr) == 0; + if (type == NativeType.I64) return getConstValueI64Low(expr) == 0 && getConstValueI64High(expr) == 0; + if (type == NativeType.F32) return getConstValueF32(expr) == 0; + if (type == NativeType.F64) return getConstValueF64(expr) == 0; + return false; +} + export function getLocalGetIndex(expr: ExpressionRef): Index { return binaryen._BinaryenLocalGetGetIndex(expr); } @@ -2271,7 +2338,7 @@ export class SwitchBuilder { for (let i = 0; i < numCases; ++i) { labels[i] = "case" + i.toString() + labelPostfix; } - entry[0] = module.local_set(localIndex, this.condition); + entry[0] = module.local_set(localIndex, this.condition, false); // u32 for (let i = 0; i < numValues; ++i) { let index = indexes[i]; entry[1 + i] = module.br(labels[index], @@ -2369,7 +2436,7 @@ function allocU32Array(u32s: u32[] | null): usize { return ptr; } -function allocPtrArray(ptrs: usize[] | null): usize { +export function allocPtrArray(ptrs: usize[] | null): usize { if (!ptrs) return 0; // TODO: WASM64 assert(ASC_TARGET != Target.WASM64); @@ -2516,228 +2583,3 @@ export function needsExplicitUnreachable(expr: ExpressionRef): bool { } return true; } - -/** Traverses all expression members of an expression, calling the given visitor. */ -export function traverse( - expr: ExpressionRef, - data: T, - visit: (expr: ExpressionRef, data: T) => void -): bool { - switch (getExpressionId(expr)) { - case ExpressionId.Block: { - for (let i: Index = 0, n = binaryen._BinaryenBlockGetNumChildren(expr); i < n; ++i) { - visit(binaryen._BinaryenBlockGetChildAt(expr, i), data); - } - break; - } - case ExpressionId.If: { - visit(binaryen._BinaryenIfGetCondition(expr), data); - visit(binaryen._BinaryenIfGetIfTrue(expr), data); - let ifFalse = binaryen._BinaryenIfGetIfFalse(expr); - if (ifFalse) visit(ifFalse, data); - break; - } - case ExpressionId.Loop: { - visit(binaryen._BinaryenLoopGetBody(expr), data); - break; - } - case ExpressionId.Break: { - let condition = binaryen._BinaryenBreakGetCondition(expr); - if (condition) visit(condition, data); - break; - } - case ExpressionId.Switch: { - visit(binaryen._BinaryenSwitchGetCondition(expr), data); - break; - } - case ExpressionId.Call: { - for (let i: Index = 0, n = binaryen._BinaryenCallGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenCallGetOperandAt(expr, i), data); - } - break; - } - case ExpressionId.CallIndirect: { - for (let i: Index = 0, n = binaryen._BinaryenCallIndirectGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenCallIndirectGetOperandAt(expr, i), data); - } - break; - } - case ExpressionId.LocalGet: { - break; - } - case ExpressionId.LocalSet: { - visit(binaryen._BinaryenLocalSetGetValue(expr), data); - break; - } - case ExpressionId.GlobalGet: { - break; - } - case ExpressionId.GlobalSet: { - visit(binaryen._BinaryenGlobalSetGetValue(expr), data); - break; - } - case ExpressionId.Load: { - visit(binaryen._BinaryenLoadGetPtr(expr), data); - break; - } - case ExpressionId.Store: { - visit(binaryen._BinaryenStoreGetPtr(expr), data); - visit(binaryen._BinaryenStoreGetValue(expr), data); - break; - } - case ExpressionId.Const: { - break; - } - case ExpressionId.Unary: { - visit(binaryen._BinaryenUnaryGetValue(expr), data); - break; - } - case ExpressionId.Binary: { - visit(binaryen._BinaryenBinaryGetLeft(expr), data); - visit(binaryen._BinaryenBinaryGetRight(expr), data); - break; - } - case ExpressionId.Select: { - visit(binaryen._BinaryenSelectGetIfTrue(expr), data); - visit(binaryen._BinaryenSelectGetIfFalse(expr), data); - visit(binaryen._BinaryenSelectGetCondition(expr), data); - break; - } - case ExpressionId.Drop: { - visit(binaryen._BinaryenDropGetValue(expr), data); - break; - } - case ExpressionId.Return: { - visit(binaryen._BinaryenReturnGetValue(expr), data); - break; - } - case ExpressionId.MemorySize: - break; - case ExpressionId.MemoryGrow: - visit(binaryen._BinaryenMemoryGrowGetDelta(expr), data); - break; - case ExpressionId.Nop: { - break; - } - case ExpressionId.Unreachable: { - break; - } - case ExpressionId.AtomicRMW: { - visit(binaryen._BinaryenAtomicRMWGetPtr(expr), data); - visit(binaryen._BinaryenAtomicRMWGetValue(expr), data); - break; - } - case ExpressionId.AtomicCmpxchg: { - visit(binaryen._BinaryenAtomicCmpxchgGetPtr(expr), data); - visit(binaryen._BinaryenAtomicCmpxchgGetExpected(expr), data); - visit(binaryen._BinaryenAtomicCmpxchgGetReplacement(expr), data); - break; - } - case ExpressionId.AtomicWait: { - visit(binaryen._BinaryenAtomicWaitGetPtr(expr), data); - visit(binaryen._BinaryenAtomicWaitGetExpected(expr), data); - visit(binaryen._BinaryenAtomicWaitGetTimeout(expr), data); - break; - } - case ExpressionId.AtomicNotify: { - visit(binaryen._BinaryenAtomicNotifyGetPtr(expr), data); - break; - } - case ExpressionId.AtomicFence: { - break; - } - case ExpressionId.SIMDExtract: { - visit(binaryen._BinaryenSIMDExtractGetVec(expr), data); - break; - } - case ExpressionId.SIMDReplace: { - visit(binaryen._BinaryenSIMDReplaceGetVec(expr), data); - visit(binaryen._BinaryenSIMDReplaceGetValue(expr), data); - break; - } - case ExpressionId.SIMDShuffle: { - visit(binaryen._BinaryenSIMDShuffleGetLeft(expr), data); - visit(binaryen._BinaryenSIMDShuffleGetRight(expr), data); - break; - } - case ExpressionId.SIMDTernary: { - visit(binaryen._BinaryenSIMDTernaryGetA(expr), data); - visit(binaryen._BinaryenSIMDTernaryGetB(expr), data); - visit(binaryen._BinaryenSIMDTernaryGetC(expr), data); - break; - } - case ExpressionId.SIMDShift: { - visit(binaryen._BinaryenSIMDShiftGetVec(expr), data); - visit(binaryen._BinaryenSIMDShiftGetShift(expr), data); - break; - } - case ExpressionId.SIMDLoad: { - visit(binaryen._BinaryenSIMDLoadGetPtr(expr), data); - break; - } - case ExpressionId.MemoryInit: { - visit(binaryen._BinaryenMemoryInitGetDest(expr), data); - visit(binaryen._BinaryenMemoryInitGetOffset(expr), data); - visit(binaryen._BinaryenMemoryInitGetSize(expr), data); - break; - } - case ExpressionId.DataDrop: { - break; - } - case ExpressionId.MemoryCopy: { - visit(binaryen._BinaryenMemoryCopyGetDest(expr), data); - visit(binaryen._BinaryenMemoryCopyGetSource(expr), data); - visit(binaryen._BinaryenMemoryCopyGetSize(expr), data); - break; - } - case ExpressionId.MemoryFill: { - visit(binaryen._BinaryenMemoryFillGetDest(expr), data); - visit(binaryen._BinaryenMemoryFillGetValue(expr), data); - visit(binaryen._BinaryenMemoryFillGetSize(expr), data); - break; - } - case ExpressionId.Pop: { - break; - } - case ExpressionId.RefNull: { - break; - } - case ExpressionId.RefIsNull: { - visit(binaryen._BinaryenRefIsNullGetValue(expr), data); - break; - } - case ExpressionId.RefFunc: { - break; - } - case ExpressionId.Try: { - visit(binaryen._BinaryenTryGetBody(expr), data); - visit(binaryen._BinaryenTryGetCatchBody(expr), data); - break; - } - case ExpressionId.Throw: { - for (let i: Index = 0, n = binaryen._BinaryenThrowGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenThrowGetOperandAt(expr, i), data); - } - break; - } - case ExpressionId.Rethrow: { - visit(binaryen._BinaryenRethrowGetExnref(expr), data); - break; - } - case ExpressionId.BrOnExn: { - visit(binaryen._BinaryenBrOnExnGetExnref(expr), data); - break; - } - case ExpressionId.TupleMake: { - for (let i: Index = 0, n = binaryen._BinaryenTupleMakeGetNumOperands(expr); i < n; ++i) { - visit(binaryen._BinaryenTupleMakeGetOperandAt(expr, i), data); - } - break; - } - case ExpressionId.TupleExtract: { - break; - } - default: assert(false); - } - return true; -} diff --git a/src/passes/findusedlocals.ts b/src/passes/findusedlocals.ts new file mode 100644 index 0000000000..acad07790f --- /dev/null +++ b/src/passes/findusedlocals.ts @@ -0,0 +1,50 @@ +/** + * @fileoverview Utility to find all locals used in an expression. + * @license Apache-2.0 + */ + +import { + Visitor +} from "./pass"; + +import { + ExpressionRef +} from "../module"; + +import { + _BinaryenLocalGetGetIndex, + _BinaryenLocalSetGetIndex +} from "../glue/binaryen"; + +class FindUsedLocalsVisitor extends Visitor { + used: Set; + + constructor(used: Set = new Set()) { + super(); + this.used = used; + } + + /** @override */ + visitLocalGet(localGet: ExpressionRef): void { + this.used.add(_BinaryenLocalGetGetIndex(localGet)); + } + + /** @override */ + visitLocalSet(localSet: ExpressionRef): void { + this.used.add(_BinaryenLocalSetGetIndex(localSet)); + } +} + +var singleton: FindUsedLocalsVisitor | null = null; + +/** Finds the indexes of all locals used in the specified expression. */ +export function findUsedLocals( + expr: ExpressionRef, + used: Set = new Set() +): Set { + var visitor = singleton; + if (!visitor) singleton = visitor = new FindUsedLocalsVisitor(used); + else visitor.used = used; + visitor.visit(expr); + return used; +} diff --git a/src/passes/ministack.ts b/src/passes/ministack.ts new file mode 100644 index 0000000000..e365d96302 --- /dev/null +++ b/src/passes/ministack.ts @@ -0,0 +1,182 @@ +/** + * @fileoverview A potential minimalistic shadow stack. Currently not used. + * + * Instruments a module's exports to track when the execution stack is fully + * unwound, and injects a call to `__autocollect` to be invoked when it is. + * Accounts for the currently in-flight managed return value from Wasm to the + * host by pushing it to a mini stack, essentially a stack of only one value, + * while `__autocollect` is executing. + * + * @license Apache-2.0 + */ + +import { + Pass +} from "./pass"; + +import { + BinaryOp, + expandType, + ExportRef, + ExpressionRef, + ExternalKind, + Index, + Module, + NativeType, + UnaryOp +} from "../module"; + +import { + _BinaryenAddFunctionExport, + _BinaryenExportGetKind, + _BinaryenExportGetName, + _BinaryenExportGetValue, + _BinaryenFunctionGetName, + _BinaryenFunctionGetNumLocals, + _BinaryenFunctionGetParams, + _BinaryenFunctionGetResults, + _BinaryenGetExportByIndex, + _BinaryenGetFunction, + _BinaryenGetNumExports, + _BinaryenRemoveExport +} from "../glue/binaryen"; + +import { + Program +} from "../program"; + +const MINISTACK = "~lib/rt/__ministack"; +const STACK_DEPTH = "~stack_depth"; +const AUTOCOLLECT = "__autocollect"; + +/** Instruments a module with a minimalistic shadow stack for precise GC. */ +export class MiniStack extends Pass { + /** Compiler reference. */ + program: Program; + /** Exported functions returning managed values. */ + managedReturns: Set = new Set(); + + constructor(module: Module, program: Program) { + super(module); + this.program = program; + } + + /** Notes the presence of an exported function with a managed return value. */ + noteManagedReturn(exportName: string): void { + this.managedReturns.add(exportName); + } + + /** Instruments a function export to also maintain stack depth. */ + instrumentFunctionExport(ref: ExportRef): void { + assert(_BinaryenExportGetKind(ref) == ExternalKind.Function); + var module = this.module; + var internalNameRef = _BinaryenExportGetValue(ref); + var externalNameRef = _BinaryenExportGetName(ref); + var functionRef = _BinaryenGetFunction(module.ref, internalNameRef); + var originalName = module.readStringCached(_BinaryenFunctionGetName(functionRef))!; + + var wrapperName = "export:" + originalName; + if (!module.hasFunction(wrapperName)) { + var params = _BinaryenFunctionGetParams(functionRef); + var results = _BinaryenFunctionGetResults(functionRef); + let numLocals = _BinaryenFunctionGetNumLocals(functionRef); + var vars = new Array(); + + // Prepare a call to the original function + var paramTypes = expandType(params); + var numParams = paramTypes.length; + var operands = new Array(numParams); + for (let i = 0; i < numParams; ++i) { + operands[i] = module.local_get(i, paramTypes[i]); + } + var call = module.call(originalName, operands, results); + + // Create a wrapper function also maintaining stack depth + var stmts = new Array(); + if (numLocals) { + stmts.push( + module.global_set(STACK_DEPTH, + module.binary(BinaryOp.AddI32, + module.global_get(STACK_DEPTH, NativeType.I32), + module.i32(1) // only need to know > 0 + ) + ) + ); + } + if (results == NativeType.None) { + stmts.push( + call + ); + } else { + vars.push(results); + stmts.push( + module.local_set(numParams, call, false) // no shadow stack here + ); + } + if (numLocals) { + stmts.push( + module.global_set(STACK_DEPTH, + module.binary(BinaryOp.SubI32, + module.global_get(STACK_DEPTH, NativeType.I32), + module.i32(1) // only need to know > 0 + ) + ) + ); + } + let exportName = module.readStringCached(externalNameRef)!; + stmts.push( + module.global_set(MINISTACK, + this.managedReturns.has(exportName) + ? module.local_get(numParams, results) + : module.i32(0) + ) + ); + stmts.push( + module.if( + module.unary(UnaryOp.EqzI32, + module.global_get(STACK_DEPTH, NativeType.I32) + ), + module.call(AUTOCOLLECT, null, NativeType.None) + ) + ); + if (results != NativeType.None) { + stmts.push( + module.local_get(numParams, results) + ); + } + module.addFunction(wrapperName, params, results, vars, + module.block(null, stmts, results) + ); + } + + // Replace the original export with the wrapped one + _BinaryenRemoveExport(module.ref, externalNameRef); + _BinaryenAddFunctionExport(module.ref, module.allocStringCached(wrapperName), externalNameRef); + } + + /** Runs the pass. Returns `true` if the mini stack has been added. */ + run(): bool { + var module = this.module; + var moduleRef = module.ref; + var numExports = _BinaryenGetNumExports(moduleRef); + if (numExports) { + let functionExportRefs = new Array(); + // We are going to modify the list of exports, so do this in two steps + for (let i: Index = 0; i < numExports; ++i) { + let exportRef = _BinaryenGetExportByIndex(moduleRef, i); + if (_BinaryenExportGetKind(exportRef) == ExternalKind.Function) { + functionExportRefs.push(exportRef); + } + } + let numFunctionExports = functionExportRefs.length; + if (numFunctionExports) { + for (let i = 0; i < numFunctionExports; ++i) { + this.instrumentFunctionExport(functionExportRefs[i]); + } + module.addGlobal(STACK_DEPTH, NativeType.I32, true, module.i32(0)); + return true; + } + } + return false; + } +} diff --git a/src/passes/pass.ts b/src/passes/pass.ts new file mode 100644 index 0000000000..3dfe15ee32 --- /dev/null +++ b/src/passes/pass.ts @@ -0,0 +1,1641 @@ +/** + * @fileoverview Infrastructure for custom Binaryen passes. + * @license Apache-2.0 + */ + +import { + Module, + ExpressionId, + ExpressionRef, + FunctionRef, + GlobalRef, + Index, + CString +} from "../module"; + +import { + _BinaryenExpressionGetId, + _BinaryenBlockGetNumChildren, + _BinaryenBlockGetChildAt, + _BinaryenIfGetCondition, + _BinaryenIfGetIfTrue, + _BinaryenIfGetIfFalse, + _BinaryenLoopGetBody, + _BinaryenBreakGetCondition, + _BinaryenBreakGetValue, + _BinaryenGetNumFunctions, + _BinaryenGetFunctionByIndex, + _BinaryenGetNumGlobals, + _BinaryenGetGlobalByIndex, + _BinaryenFunctionGetBody, + _BinaryenSwitchGetCondition, + _BinaryenSwitchGetValue, + _BinaryenCallGetNumOperands, + _BinaryenCallGetOperandAt, + _BinaryenCallIndirectGetNumOperands, + _BinaryenCallIndirectGetOperandAt, + _BinaryenLocalSetGetValue, + _BinaryenGlobalSetGetValue, + _BinaryenGlobalGetInitExpr, + _BinaryenLoadGetPtr, + _BinaryenStoreGetPtr, + _BinaryenStoreGetValue, + _BinaryenUnaryGetValue, + _BinaryenBinaryGetLeft, + _BinaryenBinaryGetRight, + _BinaryenSelectGetIfTrue, + _BinaryenSelectGetIfFalse, + _BinaryenSelectGetCondition, + _BinaryenDropGetValue, + _BinaryenBlockSetChildAt, + _BinaryenCallIndirectGetTarget, + _BinaryenReturnGetValue, + _BinaryenMemoryGrowGetDelta, + _BinaryenAtomicRMWGetPtr, + _BinaryenAtomicRMWGetValue, + _BinaryenAtomicCmpxchgGetPtr, + _BinaryenAtomicCmpxchgGetExpected, + _BinaryenAtomicCmpxchgGetReplacement, + _BinaryenAtomicWaitGetPtr, + _BinaryenAtomicWaitGetExpected, + _BinaryenAtomicWaitGetTimeout, + _BinaryenAtomicNotifyGetPtr, + _BinaryenSIMDExtractGetVec, + _BinaryenSIMDReplaceGetVec, + _BinaryenSIMDReplaceGetValue, + _BinaryenSIMDShuffleGetLeft, + _BinaryenSIMDShuffleGetRight, + _BinaryenSIMDTernaryGetA, + _BinaryenSIMDTernaryGetB, + _BinaryenSIMDTernaryGetC, + _BinaryenSIMDShiftGetVec, + _BinaryenSIMDShiftGetShift, + _BinaryenSIMDLoadGetPtr, + _BinaryenMemoryInitGetDest, + _BinaryenMemoryInitGetOffset, + _BinaryenMemoryInitGetSize, + _BinaryenMemoryCopyGetDest, + _BinaryenMemoryCopyGetSource, + _BinaryenMemoryCopyGetSize, + _BinaryenMemoryFillGetDest, + _BinaryenMemoryFillGetValue, + _BinaryenMemoryFillGetSize, + _BinaryenRefIsNullGetValue, + _BinaryenTryGetBody, + _BinaryenTryGetCatchBody, + _BinaryenThrowGetNumOperands, + _BinaryenThrowGetOperandAt, + _BinaryenRethrowGetExnref, + _BinaryenBrOnExnGetExnref, + _BinaryenTupleMakeGetOperandAt, + _BinaryenTupleMakeGetNumOperands, + _BinaryenIfSetCondition, + _BinaryenIfSetIfTrue, + _BinaryenIfSetIfFalse, + _BinaryenLoopSetBody, + _BinaryenBreakSetCondition, + _BinaryenBreakSetValue, + _BinaryenSwitchSetCondition, + _BinaryenSwitchSetValue, + _BinaryenCallSetOperandAt, + _BinaryenCallIndirectSetTarget, + _BinaryenCallIndirectSetOperandAt, + _BinaryenLocalSetSetValue, + _BinaryenGlobalSetSetValue, + _BinaryenLoadSetPtr, + _BinaryenStoreSetPtr, + _BinaryenStoreSetValue, + _BinaryenUnarySetValue, + _BinaryenExpressionFinalize, + _BinaryenBinarySetLeft, + _BinaryenBinarySetRight, + _BinaryenSelectSetIfTrue, + _BinaryenSelectSetIfFalse, + _BinaryenSelectSetCondition, + _BinaryenDropSetValue, + _BinaryenReturnSetValue, + _BinaryenMemoryGrowSetDelta, + _BinaryenAtomicRMWSetPtr, + _BinaryenAtomicRMWSetValue, + _BinaryenAtomicCmpxchgSetPtr, + _BinaryenAtomicCmpxchgSetExpected, + _BinaryenAtomicCmpxchgSetReplacement, + _BinaryenAtomicWaitSetPtr, + _BinaryenAtomicWaitSetExpected, + _BinaryenAtomicWaitSetTimeout, + _BinaryenAtomicNotifySetPtr, + _BinaryenSIMDExtractSetVec, + _BinaryenSIMDReplaceSetVec, + _BinaryenSIMDReplaceSetValue, + _BinaryenSIMDShuffleSetLeft, + _BinaryenSIMDShuffleSetRight, + _BinaryenSIMDTernarySetA, + _BinaryenSIMDTernarySetB, + _BinaryenSIMDTernarySetC, + _BinaryenSIMDShiftSetVec, + _BinaryenSIMDShiftSetShift, + _BinaryenSIMDLoadSetPtr, + _BinaryenMemoryInitSetDest, + _BinaryenMemoryInitSetOffset, + _BinaryenMemoryInitSetSize, + _BinaryenMemoryCopySetDest, + _BinaryenMemoryCopySetSource, + _BinaryenMemoryCopySetSize, + _BinaryenMemoryFillSetDest, + _BinaryenMemoryFillSetValue, + _BinaryenMemoryFillSetSize, + _BinaryenRefIsNullSetValue, + _BinaryenTrySetBody, + _BinaryenTrySetCatchBody, + _BinaryenThrowSetOperandAt, + _BinaryenRethrowSetExnref, + _BinaryenBrOnExnSetExnref, + _BinaryenTupleMakeSetOperandAt, + _BinaryenBlockGetName, + _BinaryenLoopGetName, + _BinaryenBreakGetName, + _BinaryenSwitchGetDefaultName, + _BinaryenSwitchGetNumNames, + _BinaryenSwitchGetNameAt, + _BinaryenCallGetTarget, + _BinaryenLocalGetGetIndex, + _BinaryenLocalSetGetIndex, + _BinaryenGlobalGetGetName, + _BinaryenGlobalSetGetName, + _BinaryenAtomicNotifyGetNotifyCount, + _BinaryenAtomicNotifySetNotifyCount, + _BinaryenRefFuncGetFunc, + _BinaryenThrowGetEvent, + _BinaryenBrOnExnGetEvent, + _BinaryenBrOnExnGetName, + _BinaryenTupleExtractGetTuple, + _BinaryenTupleExtractSetTuple, + _BinaryenRefEqGetLeft, + _BinaryenRefEqGetRight, + _BinaryenRefEqSetLeft, + _BinaryenRefEqSetRight, + _BinaryenFunctionSetBody +} from "../glue/binaryen"; + +/** Base class of custom Binaryen visitors. */ +export abstract class Visitor { + /** Expression stack. */ + private stack: ExpressionRef[] = new Array(); + + /** Gets the current expression being walked. */ + get currentExpression(): ExpressionRef { + var currentExpression = this._currentExpression; + if (!currentExpression) throw new Error("not walking expressions"); + return currentExpression; + } + _currentExpression: ExpressionRef = 0; + + /** Gets the parent expression of the current expression being walked. Returns zero if already the top-most expression. */ + get parentExpressionOrNull(): ExpressionRef { + var stack = this.stack; + var length = stack.length; + return length ? stack[length - 1] : 0; + } + + // Expressions + + visitBlock(expr: ExpressionRef): void { + // unimp + } + + visitIf(expr: ExpressionRef): void { + // unimp + } + + visitLoop(expr: ExpressionRef): void { + // unimp + } + + visitBreak(expr: ExpressionRef): void { + // unimp + } + + visitSwitch(expr: ExpressionRef): void { + // unimp + } + + visitCallPre(expr: ExpressionRef): void { + // unimp + } + + visitCall(expr: ExpressionRef): void { + // unimp + } + + visitCallIndirectPre(expr: ExpressionRef): void { + // unimp + } + + visitCallIndirect(expr: ExpressionRef): void { + // unimp + } + + visitLocalGet(expr: ExpressionRef): void { + // unimp + } + + visitLocalSet(expr: ExpressionRef): void { + // unimp + } + + visitGlobalGet(expr: ExpressionRef): void { + // unimp + } + + visitGlobalSet(expr: ExpressionRef): void { + // unimp + } + + visitLoad(expr: ExpressionRef): void { + // unimp + } + + visitStore(expr: ExpressionRef): void { + // unimp + } + + visitConst(expr: ExpressionRef): void { + // unimp + } + + visitUnary(expr: ExpressionRef): void { + // unimp + } + + visitBinary(expr: ExpressionRef): void { + // unimp + } + + visitSelect(expr: ExpressionRef): void { + // unimp + } + + visitDrop(expr: ExpressionRef): void { + // unimp + } + + visitReturn(expr: ExpressionRef): void { + // unimp + } + + visitMemorySize(expr: ExpressionRef): void { + // unimp + } + + visitMemoryGrow(expr: ExpressionRef): void { + // unimp + } + + visitNop(expr: ExpressionRef): void { + // unimp + } + + visitUnreachable(expr: ExpressionRef): void { + // unimp + } + + visitAtomicRMW(expr: ExpressionRef): void { + // unimp + } + + visitAtomicCmpxchg(expr: ExpressionRef): void { + // unimp + } + + visitAtomicWait(expr: ExpressionRef): void { + // unimp + } + + visitAtomicNotify(expr: ExpressionRef): void { + // unimp + } + + visitAtomicFence(expr: ExpressionRef): void { + // unimp + } + + visitSIMDExtract(expr: ExpressionRef): void { + // unimp + } + + visitSIMDReplace(expr: ExpressionRef): void { + // unimp + } + + visitSIMDShuffle(expr: ExpressionRef): void { + // unimp + } + + visitSIMDTernary(expr: ExpressionRef): void { + // unimp + } + + visitSIMDShift(expr: ExpressionRef): void { + // unimp + } + + visitSIMDLoad(expr: ExpressionRef): void { + // unimp + } + + visitMemoryInit(expr: ExpressionRef): void { + // unimp + } + + visitDataDrop(expr: ExpressionRef): void { + // unimp + } + + visitMemoryCopy(expr: ExpressionRef): void { + // unimp + } + + visitMemoryFill(expr: ExpressionRef): void { + // unimp + } + + visitPop(expr: ExpressionRef): void { + // unimp + } + + visitRefNull(expr: ExpressionRef): void { + // unimp + } + + visitRefIsNull(expr: ExpressionRef): void { + // unimp + } + + visitRefFunc(expr: ExpressionRef): void { + // unimp + } + + visitRefEq(expr: ExpressionRef): void { + // unimp + } + + visitTry(expr: ExpressionRef): void { + // unimp + } + + visitThrow(expr: ExpressionRef): void { + // unimp + } + + visitRethrow(expr: ExpressionRef): void { + // unimp + } + + visitBrOnExn(expr: ExpressionRef): void { + // unimp + } + + visitTupleMake(expr: ExpressionRef): void { + // unimp + } + + visitTupleExtract(expr: ExpressionRef): void { + // unimp + } + + visitI31New(expr: ExpressionRef): void { + // unimp + } + + visitI31Get(expr: ExpressionRef): void { + // unimp + } + + visitCallRef(expr: ExpressionRef): void { + // unimp + } + + visitRefTest(expr: ExpressionRef): void { + // unimp + } + + visitRefCast(expr: ExpressionRef): void { + // unimp + } + + visitBrOnCast(expr: ExpressionRef): void { + // unimp + } + + visitRttCanon(expr: ExpressionRef): void { + // unimp + } + + visitRttSub(expr: ExpressionRef): void { + // unimp + } + + visitStructNew(expr: ExpressionRef): void { + // unimp + } + + visitStructGet(expr: ExpressionRef): void { + // unimp + } + + visitStructSet(expr: ExpressionRef): void { + // unimp + } + + visitArrayNew(expr: ExpressionRef): void { + // unimp + } + + visitArrayGet(expr: ExpressionRef): void { + // unimp + } + + visitArraySet(expr: ExpressionRef): void { + // unimp + } + + visitArrayLen(expr: ExpressionRef): void { + // unimp + } + + // Immediates + + visitName(name: CString): void { + // unimp + } + + visitLabel(name: CString): void { + // unimp + } + + visitIndex(index: Index): void { + // unimp + } + + visitEvent(name: CString): void { + // unimp + } + + // Delegate + + /** Visits any expression, delegating to the respective visitor methods. */ + visit(expr: ExpressionRef): void { + let previousExpression = this._currentExpression; + this._currentExpression = assert(expr); + switch (_BinaryenExpressionGetId(expr)) { + case ExpressionId.Block: { + this.stack.push(expr); + let name = _BinaryenBlockGetName(expr); + if (name) this.visitLabel(name); + for (let i: Index = 0, n = _BinaryenBlockGetNumChildren(expr); i < n; ++i) { + this.visit(_BinaryenBlockGetChildAt(expr, i)); + } + assert(this.stack.pop() == expr); + this.visitBlock(expr); + break; + } + case ExpressionId.If: { + this.stack.push(expr); + this.visit(_BinaryenIfGetCondition(expr)); + this.visit(_BinaryenIfGetIfTrue(expr)); + let ifFalse = _BinaryenIfGetIfFalse(expr); + if (ifFalse) this.visit(ifFalse); + assert(this.stack.pop() == expr); + this.visitIf(expr); + break; + } + case ExpressionId.Loop: { + this.stack.push(expr); + let name = _BinaryenLoopGetName(expr); + if (name) this.visitLabel(name); + this.visit(_BinaryenLoopGetBody(expr)); + assert(this.stack.pop() == expr); + this.visitLoop(expr); + break; + } + case ExpressionId.Break: { + this.stack.push(expr); + this.visitLabel(_BinaryenBreakGetName(expr)); + let condition = _BinaryenBreakGetCondition(expr); + if (condition) this.visit(condition); + let value = _BinaryenBreakGetValue(expr); + if (value) this.visit(value); + assert(this.stack.pop() == expr); + this.visitBreak(expr); + break; + } + case ExpressionId.Switch: { + this.stack.push(expr); + let defaultName = _BinaryenSwitchGetDefaultName(expr); + if (defaultName) this.visitLabel(defaultName); + let numNames = _BinaryenSwitchGetNumNames(expr); + for (let i: Index = 0; i < numNames; ++i) { + this.visitLabel(_BinaryenSwitchGetNameAt(expr, i)); + } + this.visit(_BinaryenSwitchGetCondition(expr)); + let value = _BinaryenSwitchGetValue(expr); + if (value) this.visit(value); + assert(this.stack.pop() == expr); + this.visitSwitch(expr); + break; + } + case ExpressionId.Call: { + this.visitCallPre(expr); + this.stack.push(expr); + this.visitName(_BinaryenCallGetTarget(expr)); + let numOperands = _BinaryenCallGetNumOperands(expr); + for (let i: Index = 0; i < numOperands; ++i) { + this.visit(_BinaryenCallGetOperandAt(expr, i)); + } + assert(this.stack.pop() == expr); + this.visitCall(expr); + break; + } + case ExpressionId.CallIndirect: { + this.visitCallIndirectPre(expr); + this.stack.push(expr); + this.visit(_BinaryenCallIndirectGetTarget(expr)); + for (let i: Index = 0, k = _BinaryenCallIndirectGetNumOperands(expr); i < k; ++i) { + this.visit(_BinaryenCallIndirectGetOperandAt(expr, i)); + } + assert(this.stack.pop() == expr); + this.visitCallIndirect(expr); + break; + } + case ExpressionId.LocalGet: { + this.stack.push(expr); + this.visitIndex(_BinaryenLocalGetGetIndex(expr)); + assert(this.stack.pop() == expr); + this.visitLocalGet(expr); + break; + } + case ExpressionId.LocalSet: { + this.stack.push(expr); + this.visitIndex(_BinaryenLocalSetGetIndex(expr)); + this.visit(_BinaryenLocalSetGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitLocalSet(expr); + break; + } + case ExpressionId.GlobalGet: { + this.stack.push(expr); + this.visitName(_BinaryenGlobalGetGetName(expr)); + assert(this.stack.pop() == expr); + this.visitGlobalGet(expr); + break; + } + case ExpressionId.GlobalSet: { + this.stack.push(expr); + this.visitName(_BinaryenGlobalSetGetName(expr)); + this.visit(_BinaryenGlobalSetGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitGlobalSet(expr); + break; + } + case ExpressionId.Load: { + this.stack.push(expr); + this.visit(_BinaryenLoadGetPtr(expr)); + assert(this.stack.pop() == expr); + this.visitLoad(expr); + break; + } + case ExpressionId.Store: { + this.stack.push(expr); + this.visit(_BinaryenStoreGetPtr(expr)); + this.visit(_BinaryenStoreGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitStore(expr); + break; + } + case ExpressionId.Const: { + this.visitConst(expr); + break; + } + case ExpressionId.Unary: { + this.stack.push(expr); + this.visit(_BinaryenUnaryGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitUnary(expr); + break; + } + case ExpressionId.Binary: { + this.stack.push(expr); + this.visit(_BinaryenBinaryGetLeft(expr)); + this.visit(_BinaryenBinaryGetRight(expr)); + assert(this.stack.pop() == expr); + this.visitBinary(expr); + break; + } + case ExpressionId.Select: { + this.stack.push(expr); + this.visit(_BinaryenSelectGetIfTrue(expr)); + this.visit(_BinaryenSelectGetIfFalse(expr)); + this.visit(_BinaryenSelectGetCondition(expr)); + assert(this.stack.pop() == expr); + this.visitSelect(expr); + break; + } + case ExpressionId.Drop: { + this.stack.push(expr); + this.visit(_BinaryenDropGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitDrop(expr); + break; + } + case ExpressionId.Return: { + let value = _BinaryenReturnGetValue(expr); + if (value) { + this.stack.push(expr); + this.visit(value); + assert(this.stack.pop() == expr); + } + this.visitReturn(expr); + break; + } + case ExpressionId.MemorySize: { + this.visitMemorySize(expr); + break; + } + case ExpressionId.MemoryGrow: { + this.stack.push(expr); + this.visit(_BinaryenMemoryGrowGetDelta(expr)); + assert(this.stack.pop() == expr); + this.visitMemoryGrow(expr); + break; + } + case ExpressionId.Nop: { + this.visitNop(expr); + break; + } + case ExpressionId.Unreachable: { + this.visitUnreachable(expr); + break; + } + case ExpressionId.AtomicRMW: { + this.stack.push(expr); + this.visit(_BinaryenAtomicRMWGetPtr(expr)); + this.visit(_BinaryenAtomicRMWGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitAtomicRMW(expr); + break; + } + case ExpressionId.AtomicCmpxchg: { + this.stack.push(expr); + this.visit(_BinaryenAtomicCmpxchgGetPtr(expr)); + this.visit(_BinaryenAtomicCmpxchgGetExpected(expr)); + this.visit(_BinaryenAtomicCmpxchgGetReplacement(expr)); + assert(this.stack.pop() == expr); + this.visitAtomicCmpxchg(expr); + break; + } + case ExpressionId.AtomicWait: { + this.stack.push(expr); + this.visit(_BinaryenAtomicWaitGetPtr(expr)); + this.visit(_BinaryenAtomicWaitGetExpected(expr)); + this.visit(_BinaryenAtomicWaitGetTimeout(expr)); + assert(this.stack.pop() == expr); + this.visitAtomicWait(expr); + break; + } + case ExpressionId.AtomicNotify: { + this.stack.push(expr); + this.visit(_BinaryenAtomicNotifyGetPtr(expr)); + this.visit(_BinaryenAtomicNotifyGetNotifyCount(expr)); + assert(this.stack.pop() == expr); + this.visitAtomicNotify(expr); + break; + } + case ExpressionId.AtomicFence: { + this.visitAtomicFence(expr); + break; + } + case ExpressionId.SIMDExtract: { + this.stack.push(expr); + this.visit(_BinaryenSIMDExtractGetVec(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDExtract(expr); + break; + } + case ExpressionId.SIMDReplace: { + this.stack.push(expr); + this.visit(_BinaryenSIMDReplaceGetVec(expr)); + this.visit(_BinaryenSIMDReplaceGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDReplace(expr); + break; + } + case ExpressionId.SIMDShuffle: { + this.stack.push(expr); + this.visit(_BinaryenSIMDShuffleGetLeft(expr)); + this.visit(_BinaryenSIMDShuffleGetRight(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDShuffle(expr); + break; + } + case ExpressionId.SIMDTernary: { + this.stack.push(expr); + this.visit(_BinaryenSIMDTernaryGetA(expr)); + this.visit(_BinaryenSIMDTernaryGetB(expr)); + this.visit(_BinaryenSIMDTernaryGetC(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDTernary(expr); + break; + } + case ExpressionId.SIMDShift: { + this.stack.push(expr); + this.visit(_BinaryenSIMDShiftGetVec(expr)); + this.visit(_BinaryenSIMDShiftGetShift(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDShift(expr); + break; + } + case ExpressionId.SIMDLoad: { + this.stack.push(expr); + this.visit(_BinaryenSIMDLoadGetPtr(expr)); + assert(this.stack.pop() == expr); + this.visitSIMDLoad(expr); + break; + } + // TODO: SIMDLoadStoreLane + case ExpressionId.MemoryInit: { + this.stack.push(expr); + this.visit(_BinaryenMemoryInitGetDest(expr)); + this.visit(_BinaryenMemoryInitGetOffset(expr)); + this.visit(_BinaryenMemoryInitGetSize(expr)); + assert(this.stack.pop() == expr); + this.visitMemoryInit(expr); + break; + } + case ExpressionId.DataDrop: { + this.visitDataDrop(expr); + break; + } + case ExpressionId.MemoryCopy: { + this.stack.push(expr); + this.visit(_BinaryenMemoryCopyGetDest(expr)); + this.visit(_BinaryenMemoryCopyGetSource(expr)); + this.visit(_BinaryenMemoryCopyGetSize(expr)); + assert(this.stack.pop() == expr); + this.visitMemoryCopy(expr); + break; + } + case ExpressionId.MemoryFill: { + this.stack.push(expr); + this.visit(_BinaryenMemoryFillGetDest(expr)); + this.visit(_BinaryenMemoryFillGetValue(expr)); + this.visit(_BinaryenMemoryFillGetSize(expr)); + assert(this.stack.pop() == expr); + this.visitMemoryFill(expr); + break; + } + case ExpressionId.Pop: { + this.visitPop(expr); + break; + } + case ExpressionId.RefNull: { + this.visitRefNull(expr); + break; + } + case ExpressionId.RefIsNull: { + this.stack.push(expr); + this.visit(_BinaryenRefIsNullGetValue(expr)); + assert(this.stack.pop() == expr); + this.visitRefIsNull(expr); + break; + } + case ExpressionId.RefFunc: { + this.stack.push(expr); + this.visitName(_BinaryenRefFuncGetFunc(expr)); + assert(this.stack.pop() == expr); + this.visitRefFunc(expr); + break; + } + case ExpressionId.RefEq: { + this.stack.push(expr); + this.visit(_BinaryenRefEqGetLeft(expr)); + this.visit(_BinaryenRefEqGetRight(expr)); + assert(this.stack.pop() == expr); + this.visitRefEq(expr); + break; + } + case ExpressionId.Try: { + this.stack.push(expr); + this.visit(_BinaryenTryGetBody(expr)); + this.visit(_BinaryenTryGetCatchBody(expr)); + assert(this.stack.pop() == expr); + this.visitTry(expr); + break; + } + case ExpressionId.Throw: { + this.stack.push(expr); + this.visitEvent(_BinaryenThrowGetEvent(expr)); + let numOperands = _BinaryenThrowGetNumOperands(expr); + for (let i: Index = 0; i < numOperands; ++i) { + this.visit(_BinaryenThrowGetOperandAt(expr, i)); + } + assert(this.stack.pop() == expr); + this.visitThrow(expr); + break; + } + case ExpressionId.Rethrow: { + this.stack.push(expr); + this.visit(_BinaryenRethrowGetExnref(expr)); + assert(this.stack.pop() == expr); + this.visitRethrow(expr); + break; + } + case ExpressionId.BrOnExn: { + this.stack.push(expr); + this.visitEvent(_BinaryenBrOnExnGetEvent(expr)); + this.visitLabel(_BinaryenBrOnExnGetName(expr)); + this.visit(_BinaryenBrOnExnGetExnref(expr)); + assert(this.stack.pop() == expr); + this.visitBrOnExn(expr); + break; + } + case ExpressionId.TupleMake: { + let numOperands = _BinaryenTupleMakeGetNumOperands(expr); + if (numOperands) { + this.stack.push(expr); + for (let i: Index = 0; i < numOperands; ++i) { + this.visit(_BinaryenTupleMakeGetOperandAt(expr, i)); + } + assert(this.stack.pop() == expr); + } + this.visitTupleMake(expr); + break; + } + case ExpressionId.TupleExtract: { + this.stack.push(expr); + this.visit(_BinaryenTupleExtractGetTuple(expr)); + assert(this.stack.pop() == expr); + this.visitTupleExtract(expr); + break; + } + case ExpressionId.I31New: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitI31New(expr); + break; + } + case ExpressionId.I31Get: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitI31Get(expr); + break; + } + case ExpressionId.CallRef: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitCallRef(expr); + break; + } + case ExpressionId.RefTest: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRefTest(expr); + break; + } + case ExpressionId.RefCast: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRefCast(expr); + break; + } + case ExpressionId.BrOnCast: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitBrOnCast(expr); + break; + } + case ExpressionId.RttCanon: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRttCanon(expr); + break; + } + case ExpressionId.RttSub: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitRttSub(expr); + break; + } + case ExpressionId.StructNew: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitStructNew(expr); + break; + } + case ExpressionId.StructGet: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitStructGet(expr); + break; + } + case ExpressionId.StructSet: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitStructSet(expr); + break; + } + case ExpressionId.ArrayNew: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitArrayNew(expr); + break; + } + case ExpressionId.ArrayGet: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitArrayGet(expr); + break; + } + case ExpressionId.ArraySet: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitArraySet(expr); + break; + } + case ExpressionId.ArrayLen: { + this.stack.push(expr); + assert(false); // TODO + assert(this.stack.pop() == expr); + this.visitArrayLen(expr); + break; + } + default: throw new Error("unexpected expression kind"); + } + this._currentExpression = previousExpression; + } +} + +/** Base class of custom Binaryen passes. */ +export abstract class Pass extends Visitor { + + /** Gets the current function being walked. */ + get currentFunction(): FunctionRef { + var currentFunction = this._currentFunction; + if (!currentFunction) throw new Error("not walking a function"); + return currentFunction; + } + private _currentFunction: FunctionRef = 0; + + /** Gets the current global being walked. */ + get currentGlobal(): GlobalRef { + var currentGlobal = this._currentGlobal; + if (!currentGlobal) throw new Error("not walking a global"); + return currentGlobal; + } + private _currentGlobal: GlobalRef = 0; + + /** Constructs a new Binaryen pass. */ + constructor(readonly module: Module) { + super(); + } + + // Walking + + /** Walks the entire module. */ + walkModule(): void { + this.walkFunctions(); + this.walkGlobals(); + } + + /** Walks all functions. */ + walkFunctions(): void { + var moduleRef = this.module.ref; + for (let i: Index = 0, k = _BinaryenGetNumFunctions(moduleRef); i < k; ++i) { + this.walkFunction(_BinaryenGetFunctionByIndex(moduleRef, i)); + } + } + + /** Walks a specific function. */ + walkFunction(func: FunctionRef): void { + var body = _BinaryenFunctionGetBody(func); + if (body) { + this._currentFunction = func; + this.visit(body); + this._currentFunction = 0; + } + } + + /** Walks all global variables. */ + walkGlobals(): void { + var moduleRef = this.module.ref; + for (let i: Index = 0, k = _BinaryenGetNumGlobals(moduleRef); i < k; ++i) { + this.walkGlobal(_BinaryenGetGlobalByIndex(moduleRef, i)); + } + } + + /** Walks a specific global variable. */ + walkGlobal(global: GlobalRef): void { + this._currentGlobal = global; + var init = _BinaryenGlobalGetInitExpr(global); + if (init) this.visit(init); + this._currentGlobal = 0; + } + + // Utility + + /** Replaces the current expression with the specified replacement. */ + replaceCurrent(replacement: ExpressionRef): void { + var search = this.currentExpression; + var func = this.currentFunction; + var body = _BinaryenFunctionGetBody(func); + if (body == search) { + _BinaryenFunctionSetBody(func, replacement); + } else { + var parent = assert(this.parentExpressionOrNull); + var replaced = replaceChild(parent, search, replacement); + if (!replaced) throw Error("failed to replace expression"); + _BinaryenExpressionFinalize(parent); + } + } +} + +/** Replaces an expression within a parent expression. Returns the replaced expression on success, otherwise `0`. */ +export function replaceChild( + /** Parent expression containing `search`. */ + parent: ExpressionRef, + /** Expression to replace. */ + search: ExpressionRef, + /** Expression to replace `search` with. */ + replacement: ExpressionRef +): ExpressionRef { + switch (_BinaryenExpressionGetId(parent)) { + case ExpressionId.Block: { + let numChildren = _BinaryenBlockGetNumChildren(parent); + for (let i: Index = 0; i < numChildren; ++i) { + let child = _BinaryenBlockGetChildAt(parent, i); + if (child == search) { + _BinaryenBlockSetChildAt(parent, i, replacement); + return child; + } + } + break; + } + case ExpressionId.If: { + let condition = _BinaryenIfGetCondition(parent); + if (condition == search) { + _BinaryenIfSetCondition(parent, replacement); + return condition; + } + let ifTrue = _BinaryenIfGetIfTrue(parent); + if (ifTrue == search) { + _BinaryenIfSetIfTrue(parent, replacement); + return ifTrue; + } + let ifFalse = _BinaryenIfGetIfFalse(parent); + if (ifFalse == search) { + _BinaryenIfSetIfFalse(parent, replacement); + return ifFalse; + } + break; + } + case ExpressionId.Loop: { + let body = _BinaryenLoopGetBody(parent); + if (body == search) { + _BinaryenLoopSetBody(parent, replacement); + return body; + } + break; + } + case ExpressionId.Break: { + let condition = _BinaryenBreakGetCondition(parent); + if (condition == search) { + _BinaryenBreakSetCondition(parent, replacement); + return condition; + } + let value = _BinaryenBreakGetValue(parent); + if (value == search) { + _BinaryenBreakSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Switch: { + let condition = _BinaryenSwitchGetCondition(parent); + if (condition == search) { + _BinaryenSwitchSetCondition(parent, replacement); + return condition; + } + let value = _BinaryenSwitchGetValue(parent); + if (value == search) { + _BinaryenSwitchSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Call: { + let numOperands = _BinaryenCallGetNumOperands(parent); + for (let i: Index = 0; i < numOperands; ++i) { + let operand = _BinaryenCallGetOperandAt(parent, i); + if (operand == search) { + _BinaryenCallSetOperandAt(parent, i, replacement); + return operand; + } + } + break; + } + case ExpressionId.CallIndirect: { + let target = _BinaryenCallIndirectGetTarget(parent); + if (target == search) { + _BinaryenCallIndirectSetTarget(parent, replacement); + return target; + } + let numOperands = _BinaryenCallIndirectGetNumOperands(parent); + for (let i: Index = 0; i < numOperands; ++i) { + let operand = _BinaryenCallIndirectGetOperandAt(parent, i); + if (operand == search) { + _BinaryenCallIndirectSetOperandAt(parent, i, replacement); + return operand; + } + } + break; + } + case ExpressionId.LocalGet: { + break; + } + case ExpressionId.LocalSet: { + let value = _BinaryenLocalSetGetValue(parent); + if (value == search) { + _BinaryenLocalSetSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.GlobalGet: { + break; + } + case ExpressionId.GlobalSet: { + let value = _BinaryenGlobalSetGetValue(parent); + if (value == search) { + _BinaryenGlobalSetSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Load: { + let ptr = _BinaryenLoadGetPtr(parent); + if (ptr == search) { + _BinaryenLoadSetPtr(parent, replacement); + return ptr; + } + break; + } + case ExpressionId.Store: { + let ptr = _BinaryenStoreGetPtr(parent); + if (ptr == search) { + _BinaryenStoreSetPtr(parent, replacement); + return ptr; + } + let value = _BinaryenStoreGetValue(parent); + if (value == search) { + _BinaryenStoreSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Const: { + break; + } + case ExpressionId.Unary: { + let value = _BinaryenUnaryGetValue(parent); + if (value == search) { + _BinaryenUnarySetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Binary: { + let left = _BinaryenBinaryGetLeft(parent); + if (left == search) { + _BinaryenBinarySetLeft(parent, replacement); + return left; + } + let right = _BinaryenBinaryGetRight(parent); + if (right == search) { + _BinaryenBinarySetRight(parent, replacement); + return right; + } + break; + } + case ExpressionId.Select: { + let ifTrue = _BinaryenSelectGetIfTrue(parent); + if (ifTrue == search) { + _BinaryenSelectSetIfTrue(parent, replacement); + return ifTrue; + } + let ifFalse = _BinaryenSelectGetIfFalse(parent); + if (ifFalse == search) { + _BinaryenSelectSetIfFalse(parent, replacement); + return ifFalse; + } + let condition = _BinaryenSelectGetCondition(parent); + if (condition == search) { + _BinaryenSelectSetCondition(parent, replacement); + return condition; + } + break; + } + case ExpressionId.Drop: { + let value = _BinaryenDropGetValue(parent); + if (value == search) { + _BinaryenDropSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.Return: { + let value = _BinaryenReturnGetValue(parent); + if (value == search) { + _BinaryenReturnSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.MemorySize: { + break; + } + case ExpressionId.MemoryGrow: { + let delta = _BinaryenMemoryGrowGetDelta(parent); + if (delta == search) { + _BinaryenMemoryGrowSetDelta(parent, replacement); + return delta; + } + break; + } + case ExpressionId.Nop: { + break; + } + case ExpressionId.Unreachable: { + break; + } + case ExpressionId.AtomicRMW: { + let ptr = _BinaryenAtomicRMWGetPtr(parent); + if (ptr == search) { + _BinaryenAtomicRMWSetPtr(parent, replacement); + return ptr; + } + let value = _BinaryenAtomicRMWGetValue(parent); + if (value == search) { + _BinaryenAtomicRMWSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.AtomicCmpxchg: { + let ptr = _BinaryenAtomicCmpxchgGetPtr(parent); + if (ptr == search) { + _BinaryenAtomicCmpxchgSetPtr(parent, replacement); + return ptr; + } + let expected = _BinaryenAtomicCmpxchgGetExpected(parent); + if (expected == search) { + _BinaryenAtomicCmpxchgSetExpected(parent, replacement); + return expected; + } + let repl = _BinaryenAtomicCmpxchgGetReplacement(parent); + if (repl == search) { + _BinaryenAtomicCmpxchgSetReplacement(parent, replacement); + return repl; + } + break; + } + case ExpressionId.AtomicWait: { + let ptr = _BinaryenAtomicWaitGetPtr(parent); + if (ptr == search) { + _BinaryenAtomicWaitSetPtr(parent, replacement); + return ptr; + } + let expected = _BinaryenAtomicWaitGetExpected(parent); + if (expected == search) { + _BinaryenAtomicWaitSetExpected(parent, replacement); + return expected; + } + let timeout = _BinaryenAtomicWaitGetTimeout(parent); + if (timeout == search) { + _BinaryenAtomicWaitSetTimeout(parent, replacement); + return timeout; + } + break; + } + case ExpressionId.AtomicNotify: { + let ptr = _BinaryenAtomicNotifyGetPtr(parent); + if (ptr == search) { + _BinaryenAtomicNotifySetPtr(parent, replacement); + return ptr; + } + let notifyCount = _BinaryenAtomicNotifyGetNotifyCount(parent); + if (notifyCount == search) { + _BinaryenAtomicNotifySetNotifyCount(parent, replacement); + return notifyCount; + } + break; + } + case ExpressionId.AtomicFence: { + break; + } + case ExpressionId.SIMDExtract: { + let vec = _BinaryenSIMDExtractGetVec(parent); + if (vec == search) { + _BinaryenSIMDExtractSetVec(parent, replacement); + return vec; + } + break; + } + case ExpressionId.SIMDReplace: { + let vec = _BinaryenSIMDReplaceGetVec(parent); + if (vec == search) { + _BinaryenSIMDReplaceSetVec(parent, replacement); + return vec; + } + let value = _BinaryenSIMDReplaceGetValue(parent); + if (value == search) { + _BinaryenSIMDReplaceSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.SIMDShuffle: { + let left = _BinaryenSIMDShuffleGetLeft(parent); + if (left == search) { + _BinaryenSIMDShuffleSetLeft(parent, replacement); + return left; + } + let right = _BinaryenSIMDShuffleGetRight(parent); + if (right == search) { + _BinaryenSIMDShuffleSetRight(parent, replacement); + return right; + } + break; + } + case ExpressionId.SIMDTernary: { + let a = _BinaryenSIMDTernaryGetA(parent); + if (a == search) { + _BinaryenSIMDTernarySetA(parent, replacement); + return a; + } + let b = _BinaryenSIMDTernaryGetB(parent); + if (b == search) { + _BinaryenSIMDTernarySetB(parent, replacement); + return b; + } + let c = _BinaryenSIMDTernaryGetC(parent); + if (c == search) { + _BinaryenSIMDTernarySetC(parent, replacement); + return c; + } + break; + } + case ExpressionId.SIMDShift: { + let vec = _BinaryenSIMDShiftGetVec(parent); + if (vec == search) { + _BinaryenSIMDShiftSetVec(parent, replacement); + return vec; + } + let shift = _BinaryenSIMDShiftGetShift(parent); + if (shift == search) { + _BinaryenSIMDShiftSetShift(parent, replacement); + return shift; + } + break; + } + case ExpressionId.SIMDLoad: { + let ptr = _BinaryenSIMDLoadGetPtr(parent); + if (ptr == search) { + _BinaryenSIMDLoadSetPtr(parent, replacement); + return ptr; + } + break; + } + // TODO: SIMDLoadStoreLane + case ExpressionId.MemoryInit: { + let dest = _BinaryenMemoryInitGetDest(parent); + if (dest == search) { + _BinaryenMemoryInitSetDest(parent, replacement); + return dest; + } + let offset = _BinaryenMemoryInitGetOffset(parent); + if (offset == search) { + _BinaryenMemoryInitSetOffset(parent, replacement); + return offset; + } + let size = _BinaryenMemoryInitGetSize(parent); + if (size == search) { + _BinaryenMemoryInitSetSize(parent, replacement); + return size; + } + break; + } + case ExpressionId.DataDrop: { + break; + } + case ExpressionId.MemoryCopy: { + let dest = _BinaryenMemoryCopyGetDest(parent); + if (dest == search) { + _BinaryenMemoryCopySetDest(parent, replacement); + return dest; + } + let source = _BinaryenMemoryCopyGetSource(parent); + if (source == search) { + _BinaryenMemoryCopySetSource(parent, replacement); + return source; + } + let size = _BinaryenMemoryCopyGetSize(parent); + if (size == search) { + _BinaryenMemoryCopySetSize(parent, replacement); + return size; + } + break; + } + case ExpressionId.MemoryFill: { + let dest = _BinaryenMemoryFillGetDest(parent); + if (dest == search) { + _BinaryenMemoryFillSetDest(parent, replacement); + return dest; + } + let value = _BinaryenMemoryFillGetValue(parent); + if (value == search) { + _BinaryenMemoryFillSetValue(parent, replacement); + return value; + } + let size = _BinaryenMemoryFillGetSize(parent); + if (size == search) { + _BinaryenMemoryFillSetSize(parent, replacement); + return size; + } + break; + } + case ExpressionId.Pop: { + break; + } + case ExpressionId.RefNull: { + break; + } + case ExpressionId.RefIsNull: { + let value = _BinaryenRefIsNullGetValue(parent); + if (value == search) { + _BinaryenRefIsNullSetValue(parent, replacement); + return value; + } + break; + } + case ExpressionId.RefFunc: { + break; + } + case ExpressionId.RefEq: { + let left = _BinaryenRefEqGetLeft(parent); + if (left == search) { + _BinaryenRefEqSetLeft(parent, replacement); + return left; + } + let right = _BinaryenRefEqGetRight(parent); + if (right == search) { + _BinaryenRefEqSetRight(parent, replacement); + return right; + } + break; + } + case ExpressionId.Try: { + let body = _BinaryenTryGetBody(parent); + if (body == search) { + _BinaryenTrySetBody(parent, replacement); + return body; + } + let catchBody = _BinaryenTryGetCatchBody(parent); + if (catchBody == search) { + _BinaryenTrySetCatchBody(parent, replacement); + return catchBody; + } + break; + } + case ExpressionId.Throw: { + let numOperands = _BinaryenThrowGetNumOperands(parent); + for (let i: Index = 0; i < numOperands; ++i) { + let operand = _BinaryenThrowGetOperandAt(parent, i); + if (operand == search) { + _BinaryenThrowSetOperandAt(parent, i, replacement); + return operand; + } + } + break; + } + case ExpressionId.Rethrow: { + let exnref = _BinaryenRethrowGetExnref(parent); + if (exnref == search) { + _BinaryenRethrowSetExnref(parent, replacement); + return exnref; + } + break; + } + case ExpressionId.BrOnExn: { + let exnref = _BinaryenBrOnExnGetExnref(parent); + if (exnref == search) { + _BinaryenBrOnExnSetExnref(parent, replacement); + return exnref; + } + break; + } + case ExpressionId.TupleMake: { + let numOperands = _BinaryenTupleMakeGetNumOperands(parent); + for (let i: Index = 0; i < numOperands; ++i) { + let operand = _BinaryenTupleMakeGetOperandAt(parent, i); + if (operand == search) { + _BinaryenTupleMakeSetOperandAt(parent, i, replacement); + return operand; + } + } + break; + } + case ExpressionId.TupleExtract: { + let tuple = _BinaryenTupleExtractGetTuple(parent); + if (tuple == search) { + _BinaryenTupleExtractSetTuple(parent, replacement); + return tuple; + } + break; + } + case ExpressionId.I31New: { + assert(false); // TODO + break; + } + case ExpressionId.I31Get: { + assert(false); // TODO + break; + } + case ExpressionId.CallRef: { + assert(false); // TODO + break; + } + case ExpressionId.RefTest: { + assert(false); // TODO + break; + } + case ExpressionId.RefCast: { + assert(false); // TODO + break; + } + case ExpressionId.BrOnCast: { + assert(false); // TODO + break; + } + case ExpressionId.RttCanon: { + assert(false); // TODO + break; + } + case ExpressionId.RttSub: { + assert(false); // TODO + break; + } + case ExpressionId.StructNew: { + assert(false); // TODO + break; + } + case ExpressionId.StructGet: { + assert(false); // TODO + break; + } + case ExpressionId.StructSet: { + assert(false); // TODO + break; + } + case ExpressionId.ArrayNew: { + assert(false); // TODO + break; + } + case ExpressionId.ArrayGet: { + assert(false); // TODO + break; + } + case ExpressionId.ArraySet: { + assert(false); // TODO + break; + } + case ExpressionId.ArrayLen: { + assert(false); // TODO + break; + } + default: throw new Error("unexpected expression id"); + } + return 0; +} diff --git a/src/passes/rtrace.ts b/src/passes/rtrace.ts new file mode 100644 index 0000000000..c60b2c26ba --- /dev/null +++ b/src/passes/rtrace.ts @@ -0,0 +1,80 @@ +/** + * @fileoverview A lightweight store instrumentation pass. + * + * Can be used to find rogue stores to protected memory addresses like object + * headers or similar, without going overboard with instrumentation. Also + * passes a flag whether a store originates within the runtime or other code. + * + * @license Apache-2.0 + */ + +import { + Pass +} from "./pass"; + +import { + Compiler +} from "../compiler"; + +import { + createType, + ExpressionRef, + NativeType +} from "../module"; + +import { + _BinaryenFunctionGetName, + _BinaryenStoreGetBytes, + _BinaryenStoreGetOffset, + _BinaryenStoreGetPtr, + _BinaryenStoreSetPtr +} from "../glue/binaryen"; + +/** Instruments stores to also call an import. */ +export class RtraceMemory extends Pass { + /** Whether we've seen any stores. */ + seenStores: bool = false; + /** Target pointer type. */ + ptrType: NativeType; + + constructor(compiler: Compiler) { + super(compiler.module); + this.ptrType = compiler.options.nativeSizeType; + } + + checkRT(): bool { + var functionName = this.module.readStringCached(_BinaryenFunctionGetName(this.currentFunction))!; + return functionName.startsWith("~lib/rt/"); + } + + /** @override */ + visitStore(store: ExpressionRef): void { + var module = this.module; + var ptr = _BinaryenStoreGetPtr(store); + var offset = _BinaryenStoreGetOffset(store); + var bytes = _BinaryenStoreGetBytes(store); + // onstore(ptr: usize, offset: i32, bytes: i32, isRT: bool) -> ptr + _BinaryenStoreSetPtr(store, + module.call("~onstore", [ + ptr, + module.i32(offset), + module.i32(bytes), + module.i32(i32(this.checkRT())) + ], this.ptrType) + ); + this.seenStores = true; + } + + // TODO: MemoryFill, Atomics + + /** @override */ + walkModule(): void { + super.walkModule(); + if (this.seenStores) { + this.module.addFunctionImport("~onstore", "rtrace", "onstore", + createType([ this.ptrType, NativeType.I32, NativeType.I32, NativeType.I32 ]), + this.ptrType + ); + } + } +} diff --git a/src/passes/shadowstack.ts b/src/passes/shadowstack.ts new file mode 100644 index 0000000000..54ead248b0 --- /dev/null +++ b/src/passes/shadowstack.ts @@ -0,0 +1,666 @@ +/** + * @fileoverview Shadow stack instrumentation for a precise GC. + * + * Instruments function arguments and local assignments marked with a 'tostack' + * call to also do stores to a shadow stack of managed values only. + * + * Consider a simple call to a function looking like the following, taking + * managed arguments, plus assigning managed values to locals: + * + * function foo(a: Obj, b: Obj): Obj { + * var c = __tostack(a) // slot 2 + * __collect() + * return b + * } + * + * foo(__tostack(a), __tostack(b)) // slot 0, 1 + * + * At the call to `__collect()` the 32-bit stack frame of the function is: + * + * Offset | Value stored + * -------|---------------------------- + * 0 | First managed argument 'a' + * 4 | Second managed argument 'b' + * -------|---------------------------- + * 8 | First managed local 'c' + * + * We are splitting the frame in two halves as annotated since both halves are + * only known separately for indirect calls, with the first half becoming an + * extension of the calling function's stack frame by means of treating the + * arguments as if these were locals beyond the caller's `numLocals`. Function + * arguments stay a bit longer on the stack than usually, but we also don't have + * to modify the stack pointer pre-call at all this way. The caller's amended + * stack frame when assuming one managed local may look like this: + * + * Offset | Value stored + * -------|---------------------------- + * 0 | First managed local '?' + * 4 | Extended with first managed argument 'a' + * 8 | Extended with second managed argument 'b' + * + * with the callee's stack frame becoming just: + * + * Offset | Value stored + * -------|---------------------------- + * 0 | First managed local 'c' + * + * Instrumentation added below looks about like the following, with the stack + * growing downwards and 't' and 'r' being new temporary locals: + * + * // callee frameSize = 1 * sizeof() + * function foo(a: usize, b: usize): usize { + * memory.fill(__stack_pointer -= frameSize, 0, frameSize) + * store(__stack_pointer, c = a, 0 * sizeof()) + * __collect() + * var r = b + * __stack_pointer += frameSize + * return r + * } + * + * // caller frameSize = (numLocalSlots + 2 [by extension]) * sizeof() + * ( + * r = foo( + * ( t = a, + * store(__stack_pointer, t, (numLocalSlots + 0) * sizeof()), + * t ), + * ( t = b, + * store(__stack_pointer, t, (numLocalSlots + 1) * sizeof()), + * t ) + * ), + * r + * ) + * + * Also note that we have to `memory.fill` the second half because the first + * assignment to a local may happen at a later point within the function. The + * invariant we need to maintain for a precise GC is that it only sees zeroes + * or valid pointers, but never an invalid pointer left on the stack earlier. + * Since most frames are small, we unroll a sequence of `store`s up to a frame + * size of 16 bytes, and `memory.fill`, if available, beyond. + * + * @license Apache-2.0 + */ + +import { + Pass +} from "./pass"; + +import { + _BinaryenAddFunction, + _BinaryenAddFunctionExport, + _BinaryenCallGetNumOperands, + _BinaryenCallGetOperandAt, + _BinaryenCallGetTarget, + _BinaryenCallIndirectGetNumOperands, + _BinaryenCallIndirectGetOperandAt, + _BinaryenCallIndirectSetOperandAt, + _BinaryenCallSetOperandAt, + _BinaryenExportGetKind, + _BinaryenExportGetName, + _BinaryenExportGetValue, + _BinaryenExpressionGetId, + _BinaryenExpressionGetType, + _BinaryenFunctionGetBody, + _BinaryenFunctionGetName, + _BinaryenFunctionGetNumLocals, + _BinaryenFunctionGetNumVars, + _BinaryenFunctionGetParams, + _BinaryenFunctionGetResults, + _BinaryenFunctionGetVar, + _BinaryenFunctionSetBody, + _BinaryenGetExport, + _BinaryenGetFunction, + _BinaryenLocalSetGetIndex, + _BinaryenLocalSetGetValue, + _BinaryenLocalSetIsTee, + _BinaryenLocalSetSetValue, + _BinaryenRemoveExport, + _BinaryenRemoveFunction, + _BinaryenReturnGetValue, + _BinaryenReturnSetValue, + _free +} from "../glue/binaryen"; + +import { + ExpressionId, + ExpressionRef, + FunctionRef, + Index, + BinaryOp, + NativeType, + allocPtrArray, + Module, + ExternalKind, + ExportRef, + expandType, + isConstZero +} from "../module"; + +import { + Compiler, + Options +} from "../compiler"; + +import { + Feature +} from "../common"; + +import { + BuiltinNames +} from "../builtins"; + +type LocalIndex = Index; +type SlotIndex = Index; +type SlotMap = Map; +type TempMap = Map; + +/** Attempts to match the `__tostack(value)` pattern. Returns `value` if a match, otherwise `0`. */ +function matchTostack(module: Module, expr: ExpressionRef): ExpressionRef { + if (_BinaryenExpressionGetId(expr) == ExpressionId.Call && module.readStringCached(_BinaryenCallGetTarget(expr)) == BuiltinNames.tostack) { + assert(_BinaryenCallGetNumOperands(expr) == 1); + return _BinaryenCallGetOperandAt(expr, 0); + } + return 0; +} + +/** Instruments a module with a shadow stack for precise GC. */ +export class ShadowStackPass extends Pass { + /** Stack frame slots, per function. */ + slotMaps: Map = new Map(); + /** Temporary locals, per function. */ + tempMaps: Map = new Map(); + /** Exports (with managed operands) map. */ + exportMap: Map = new Map(); + /** Compiler reference. */ + compiler: Compiler; + + constructor(compiler: Compiler) { + super(compiler.module); + this.compiler = compiler; + } + + /** Compiler options. */ + get options(): Options { return this.compiler.options; } + /** Target pointer type. */ + get ptrType(): NativeType { return this.options.nativeSizeType; } + /** Target pointer size. */ + get ptrSize(): i32 { return this.ptrType == NativeType.I64 ? 8 : 4; } + /** Target pointer addition operation. */ + get ptrBinaryAdd(): BinaryOp { return this.ptrType == NativeType.I64 ? BinaryOp.AddI64 : BinaryOp.AddI32; } + /** Target pointer subtraction operation. */ + get ptrBinarySub(): BinaryOp { return this.ptrType == NativeType.I64 ? BinaryOp.SubI64 : BinaryOp.SubI32; } + + /** Gets a constant with the specified value of the target pointer type. */ + ptrConst(value: i32): ExpressionRef { + return this.ptrType == NativeType.I64 + ? this.module.i64(value) + : this.module.i32(value); + } + + /** Notes the presence of a slot for the specified (imaginary) local, returning the slot index. */ + noteSlot(func: FunctionRef, localIndex: Index): i32 { + let slotMap: SlotMap; + if (this.slotMaps.has(func)) { + slotMap = changetype(this.slotMaps.get(func)); + if (slotMap.has(localIndex)) { + return changetype(slotMap.get(localIndex)); + } + } else { + slotMap = new Map(); + this.slotMaps.set(func, slotMap); + } + let slotIndex = slotMap.size; + slotMap.set(localIndex, slotIndex); + return slotIndex; + } + + /** Notes the presence of an exported function taking managed operands. */ + noteExport(name: string, managedOperandIndices: i32[]): void { + if (!managedOperandIndices.length) return; + this.exportMap.set(name, managedOperandIndices); + } + + /** Gets a shared temporary local of the given type in the specified functions. */ + getSharedTemp(func: FunctionRef, type: NativeType): Index { + let tempMap: TempMap; + if (this.tempMaps.has(func)) { + tempMap = changetype(this.tempMaps.get(func)); + if (tempMap.has(type)) { + return changetype(tempMap.get(type)); + } + } else { + tempMap = new Map(); + this.tempMaps.set(func, tempMap); + } + let numLocals = _BinaryenFunctionGetNumLocals(func); + let localIndex = numLocals + tempMap.size; + tempMap.set(type, localIndex); + return localIndex; + } + + /** Makes an expression modifying the stack pointer by the given offset. */ + makeStackOffset(offset: i32): ExpressionRef { + assert(offset != 0); + var module = this.module; + var expr = module.global_set(BuiltinNames.stack_pointer, + module.binary(offset >= 0 ? this.ptrBinaryAdd : this.ptrBinarySub, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + this.ptrConst(abs(offset)) + ) + ); + if (offset > 0) return expr; + return module.block(null, [ + expr, + this.makeStackCheck() + ], NativeType.None); + } + + /** Makes a sequence of expressions zeroing the stack frame. */ + makeStackFill(frameSize: i32, stmts: ExpressionRef[]): void { + assert(frameSize > 0); + var module = this.module; + if (this.options.hasFeature(Feature.BULK_MEMORY) && frameSize > 16) { + stmts.push( + module.memory_fill( + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.i32(0), // TODO: Wasm64 also i32? + this.ptrConst(frameSize) + ) + ); + } else { + let remain = frameSize; + while (remain >= 8) { + // store(__stack_pointer, 0, frameSize - remain) + stmts.push( + module.store(8, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.i64(0), + NativeType.I64, + frameSize - remain + ) + ); + remain -= 8; + } + if (remain) { + assert(remain == 4); + // store(__stack_pointer, 0, frameSize - remain) + stmts.push( + module.store(4, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.i32(0), + NativeType.I32, + frameSize - remain + ) + ); + } + } + } + + private hasStackCheckFunction: bool = false; + + /** Makes a check that the current stack pointer is valid. */ + makeStackCheck(): ExpressionRef { + var module = this.module; + if (!this.hasStackCheckFunction) { + this.hasStackCheckFunction = true; + module.addFunction("~stack_check", NativeType.None, NativeType.None, null, + module.if( + module.binary(BinaryOp.LtI32, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.global_get(BuiltinNames.data_end, this.ptrType) + ), + this.compiler.makeStaticAbort(this.compiler.ensureStaticString("stack overflow"), this.compiler.program.nativeSource) + ) + ); + } + return module.call("~stack_check", null, NativeType.None); + } + + private updateCallOperands(operands: ExpressionRef[]): i32 { + var module = this.module; + var numSlots = 0; + for (let i = 0, k = operands.length; i < k; ++i) { + let operand = operands[i]; + let match = matchTostack(module, operand); + if (!match) continue; + if (isConstZero(match)) { + operands[i] = match; + continue; + } + let currentFunction = this.currentFunction; + let numLocals = _BinaryenFunctionGetNumLocals(currentFunction); + let slotIndex = this.noteSlot(currentFunction, numLocals + this.callSlotOffset + i); + let temp = this.getSharedTemp(currentFunction, this.ptrType); + let stmts = new Array(); + // t = value + stmts.push( + module.local_set(temp, match, false) + ); + // store(__stack_pointer, t, slotIndex * ptrSize) + stmts.push( + module.store(this.ptrSize, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.local_get(temp, this.ptrType), + this.ptrType, slotIndex * this.ptrSize + ) + ); + // -> t + stmts.push( + module.local_get(temp, this.ptrType) + ); + operands[i] = module.block(null, stmts, this.ptrType); + ++numSlots; + } + return numSlots; + } + + /** Slot offset accounting for nested calls. */ + private callSlotOffset: i32 = 0; + /** Slot offset stack in nested calls. */ + private callSlotStack: i32[] = new Array(); + + /** @override */ + visitCallPre(call: ExpressionRef): void { + var numOperands = _BinaryenCallGetNumOperands(call); + var operands = new Array(numOperands); + for (let i: Index = 0; i < numOperands; ++i) { + operands[i] = _BinaryenCallGetOperandAt(call, i); + } + let numSlots = this.updateCallOperands(operands); + if (numSlots) { + for (let i = 0, k = operands.length; i < k; ++i) { + _BinaryenCallSetOperandAt(call, i, operands[i]); + } + // Reserve these slots for us so nested calls use their own + this.callSlotOffset += numSlots; + } + this.callSlotStack.push(numSlots); + } + + /** @override */ + visitCall(call: ExpressionRef): void { + let numSlots = this.callSlotStack.pop(); + if (numSlots) this.callSlotOffset -= numSlots; + } + + /** @override */ + visitCallIndirectPre(callIndirect: ExpressionRef): void { + let numOperands = _BinaryenCallIndirectGetNumOperands(callIndirect); + let operands = new Array(numOperands); + for (let i: Index = 0; i < numOperands; ++i) { + operands[i] = _BinaryenCallIndirectGetOperandAt(callIndirect, i); + } + let numSlots = this.updateCallOperands(operands); + if (numSlots) { + for (let i = 0, k = operands.length; i < k; ++i) { + _BinaryenCallIndirectSetOperandAt(callIndirect, i, operands[i]); + } + // Reserve these slots for us so nested calls use their own + this.callSlotOffset += numSlots; + } + this.callSlotStack.push(numSlots); + } + + /** @override */ + visitCallIndirect(callIndirect: ExpressionRef): void { + let numSlots = this.callSlotStack.pop(); + if (numSlots) this.callSlotOffset -= numSlots; + } + + /** @override */ + visitLocalSet(localSet: ExpressionRef): void { + let value = _BinaryenLocalSetGetValue(localSet); + let match = matchTostack(this.module, value); + if (!match) return; + if (isConstZero(match)) { + _BinaryenLocalSetSetValue(localSet, match); + return; + } + var module = this.module; + let index = _BinaryenLocalSetGetIndex(localSet); + let slotIndex = this.noteSlot(this.currentFunction, index); + let stmts = new Array(); + // store(__stack_pointer, local = match, slotIndex * ptrSize) + stmts.push( + module.store(this.ptrSize, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.local_tee(index, match, false), + this.ptrType, slotIndex * this.ptrSize + ) + ); + if (_BinaryenLocalSetIsTee(localSet)) { + // -> local + stmts.push( + module.local_get(index, this.ptrType) + ); + this.replaceCurrent(module.flatten(stmts, this.ptrType)); + } else { + this.replaceCurrent(module.flatten(stmts, NativeType.None)); + } + } + + /** Updates a function with additional locals etc. */ + updateFunction(funcRef: FunctionRef): void { + let name = _BinaryenFunctionGetName(funcRef); + let params = _BinaryenFunctionGetParams(funcRef); + let results = _BinaryenFunctionGetResults(funcRef); + let body = assert(_BinaryenFunctionGetBody(funcRef)); + let numVars = _BinaryenFunctionGetNumVars(funcRef); + let vars = new Array(); + for (let i: Index = 0; i < numVars; ++i) { + vars[i] = _BinaryenFunctionGetVar(funcRef, i); + } + let tempMaps = this.tempMaps; + if (tempMaps.has(funcRef)) { + let tempMap = changetype(tempMaps.get(funcRef)); + for (let _keys = Map_keys(tempMap), i = 0, k = _keys.length; i < k; ++i) { + vars.push(_keys[i]); + } + } + let moduleRef = this.module.ref; + _BinaryenRemoveFunction(moduleRef, name); + let cArr = allocPtrArray(vars); + _BinaryenAddFunction(moduleRef, name, params, results, cArr, vars.length, body); + _free(cArr); + } + + /** Updates a function export taking managed arguments. */ + updateExport(exportRef: ExportRef, managedOperandIndices: i32[]): void { + var module = this.module; + var moduleRef = module.ref; + assert(_BinaryenExportGetKind(exportRef) == ExternalKind.Function); + + var internalNameRef = _BinaryenExportGetValue(exportRef); + var internalName = module.readStringCached(internalNameRef)!; + var externalNameRef = _BinaryenExportGetName(exportRef); + var funcRef = _BinaryenGetFunction(moduleRef, internalNameRef); + var params = _BinaryenFunctionGetParams(funcRef); + var paramTypes = expandType(params); + var numParams = paramTypes.length; + var results = _BinaryenFunctionGetResults(funcRef); + var numLocals = numParams; + var vars = new Array(); + var numSlots = assert(managedOperandIndices.length); + var frameSize = numSlots * this.ptrSize; + var wrapperName = "export:" + internalName; + var wrapperNameRef = module.allocStringCached(wrapperName); + + if (_BinaryenGetFunction(moduleRef, wrapperNameRef) == 0) { + let stmts = new Array(); + // __stack_pointer -= frameSize + stmts.push( + this.makeStackOffset(-frameSize) + ); + for (let slotIndex = 0; slotIndex < numSlots; ++slotIndex) { + // store(__stack_pointer, $local, slotIndex * ptrSize) + stmts.push( + module.store(this.ptrSize, + module.global_get(BuiltinNames.stack_pointer, this.ptrType), + module.local_get(managedOperandIndices[slotIndex], this.ptrType), + this.ptrType, slotIndex * this.ptrSize + ) + ); + } + let forwardedOperands = new Array(numParams); + for (let i = 0; i < numParams; ++i) { + forwardedOperands[i] = module.local_get(i, paramTypes[i]); + } + if (results != NativeType.None) { + let tempIndex = numLocals++; + vars.push(results); + // t = original(...) + stmts.push( + module.local_set(tempIndex, + module.call(internalName, forwardedOperands, results), + false // internal + ) + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + // -> t + stmts.push( + module.local_get(tempIndex, results) + ); + } else { + // original(...) + stmts.push( + module.call(internalName, forwardedOperands, results) + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + } + let cArr = allocPtrArray(vars); + _BinaryenAddFunction(moduleRef, wrapperNameRef, params, results, cArr, vars.length, + module.block(null, stmts, results) + ); + _free(cArr); + } + _BinaryenRemoveExport(moduleRef, externalNameRef); + _BinaryenAddFunctionExport(moduleRef, wrapperNameRef, externalNameRef); + } + + /** @override */ + walkModule(): void { + // Run the pass normally + super.walkModule(); + + // Instrument returns in functions utilizing stack slots + var module = this.module; + var instrumentReturns = new InstrumentReturns(this); + for (let _keys = Map_keys(this.slotMaps), i = 0, k = _keys.length; i < k; ++i) { + let func = _keys[i]; + let slotMap = changetype(this.slotMaps.get(func)); + let frameSize = slotMap.size * this.ptrSize; + + // Instrument function returns + instrumentReturns.frameSize = frameSize; + instrumentReturns.walkFunction(func); + + // Instrument function entry + let stmts = new Array(); + // __stack_pointer -= frameSize + stmts.push( + this.makeStackOffset(-frameSize) + ); + // memory.fill(__stack_pointer, 0, frameSize) + this.makeStackFill(frameSize, stmts); + + // Handle implicit return + let body = _BinaryenFunctionGetBody(func); + let bodyType = _BinaryenExpressionGetType(body); + if (bodyType == NativeType.Unreachable) { + // body + stmts.push( + body + ); + } else if (bodyType == NativeType.None) { + // body + stmts.push( + body + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + } else { + let temp = this.getSharedTemp(func, bodyType); + // t = body + stmts.push( + module.local_set(temp, body, false) + ); + // __stack_pointer += frameSize + stmts.push( + this.makeStackOffset(+frameSize) + ); + // -> t + stmts.push( + module.local_get(temp, bodyType) + ); + } + _BinaryenFunctionSetBody(func, module.flatten(stmts, bodyType)); + } + + // Update functions we added more locals to + // TODO: _BinaryenFunctionAddVar ? + for (let _keys = Map_keys(this.tempMaps), i = 0, k = _keys.length; i < k; ++i) { + this.updateFunction(_keys[i]); + } + + // Update exports taking managed arguments + var exportMap = this.exportMap; + for (let _keys = Map_keys(exportMap), i = 0, k = _keys.length; i < k; ++i) { + let exportName = _keys[i]; + let exportRef = _BinaryenGetExport(module.ref, module.allocStringCached(exportName)); + let managedOperandIndices = changetype(exportMap.get(exportName)); + this.updateExport(exportRef, managedOperandIndices); + } + } +} + +/** Companion pass instrumenting `return` statements to restore the stack frame. */ +class InstrumentReturns extends Pass { + /** Parent pass. */ + parentPass: ShadowStackPass; + /** Frame size of the current function being processed. */ + frameSize: i32 = 0; + + constructor(shadowStack: ShadowStackPass) { + super(shadowStack.module); + this.parentPass = shadowStack; + } + + /** @override */ + visitReturn(ret: ExpressionRef): void { + assert(this.frameSize); + var module = this.module; + var value = _BinaryenReturnGetValue(ret); + var stmts = new Array(); + if (value) { + let returnType = _BinaryenExpressionGetType(value); + let temp = this.parentPass.getSharedTemp(this.currentFunction, returnType); + // t = value + stmts.push( + module.local_set(temp, value, false) + ); + // __stack_pointer += frameSize + stmts.push( + this.parentPass.makeStackOffset(+this.frameSize) + ); + // return t + _BinaryenReturnSetValue(ret, module.local_get(temp, returnType)); + } else { + // __stack_pointer += frameSize + stmts.push( + this.parentPass.makeStackOffset(+this.frameSize) + ); + // return + } + stmts.push( + ret + ); + this.replaceCurrent(module.flatten(stmts, NativeType.Unreachable)); + } +} \ No newline at end of file diff --git a/src/program.ts b/src/program.ts index 8cf6324e98..335d79c812 100644 --- a/src/program.ts +++ b/src/program.ts @@ -678,21 +678,13 @@ export class Program extends DiagnosticEmitter { } private _renewInstance: Function | null = null; - /** Gets the runtime `__retain(ptr: usize): usize` instance. */ - get retainInstance(): Function { - var cached = this._retainInstance; - if (!cached) this._retainInstance = cached = this.requireFunction(CommonNames.retain); + /** Gets the runtime `__link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void` instance. */ + get linkInstance(): Function { + var cached = this._linkInstance; + if (!cached) this._linkInstance = cached = this.requireFunction(CommonNames.link); return cached; } - private _retainInstance: Function | null = null; - - /** Gets the runtime `__release(ptr: usize): void` instance. */ - get releaseInstance(): Function { - var cached = this._releaseInstance; - if (!cached) this._releaseInstance = cached = this.requireFunction(CommonNames.release); - return cached; - } - private _releaseInstance: Function | null = null; + private _linkInstance: Function | null = null; /** Gets the runtime `__collect(): void` instance. */ get collectInstance(): Function { @@ -1007,6 +999,8 @@ export class Program extends DiagnosticEmitter { i64_new(options.shrinkLevelHint, 0)); this.registerConstantInteger(CommonNames.ASC_LOW_MEMORY_LIMIT, Type.i32, i64_new(options.lowMemoryLimit, 0)); + this.registerConstantInteger(CommonNames.ASC_EXPORT_RUNTIME, Type.bool, + i64_new(options.exportRuntime ? 1 : 0, 0)); // register feature hints this.registerConstantInteger(CommonNames.ASC_FEATURE_SIGN_EXTENSION, Type.bool, @@ -1526,12 +1520,12 @@ export class Program extends DiagnosticEmitter { } /** Requires that a global variable is present and returns it. */ - private requireGlobal(name: string): Global { + requireGlobal(name: string): Global { return this.require(name, ElementKind.GLOBAL); } /** Requires that a non-generic global class is present and returns it. */ - private requireClass(name: string): Class { + requireClass(name: string): Class { var prototype = this.require(name, ElementKind.CLASS_PROTOTYPE); var resolved = this.resolver.resolveClass(prototype, null); if (!resolved) throw new Error("Invalid standard library class: " + name); @@ -1539,7 +1533,7 @@ export class Program extends DiagnosticEmitter { } /** Requires that a global function is present and returns it. */ - private requireFunction(name: string, typeArguments: Type[] | null = null): Function { + requireFunction(name: string, typeArguments: Type[] | null = null): Function { var prototype = this.require(name, ElementKind.FUNCTION_PROTOTYPE); var resolved = this.resolver.resolveFunction(prototype, typeArguments); if (!resolved) throw new Error("Invalid standard library function: " + name); @@ -2595,17 +2589,6 @@ export class Program extends DiagnosticEmitter { // } while (current = current.base); // return null; // } - - /** Finds all cyclic classes. */ - findCyclicClasses(): Set { - var cyclics = new Set(); - // TODO: for (let instance of this.managedClasses.values()) { - for (let _values = Map_values(this.managedClasses), i = 0, k = _values.length; i < k; ++i) { - let instance = unchecked(_values[i]); - if (!instance.isAcyclic) cyclics.add(instance); - } - return cyclics; - } } /** Indicates the specific kind of an {@link Element}. */ @@ -3574,8 +3557,6 @@ export class Function extends TypedElement { nextInlineId: i32 = 0; /** Counting id of anonymous inner functions. */ nextAnonymousId: i32 = 0; - /** Counting id of autorelease variables. */ - nextAutoreleaseId: i32 = 0; /** Constructs a new concrete function. */ constructor( @@ -3814,15 +3795,44 @@ export class Field extends VariableLikeElement { registerConcreteElement(this.program, this); } + /** Gets the field's `this` type. */ + get thisType(): Type { + var parent = this.parent; + assert(parent.kind == ElementKind.CLASS); + return (parent).type; + } + /** Gets the internal name of the respective getter function. */ get internalGetterName(): string { - return this.parent.internalName + INSTANCE_DELIMITER + GETTER_PREFIX + this.name; + var cached = this._internalGetterName; + if (cached === null) this._internalGetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + GETTER_PREFIX + this.name; + return cached; } + private _internalGetterName: string | null = null; /** Gets the internal name of the respective setter function. */ get internalSetterName(): string { - return this.parent.internalName + INSTANCE_DELIMITER + SETTER_PREFIX + this.name; + var cached = this._internalSetterName; + if (cached === null) this._internalSetterName = cached = this.parent.internalName + INSTANCE_DELIMITER + SETTER_PREFIX + this.name; + return cached; + } + private _internalSetterName: string | null = null; + + /** Gets the signature of the respective getter function. */ + get internalGetterSignature(): Signature { + var cached = this._internalGetterSignature; + if (!cached) this._internalGetterSignature = cached = new Signature(this.program, null, this.type, this.thisType); + return cached; } + private _internalGetterSignature: Signature | null = null; + + /** Gets the signature of the respective setter function. */ + get internalSetterSignature(): Signature { + var cached = this._internalSetterSignature; + if (!cached) this._internalGetterSignature = cached = new Signature(this.program, [ this.type ], Type.void, this.thisType); + return cached; + } + private _internalSetterSignature: Signature | null = null; } /** A property comprised of a getter and a setter function. */ @@ -4108,12 +4118,6 @@ export class ClassPrototype extends DeclaredElement { } } -const enum AcyclicState { - UNKNOWN, - ACYCLIC, - NOT_ACYCLIC -} - /** A resolved class. */ export class Class extends TypedElement { @@ -4137,8 +4141,6 @@ export class Class extends TypedElement { indexSignature: IndexSignature | null = null; /** Unique class id. */ private _id: u32 = 0; - /** Remembers acyclic state. */ - private _acyclic: AcyclicState = AcyclicState.UNKNOWN; /** Runtime type information flags. */ rttiFlags: u32 = 0; /** Wrapped type, if a wrapper for a basic type. */ @@ -4337,7 +4339,7 @@ export class Class extends TypedElement { var buffer = new Uint8Array(program.blockOverhead + blockSize); var OBJECT = program.OBJECTInstance; OBJECT.writeField("mmInfo", blockSize, buffer, 0); - OBJECT.writeField("gcInfo", 1, buffer, 0); // RC = 1 + OBJECT.writeField("gcInfo", 0, buffer, 0); OBJECT.writeField("gcInfo2", 0, buffer, 0); OBJECT.writeField("rtId", this.id, buffer, 0); OBJECT.writeField("rtSize", payloadSize, buffer, 0); @@ -4471,98 +4473,43 @@ export class Class extends TypedElement { return Type.void; } - /** Tests if this class is inherently acyclic. */ - get isAcyclic(): bool { - var acyclic = this._acyclic; - if (acyclic == AcyclicState.UNKNOWN) { - let hasCycle = this.cyclesTo(this); - if (hasCycle) this._acyclic = acyclic = AcyclicState.NOT_ACYCLIC; - else this._acyclic = acyclic = AcyclicState.ACYCLIC; - } - return acyclic == AcyclicState.ACYCLIC; - } - - /** Tests if this class potentially forms a reference cycle to another one. */ - private cyclesTo(other: Class, except: Set = new Set()): bool { - // TODO: The pure RC paper describes acyclic data structures as classes that may contain - // - // - scalars - // - references to classes that are both acyclic and final (here: Java); and - // - arrays (in our case: also sets, maps) of either of the above - // - // Our implementation, however, treats all objects that do not reference themselves directly - // or indirectly as acylic, allowing them to contain inner cycles of other non-acyclic objects. - // This contradicts the second assumption and must be revisited when actually implementing RC. - - if (except.has(this)) return false; - except.add(this); // don't recurse indefinitely - - // Find out if any field references 'other' directly or indirectly - var current: Class | null; + /** Tests if this class is pointerfree. Useful to know for the GC. */ + get isPointerfree(): bool { + var program = this.program; + var instanceMembers = this.members; if (instanceMembers) { - // TODO: for (let member of instanceMembers.values()) { + + // Check that there are no managed instance fields for (let _values = Map_values(instanceMembers), i = 0, k = _values.length; i < k; ++i) { let member = unchecked(_values[i]); if (member.kind == ElementKind.FIELD) { let fieldType = (member).type; - if (fieldType.isReference) { - if ((current = fieldType.getClass()) !== null && ( - current === other || - current.cyclesTo(other, except) - )) return true; - } + if (fieldType.isManaged) return false; } } - } - // Do the same for non-field data - var basePrototype: ClassPrototype | null; - - // Arrayother?> - if ((basePrototype = this.program.arrayPrototype) !== null && this.prototype.extends(basePrototype)) { - let typeArguments = assert(this.getTypeArgumentsTo(basePrototype)); - assert(typeArguments.length == 1); - if ( - (current = typeArguments[0].classReference) !== null && - ( - current === other || - current.cyclesTo(other, except) - ) - ) return true; - - // Setother?> - } else if ((basePrototype = this.program.setPrototype) !== null && this.prototype.extends(basePrototype)) { - let typeArguments = assert(this.getTypeArgumentsTo(basePrototype)); - assert(typeArguments.length == 1); - if ( - (current = typeArguments[0].classReference) !== null && - ( - current === other || - current.cyclesTo(other, except) - ) - ) return true; - - // Mapother?,V->other?> - } else if ((basePrototype = this.program.mapPrototype) !== null && this.prototype.extends(basePrototype)) { - let typeArguments = assert(this.getTypeArgumentsTo(basePrototype)); - assert(typeArguments.length == 2); - if ( - (current = typeArguments[0].classReference) !== null && - ( - current === other || - current.cyclesTo(other, except) - ) - ) return true; - if ( - (current = typeArguments[1].classReference) !== null && - ( - current === other || - current.cyclesTo(other, except) - ) - ) return true; + // Check that this isn't a managed collection + if (instanceMembers.has(CommonNames.visit)) { + let prototype = this.prototype; + if ( + prototype == program.arrayPrototype || + prototype == program.staticArrayPrototype || + prototype == program.setPrototype || + prototype == program.mapPrototype + ) { + // Note that we cannot know for sure anymore as soon as the collection + // is extended, because user code may implement a custom visitor. + let typeArguments = assert(this.getTypeArgumentsTo(prototype)); + for (let i = 0, k = typeArguments.length; i < k; ++i) { + if (typeArguments[i].isManaged) return false; + } + return true; + } + return false; // has a custom __visit + } } - return false; + return true; } /** Gets all extendees of this class (that do not have the specified instance member). */ diff --git a/src/resolver.ts b/src/resolver.ts index 4de7b91840..82c9acf7fe 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -1151,6 +1151,14 @@ export class Resolver extends DiagnosticEmitter { this.currentElementExpression = null; return element; } + var outerFlow = ctxFlow.outer; + if (outerFlow) { + if (element = outerFlow.lookup(name)) { + this.currentThisExpression = null; + this.currentElementExpression = null; + return element; + } + } if (element = ctxElement.lookup(name)) { this.currentThisExpression = null; this.currentElementExpression = null; diff --git a/src/types.ts b/src/types.ts index d757e8bbff..50b942c330 100644 --- a/src/types.ts +++ b/src/types.ts @@ -844,6 +844,40 @@ export class Signature { return thisReturnType == targetReturnType || thisReturnType.isAssignableTo(targetReturnType); } + /** Tests if this signature has at least one managed operand. */ + get hasManagedOperands(): bool { + var thisType = this.thisType; + if (thisType) { + if (thisType.isManaged) return true; + } + var parameterTypes = this.parameterTypes; + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + if (parameterTypes[i].isManaged) return true; + } + return false; + } + + /** Gets the indices of all managed operands. */ + getManagedOperandIndices(): i32[] { + var indices = new Array(); + var index = 0; + var thisType = this.thisType; + if (thisType) { + if (thisType.isManaged) { + indices.push(index); + } + ++index; + } + var parameterTypes = this.parameterTypes; + for (let i = 0, k = parameterTypes.length; i < k; ++i) { + if (parameterTypes[i].isManaged) { + indices.push(index); + } + ++index; + } + return indices; + } + /** Converts this signature to a string. */ toString(validWat: bool = false): string { var sb = new Array(); diff --git a/src/util/index.ts b/src/util/index.ts index 30d097c078..5900f8c1ca 100644 --- a/src/util/index.ts +++ b/src/util/index.ts @@ -7,5 +7,6 @@ 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/terminal.ts b/src/util/terminal.ts new file mode 100644 index 0000000000..fcfd150483 --- /dev/null +++ b/src/util/terminal.ts @@ -0,0 +1,43 @@ +/** + * @fileoverview Terminal utility. + * @license Apache-2.0 + */ + +/** Gray terminal color code. */ +export const COLOR_GRAY = "\u001b[90m"; +/** Red terminal color code. */ +export const COLOR_RED = "\u001b[91m"; +/** Green terminal color code. */ +export const COLOR_GREEN = "\u001b[92m"; +/** Yellow terminal color code. */ +export const COLOR_YELLOW = "\u001b[93m"; +/** Blue terminal color code. */ +export const COLOR_BLUE = "\u001b[94m"; +/** Magenta terminal color code. */ +export const COLOR_MAGENTA = "\u001b[95m"; +/** Cyan terminal color code. */ +export const COLOR_CYAN = "\u001b[96m"; +/** White terminal color code. */ +export const COLOR_WHITE = "\u001b[97m"; +/** Terminal color reset code. */ +export const COLOR_RESET = "\u001b[0m"; + +/** Whether terminal colors are enabled or not. */ +var colorsEnabled = true; + +/** Checks whether terminal colors are enabled or not. */ +export function isColorsEnabled(): bool { + return colorsEnabled; +} + +/** Sets whether terminal colors are enabled or not. */ +export function setColorsEnabled(isEnabled: bool): bool { + var wasEnabled = isEnabled; + colorsEnabled = isEnabled; + return wasEnabled; +} + +/** Wraps the specified text in the specified terminal color code. */ +export function colorize(text: string, color: string): string { + return colorsEnabled ? color + text + COLOR_RESET : text; +} diff --git a/std/assembly/array.ts b/std/assembly/array.ts index 93a6711119..695cdbab83 100644 --- a/std/assembly/array.ts +++ b/std/assembly/array.ts @@ -14,11 +14,12 @@ function ensureSize(array: usize, minSize: usize, alignLog2: u32): void { if (minSize > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); let oldData = changetype(changetype(array).buffer); let newCapacity = minSize << alignLog2; - let newData = __renew(oldData, newCapacity); // keeps RC + let newData = __renew(oldData, newCapacity); memory.fill(newData + oldCapacity, 0, newCapacity - oldCapacity); if (newData !== oldData) { // oldData has been free'd store(array, newData, offsetof("buffer")); store(array, newData, offsetof("dataStart")); + __link(array, changetype(newData), false); } store(array, newCapacity, offsetof("byteLength")); } @@ -56,10 +57,10 @@ export class Array { constructor(length: i32 = 0) { if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); var bufferSize = length << alignof(); - var buffer = __new(bufferSize, idof()); - memory.fill(buffer, 0, bufferSize); - this.buffer = changetype(buffer); // retains - this.dataStart = buffer; + var buffer = changetype(__new(bufferSize, idof())); + memory.fill(changetype(buffer), 0, bufferSize); + this.buffer = buffer; // links + this.dataStart = changetype(buffer); this.byteLength = bufferSize; this.length_ = length; } @@ -69,20 +70,7 @@ export class Array { } set length(newLength: i32) { - var oldLength = this.length_; - if (isManaged()) { - if (oldLength > newLength) { // release no longer used refs - let dataStart = this.dataStart; - let cur = dataStart + (newLength << alignof()); - let end = dataStart + (oldLength << alignof()); - do __release(load(cur)); - while ((cur += sizeof()) < end); - } else { - ensureSize(changetype(this), newLength, alignof()); - } - } else { - ensureSize(changetype(this), newLength, alignof()); - } + ensureSize(changetype(this), newLength, alignof()); this.length_ = newLength; } @@ -125,15 +113,9 @@ export class Array { } @unsafe @operator("{}=") private __uset(index: i32, value: T): void { + store(this.dataStart + (index << alignof()), value); if (isManaged()) { - let offset = this.dataStart + (index << alignof()); - let oldRef = load(offset); - if (changetype(value) != oldRef) { - store(offset, __retain(changetype(value))); - __release(oldRef); - } - } else { - store(this.dataStart + (index << alignof()), value); + __link(changetype(this), changetype(value), true); } } @@ -144,11 +126,8 @@ export class Array { end = end < 0 ? max(length + end, 0) : min(end, length); if (isManaged()) { for (; start < end; ++start) { - let oldRef: usize = load(dataStart + (start << alignof())); - if (changetype(value) != oldRef) { - store(dataStart + (start << alignof()), __retain(changetype(value))); - __release(oldRef); - } + store(dataStart + (start << alignof()), changetype(value)); + __link(changetype(this), changetype(value), true); } } else if (sizeof() == 1) { if (start < end) { @@ -214,7 +193,8 @@ export class Array { var newLength = length + 1; ensureSize(changetype(this), newLength, alignof()); if (isManaged()) { - store(this.dataStart + (length << alignof()), __retain(changetype(value))); + store(this.dataStart + (length << alignof()), changetype(value)); + __link(changetype(this), changetype(value), true); } else { store(this.dataStart + (length << alignof()), value); } @@ -227,21 +207,23 @@ export class Array { var otherLen = select(0, other.length_, other === null); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__newArray(outLen, alignof(), idof>())); // retains + var out = changetype>(__newArray(outLen, alignof(), idof>())); var outStart = out.dataStart; var thisSize = thisLen << alignof(); if (isManaged()) { let thisStart = this.dataStart; for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { let ref = load(thisStart + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } outStart += thisSize; let otherStart = other.dataStart; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { let ref = load(otherStart + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } } else { memory.copy(outStart, this.dataStart, thisSize); @@ -261,37 +243,11 @@ export class Array { var last = end < 0 ? max(len + end, 0) : min(end, len); var count = min(last - from, len - to); - if (isManaged()) { - if (from < to && to < (from + count)) { // right to left - from += count - 1; - to += count - 1; - while (count) { - let oldRef: usize = load(dataStart + (to << alignof())); - let newRef: usize = load(dataStart + (from << alignof())); - if (newRef != oldRef) { - store(dataStart + (to << alignof()), __retain(newRef)); - __release(oldRef); - } - --from, --to, --count; - } - } else { // left to right - while (count) { - let oldRef: usize = load(dataStart + (to << alignof())); - let newRef: usize = load(dataStart + (from << alignof())); - if (newRef != oldRef) { - store(dataStart + (to << alignof()), __retain(newRef)); - __release(oldRef); - } - ++from, ++to, --count; - } - } - } else { - memory.copy( // is memmove - dataStart + (to << alignof()), - dataStart + (from << alignof()), - count << alignof() - ); - } + memory.copy( // is memmove + dataStart + (to << alignof()), + dataStart + (from << alignof()), + count << alignof() + ); return this; } @@ -300,7 +256,7 @@ export class Array { if (length < 1) throw new RangeError(E_EMPTYARRAY); var element = load(this.dataStart + ((--length) << alignof())); this.length_ = length; - return element; // no need to retain -> is moved + return element; } forEach(fn: (value: T, index: i32, array: Array) => void): void { @@ -311,22 +267,20 @@ export class Array { map(fn: (value: T, index: i32, array: Array) => U): Array { var length = this.length_; - var out = changetype>(__newArray(length, alignof(), idof>())); // retains + var out = changetype>(__newArray(length, alignof(), idof>())); var outStart = out.dataStart; for (let index = 0; index < min(length, this.length_); ++index) { - let result = fn(load(this.dataStart + (index << alignof())), index, this); // retains + let result = fn(load(this.dataStart + (index << alignof())), index, this); + store(outStart + (index << alignof()), result); if (isManaged()) { - store(outStart + (index << alignof()), __retain(changetype(result))); - } else { - store(outStart + (index << alignof()), result); + __link(changetype(out), changetype(result), true); } - // releases result } return out; } filter(fn: (value: T, index: i32, array: Array) => bool): Array { - var result = changetype>(__newArray(0, alignof(), idof>())); // retains + var result = changetype>(__newArray(0, alignof(), idof>())); for (let index = 0, length = this.length_; index < min(length, this.length_); ++index) { let value = load(this.dataStart + (index << alignof())); if (fn(value, index, this)) result.push(value); @@ -374,7 +328,7 @@ export class Array { store(base + (lastIndex << alignof()), 0); } this.length_ = lastIndex; - return element; // no need to retain -> is moved + return element; } some(fn: (value: T, index: i32, array: Array) => bool): bool { @@ -393,10 +347,9 @@ export class Array { dataStart, (newLength - 1) << alignof() ); + store(dataStart, value); if (isManaged()) { - store(dataStart, __retain(changetype(value))); - } else { - store(dataStart, value); + __link(changetype(this), changetype(value), true); } this.length_ = newLength; return newLength; @@ -407,7 +360,7 @@ export class Array { start = start < 0 ? max(start + length, 0) : min(start, length); end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); - var slice = changetype>(__newArray(length, alignof(), idof>())); // retains + var slice = changetype>(__newArray(length, alignof(), idof>())); var sliceBase = slice.dataStart; var thisBase = this.dataStart + (start << alignof()); if (isManaged()) { @@ -415,7 +368,8 @@ export class Array { let end = length << alignof(); while (off < end) { let ref = load(thisBase + off); - store(sliceBase + off, __retain(ref)); + store(sliceBase + off, ref); + __link(changetype(slice), ref, true); off += sizeof(); } } else { @@ -428,11 +382,10 @@ export class Array { var length = this.length_; start = start < 0 ? max(length + start, 0) : min(start, length); deleteCount = max(min(deleteCount, length - start), 0); - var result = changetype>(__newArray(deleteCount, alignof(), idof>())); // retains + var result = changetype>(__newArray(deleteCount, alignof(), idof>())); var resultStart = result.dataStart; var thisStart = this.dataStart; var thisBase = thisStart + (start << alignof()); - // no need to retain -> is moved memory.copy( resultStart, thisBase, @@ -516,16 +469,17 @@ export class Array { // calculate the byteLength of the resulting backing ArrayBuffer var byteLength = size << usize(alignof>()); - var dataStart = __new(byteLength, idof()); + var outBuffer = changetype(__new(byteLength, idof())); // create the return value and initialize it - var result = __new(offsetof(), idof()); - store(result, size, offsetof("length_")); + var outArray = changetype(__new(offsetof(), idof())); + store(changetype(outArray), size, offsetof("length_")); // byteLength, dataStart, and buffer are all readonly - store(result, byteLength, offsetof("byteLength")); - store(result, dataStart, offsetof("dataStart")); - store(result, __retain(dataStart), offsetof("buffer")); + store(changetype(outArray), byteLength, offsetof("byteLength")); + store(changetype(outArray), changetype(outBuffer), offsetof("dataStart")); + store(changetype(outArray), changetype(outBuffer), offsetof("buffer")); + __link(changetype(outArray), changetype(outBuffer), false); // set the elements var resultOffset: usize = 0; @@ -538,7 +492,7 @@ export class Array { // copy the underlying buffer data to the result buffer let childDataLength = load(child, offsetof("byteLength")); memory.copy( - dataStart + resultOffset, + changetype(outBuffer) + resultOffset, load(child, offsetof("dataStart")), childDataLength ); @@ -547,14 +501,15 @@ export class Array { resultOffset += childDataLength; } - // if the `valueof` type is managed, we must call __retain() on each reference + // if the `valueof` type is managed, we must link each reference if (isManaged>()) { for (let i = 0; i < size; i++) { - __retain(load(dataStart + (i << usize(alignof>())))); + let ref = load(changetype(outBuffer) + (i << usize(alignof>()))); + __link(changetype(outBuffer), ref, true); } } - return changetype(result); + return outArray; } toString(): string { diff --git a/std/assembly/arraybuffer.ts b/std/assembly/arraybuffer.ts index 433e3636ba..d1173c9799 100644 --- a/std/assembly/arraybuffer.ts +++ b/std/assembly/arraybuffer.ts @@ -16,10 +16,10 @@ export abstract class ArrayBufferView { protected constructor(length: i32, alignLog2: i32) { if (length > BLOCK_MAXSIZE >>> alignLog2) throw new RangeError(E_INVALIDLENGTH); - var buffer = __new(length = length << alignLog2, idof()); - memory.fill(buffer, 0, length); - this.buffer = changetype(buffer); // retains - this.dataStart = buffer; + var buffer = changetype(__new(length = length << alignLog2, idof())); + memory.fill(changetype(buffer), 0, length); + this.buffer = buffer; // links + this.dataStart = changetype(buffer); this.byteLength = length; } } @@ -47,9 +47,9 @@ export abstract class ArrayBufferView { constructor(length: i32) { if (length > BLOCK_MAXSIZE) throw new RangeError(E_INVALIDLENGTH); - var buffer = __new(length, idof()); - memory.fill(buffer, 0, length); - return changetype(buffer); // retains + var buffer = changetype(__new(length, idof())); + memory.fill(changetype(buffer), 0, length); + return buffer; } get byteLength(): i32 { @@ -61,9 +61,9 @@ export abstract class ArrayBufferView { begin = begin < 0 ? max(length + begin, 0) : min(begin, length); end = end < 0 ? max(length + end , 0) : min(end , length); var outSize = max(end - begin, 0); - var out = __new(outSize, idof()); - memory.copy(out, changetype(this) + begin, outSize); - return changetype(out); // retains + var out = changetype(__new(outSize, idof())); + memory.copy(changetype(out), changetype(this) + begin, outSize); + return out; } toString(): string { diff --git a/std/assembly/bindings/wasi_snapshot_preview1.ts b/std/assembly/bindings/wasi_snapshot_preview1.ts index 2470e06c49..0914d44cd1 100644 --- a/std/assembly/bindings/wasi_snapshot_preview1.ts +++ b/std/assembly/bindings/wasi_snapshot_preview1.ts @@ -959,6 +959,90 @@ export namespace errno { } export type errno = u16; +/** Translates an error code to a string. */ +export function errnoToString(err: errno): string { + switch (err) { + case errno.SUCCESS: return "SUCCESS"; + case errno.TOOBIG: return "TOOBIG"; + case errno.ACCES: return "ACCES"; + case errno.ADDRINUSE: return "ADDRINUSE"; + case errno.ADDRNOTAVAIL: return "ADDRNOTAVAIL"; + case errno.AFNOSUPPORT: return "AFNOSUPPORT"; + case errno.AGAIN: return "AGAIN"; + case errno.ALREADY: return "ALREADY"; + case errno.BADF: return "BADF"; + case errno.BADMSG: return "BADMSG"; + case errno.BUSY: return "BUSY"; + case errno.CANCELED: return "CANCELED"; + case errno.CHILD: return "CHILD"; + case errno.CONNABORTED: return "CONNABORTED"; + case errno.CONNREFUSED: return "CONNREFUSED"; + case errno.CONNRESET: return "CONNRESET"; + case errno.DEADLK: return "DEADLK"; + case errno.DESTADDRREQ: return "DESTADDRREQ"; + case errno.DOM: return "DOM"; + case errno.DQUOT: return "DQUOT"; + case errno.EXIST: return "EXIST"; + case errno.FAULT: return "FAULT"; + case errno.FBIG: return "FBIG"; + case errno.HOSTUNREACH: return "HOSTUNREACH"; + case errno.IDRM: return "IDRM"; + case errno.ILSEQ: return "ILSEQ"; + case errno.INPROGRESS: return "INPROGRESS"; + case errno.INTR: return "INTR"; + case errno.INVAL: return "INVAL"; + case errno.IO: return "IO"; + case errno.ISCONN: return "ISCONN"; + case errno.ISDIR: return "ISDIR"; + case errno.LOOP: return "LOOP"; + case errno.MFILE: return "MFILE"; + case errno.MLINK: return "MLINK"; + case errno.MSGSIZE: return "MSGSIZE"; + case errno.MULTIHOP: return "MULTIHOP"; + case errno.NAMETOOLONG: return "NAMETOOLONG"; + case errno.NETDOWN: return "NETDOWN"; + case errno.NETRESET: return "NETRESET"; + case errno.NETUNREACH: return "NETUNREACH"; + case errno.NFILE: return "NFILE"; + case errno.NOBUFS: return "NOBUFS"; + case errno.NODEV: return "NODEV"; + case errno.NOENT: return "NOENT"; + case errno.NOEXEC: return "NOEXEC"; + case errno.NOLCK: return "NOLCK"; + case errno.NOLINK: return "NOLINK"; + case errno.NOMEM: return "NOMEM"; + case errno.NOMSG: return "NOMSG"; + case errno.NOPROTOOPT: return "NOPROTOOPT"; + case errno.NOSPC: return "NOSPC"; + case errno.NOSYS: return "NOSYS"; + case errno.NOTCONN: return "NOTCONN"; + case errno.NOTDIR: return "NOTDIR"; + case errno.NOTEMPTY: return "NOTEMPTY"; + case errno.NOTRECOVERABLE: return "NOTRECOVERABLE"; + case errno.NOTSOCK: return "NOTSOCK"; + case errno.NOTSUP: return "NOTSUP"; + case errno.NOTTY: return "NOTTY"; + case errno.NXIO: return "NXIO"; + case errno.OVERFLOW: return "OVERFLOW"; + case errno.OWNERDEAD: return "OWNERDEAD"; + case errno.PERM: return "PERM"; + case errno.PIPE: return "PIPE"; + case errno.PROTO: return "PROTO"; + case errno.PROTONOSUPPORT: return "PROTONOSUPPORT"; + case errno.PROTOTYPE: return "PROTOTYPE"; + case errno.RANGE: return "RANGE"; + case errno.ROFS: return "ROFS"; + case errno.SPIPE: return "SPIPE"; + case errno.SRCH: return "SRCH"; + case errno.STALE: return "STALE"; + case errno.TIMEDOUT: return "TIMEDOUT"; + case errno.TXTBSY: return "TXTBSY"; + case errno.XDEV: return "XDEV"; + case errno.NOTCAPABLE: return "NOTCAPABLE"; + } + return "UNKNOWN"; +} + @unmanaged abstract class $event { // size=16/32 /** User-provided value that got attached to `subscription#userdata`. */ userdata: userdata; diff --git a/std/assembly/compat.ts b/std/assembly/compat.ts index b2391ea8cb..372e4aa04f 100644 --- a/std/assembly/compat.ts +++ b/std/assembly/compat.ts @@ -1,2 +1 @@ - export type ReturnType = returnof; diff --git a/std/assembly/console.ts b/std/assembly/console.ts new file mode 100644 index 0000000000..21b589ed15 --- /dev/null +++ b/std/assembly/console.ts @@ -0,0 +1,100 @@ +import { + process +} from "./process"; + +// @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"); + } + } + + export function log(message: string): void { + var stdout = process.stdout; + stdout.write(message); + stdout.write("\n"); + } + + export function debug(message: string): void { + var stdout = process.stdout; + stdout.write("Debug: "); + stdout.write(message); + stdout.write("\n"); + } + + export function info(message: string): void { + var stdout = process.stdout; + stdout.write("Info: "); + stdout.write(message); + stdout.write("\n"); + } + + export function warn(message: string): void { + var stdout = process.stdout; + stdout.write("Warning: "); + stdout.write(message); + stdout.write("\n"); + } + + export function error(message: string): void { + var stdout = process.stdout; + stdout.write("Error: "); + stdout.write(message); + stdout.write("\n"); + } + + export function time(label: string): 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; + } + timers.set(label, process.hrtime()); + } + + export function timeLog(label: string): 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; + } + timeLogImpl(label); + } + + export function timeEnd(label: string): 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; + } + timeLogImpl(label); + timers.delete(label); + } +} + +function timeLogImpl(label: string): void { + var start = changetype(timers.get(label)); + var end = process.hrtime(); + var nanos = end - start; + var millis = nanos / 1000000; + var millisStr = millis.toString(); + var stdout = process.stdout; + stdout.write(label); + stdout.write(": "); + stdout.write(millisStr); + stdout.write("ms\n"); + // __dispose(changetype(millisStr)); +} diff --git a/std/assembly/crypto.ts b/std/assembly/crypto.ts new file mode 100644 index 0000000000..2eaa97e906 --- /dev/null +++ b/std/assembly/crypto.ts @@ -0,0 +1,11 @@ +import { + errnoToString, + random_get +} from "bindings/wasi_snapshot_preview1"; + +export namespace crypto { + export function getRandomValues(array: Uint8Array): void { + var err = random_get(changetype(array.buffer), array.byteLength); + if (err) throw new Error(errnoToString(err)); + } +} diff --git a/std/assembly/dataview.ts b/std/assembly/dataview.ts index 3ab53b634a..8a475cbc5d 100644 --- a/std/assembly/dataview.ts +++ b/std/assembly/dataview.ts @@ -23,7 +23,7 @@ export class DataView { i32(byteLength > BLOCK_MAXSIZE) | i32(byteOffset + byteLength > buffer.byteLength) ) throw new RangeError(E_INVALIDLENGTH); - this.buffer = buffer; // retains + this.buffer = buffer; // links var dataStart = changetype(buffer) + byteOffset; this.dataStart = dataStart; this.byteLength = byteLength; diff --git a/std/assembly/gc.ts b/std/assembly/gc.ts deleted file mode 100644 index 93523a3bcb..0000000000 --- a/std/assembly/gc.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// - -/** Garbage collector interface. */ -export namespace gc { - - /** Performs a full garbage collection cycle. */ - export function collect(): void { - __collect(); - } -} diff --git a/std/assembly/index.d.ts b/std/assembly/index.d.ts index 1889fcce55..41c3b14980 100644 --- a/std/assembly/index.d.ts +++ b/std/assembly/index.d.ts @@ -60,6 +60,8 @@ declare const ASC_OPTIMIZE_LEVEL: i32; declare const ASC_SHRINK_LEVEL: i32; /** Provided lowMemoryLimit option. */ declare const ASC_LOW_MEMORY_LIMIT: i32; +/** Provided noExportRuntime option. */ +declare const ASC_NO_EXPORT_RUNTIME: i32; /** Whether the sign extension feature is enabled. */ declare const ASC_FEATURE_SIGN_EXTENSION: bool; /** Whether the mutable globals feature is enabled. */ @@ -138,6 +140,10 @@ declare function unreachable(): never; declare const NaN: f32 | f64; /** Positive infinity as a 32-bit or 64-bit float depending on context. */ declare const Infinity: f32 | f64; +/** Data end offset. */ +declare const __data_end: usize; +/** Stack pointer offset. */ +declare var __stack_pointer: usize; /** Heap base offset. */ declare const __heap_base: usize; /** Determines the byte size of the specified underlying core type. Compiles to a constant. */ @@ -1328,14 +1334,6 @@ declare namespace heap { export function realloc(ptr: usize, size: usize): usize; /** Frees a chunk of memory. Does hardly anything (most recent block only) with the stub/none runtime. */ export function free(ptr: usize): void; - /** Dangerously resets the entire heap. Specific to the stub/none runtime. */ - export function reset(): void; -} - -/** Garbage collector interface. */ -declare namespace gc { - /** Performs a full garbage collection cycle. */ - export function collect(): void; } /** Table operations. */ @@ -1929,6 +1927,73 @@ declare function trace(msg: string, n?: i32, a0?: f64, a1?: f64, a2?: f64, a3?: /** Environmental seeding function. */ declare function seed(): f64; +/** Node-like process on top of WASI. */ +declare namespace process { + /** String representing the CPU architecture for which the binary was compiled. Either `wasm32` or `wasm64`. */ + export const arch: string; + /** String representing the operating system platform for which the binary was compiled. Always `wasm`. */ + export const platform: string; + /** Array of command line arguments passed to the binary upon instantiation. */ + export const argv: string[]; + /** Map of variables in the binary's user environment. */ + export const env: Map; + /** Process exit code to use when the process exits gracefully. Defaults to `0`. */ + export var exitCode: i32; + /** Terminates the process with either the given exit code, or `process.exitCode` if omitted. */ + export function exit(code?: i32): void; + /** Stream connected to `stdin` (fd `0`). */ + export const stdin: ReadableStream; + /** Stream connected to `stdout` (fd `1`). */ + export const stdout: WritableStream; + /** Stream connected to `stderr` (fd `2`). */ + export const stderr: WritableStream; + /** Obtains the system's current time of day, in milliseconds since Unix epoch. */ + export function time(): i64; + /** Obtains the system's monotonic high resolution time, in nanoseconds since an arbitrary time in the past. */ + export function hrtime(): u64; + + interface Stream { + /** Closes the stream. Throws if already closed or if the stream cannot be closed. */ + close(): void; + } + interface ReadableStream extends Stream { + /** Reads available data from the stream, into `buffer` at offset `offset`, returning the number of bytes read. */ + read(buffer: ArrayBuffer, offset?: isize): i32; + } + interface WritableStream extends Stream { + /** Writes string or buffer to the stream. */ + write(data: T): void; + } +} + +/** Browser-like console on top of WASI. */ +declare namespace console { + /** Logs `message` to console if `assertion` is false-ish. */ + export function assert(assertion: T, message: string): void; + /** Outputs `message` to the console. */ + export function log(message: string): void; + /** Outputs `message` to the console, prefixed with "Debug:". */ + export function debug(message: string): void; + /** Outputs `message` to the console, prefixed with "Info:". */ + export function info(message: string): void; + /** Outputs `message` to the console, prefixed with "Warning:". */ + export function warn(message: string): void; + /** Outputs `message` to the console, prefixed with "Error:". */ + export function error(message: string): void; + /** Starts a new timer using the specified `label`. */ + export function time(label: string): void; + /** Logs the current value of a timer previously started with `console.time`. */ + export function timeLog(label: string): void; + /** Logs the current value of a timer previously started with `console.time` and discards the timer. */ + export function timeEnd(label: string): void; +} + +/** Browser-like crypto utilities on top of WASI. */ +declare namespace crypto { + /** Fills `array` with cryptographically strong random values. */ + export function getRandomValues(array: Uint8Array): void; +} + // Decorators interface TypedPropertyDescriptor { @@ -1994,6 +2059,3 @@ declare function external(...args: any[]): any; /** Annotates a global for lazy compilation. */ declare function lazy(...args: any[]): any; - -/** Annotates a function as the explicit start function. */ -declare function start(...args: any[]): any; diff --git a/std/assembly/map.ts b/std/assembly/map.ts index c888cbc27f..a90ce8b622 100644 --- a/std/assembly/map.ts +++ b/std/assembly/map.ts @@ -111,14 +111,9 @@ export class Map { var hashCode = HASH(key); var entry = this.find(key, hashCode); // unmanaged! if (entry) { + entry.value = value; if (isManaged()) { - let oldRef = changetype(entry.value); - if (changetype(value) != oldRef) { - entry.value = changetype(__retain(changetype(value))); - __release(oldRef); - } - } else { - entry.value = value; + __link(changetype(this), changetype(value), true); } } else { // check if rehashing is necessary @@ -133,12 +128,14 @@ export class Map { let entries = this.entries; entry = changetype>(changetype(entries) + (this.entriesOffset++) * ENTRY_SIZE()); // link with the map - entry.key = isManaged() - ? changetype(__retain(changetype(key))) - : key; - entry.value = isManaged() - ? changetype(__retain(changetype(value))) - : value; + entry.key = key; + if (isManaged()) { + __link(changetype(this), changetype(key), true); + } + entry.value = value; + if (isManaged()) { + __link(changetype(this), changetype(value), true); + } ++this.entriesCount; // link with previous entry in bucket let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE; @@ -151,8 +148,6 @@ export class Map { delete(key: K): bool { var entry = this.find(key, HASH(key)); if (!entry) return false; - if (isManaged()) __release(changetype(entry.key)); - if (isManaged()) __release(changetype(entry.value)); entry.taggedNext |= EMPTY; --this.entriesCount; // check if rehashing is appropriate diff --git a/std/assembly/memory.ts b/std/assembly/memory.ts index e1b612af21..f85574fc58 100644 --- a/std/assembly/memory.ts +++ b/std/assembly/memory.ts @@ -67,6 +67,14 @@ export namespace memory { export declare function data(size: T, align?: i32): usize; } +// @ts-ignore: decorator +@builtin +export declare const __data_end: usize; + +// @ts-ignore: decorator +@builtin +export declare var __stack_pointer: usize; + // @ts-ignore: decorator @builtin export declare const __heap_base: usize; @@ -86,15 +94,19 @@ export namespace heap { return __realloc(ptr, size); } - /** Frees a chunk of memory. Does hardly anything (most recent block only) with the stub/none runtime. */ + /** Frees a chunk of memory. Does hardly anything (most recent block only) with the stub runtime. */ // @ts-ignore: decorator @unsafe export function free(ptr: usize): void { __free(ptr); } - /** Dangerously resets the entire heap. Specific to the stub/none runtime. */ + /** Dangerously resets the entire heap. Specific to the stub runtime. */ // @ts-ignore: decorator @unsafe export function reset(): void { - __reset(); + if (isDefined(__reset)) { + __reset(); + } else { + throw new Error(E_NOTIMPLEMENTED); + } } } diff --git a/std/assembly/process.ts b/std/assembly/process.ts new file mode 100644 index 0000000000..9ada556340 --- /dev/null +++ b/std/assembly/process.ts @@ -0,0 +1,190 @@ +import { + args_get, + args_sizes_get, + environ_get, + environ_sizes_get, + proc_exit, + fd_write, + fd_close, + fd_read, + clock_time_get, + clockid, + errnoToString, + fd +} from "bindings/wasi_snapshot_preview1"; + +import { + E_INDEXOUTOFRANGE +} from "util/error"; + +// @ts-ignore: decorator +@lazy const iobuf = memory.data(4 * sizeof()); + +export namespace process { + + // @ts-ignore: decorator + @lazy export const arch = sizeof() == 4 ? "wasm32" : "wasm64"; + + // @ts-ignore: decorator + @lazy export const platform = "wasm"; + + // @ts-ignore: decorator + @lazy export const argv = lazyArgv(); + + // @ts-ignore: decorator + @lazy export const env = lazyEnv(); + + // @ts-ignore: decorator + @lazy export var exitCode = 0; + + export function exit(code: i32 = exitCode): void { + proc_exit(code); + } + + // @ts-ignore: decorator + @lazy export const stdin = changetype(0); + // @ts-ignore: decorator + @lazy export const stdout = changetype(1); + // @ts-ignore: decorator + @lazy export const stderr = changetype(2); + + export function time(): i64 { + var err = clock_time_get(clockid.REALTIME, 1000000, iobuf); + if (err) throw new Error(errnoToString(err)); + return load(iobuf) / 1000000; + } + + export function hrtime(): u64 { + var err = clock_time_get(clockid.MONOTONIC, 0, iobuf); + if (err) throw new Error(errnoToString(err)); + return load(iobuf); + } +} + +function lazyArgv(): string[] { + var err = args_sizes_get(iobuf, iobuf + sizeof()); + if (err) throw new Error(errnoToString(err)); + var count = load(iobuf); + var ptrsSize = count * sizeof(); + var dataSize = load(iobuf, 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; + } + __free(buf); + return argv; +} + +function lazyEnv(): Map { + var err = environ_sizes_get(iobuf, iobuf + 4); + if (err) throw new Error(errnoToString(err)); + var count = load(iobuf); + var ptrsSize = count * sizeof(); + var dataSize = load(iobuf, 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, ""); + } + } + __free(buf); + return env; +} + +@unmanaged +abstract class Stream { + close(): void { + var err = fd_close(changetype(this)); + if (err) throw new Error(errnoToString(err)); + } +} + +@unmanaged +abstract class WritableStream extends Stream { + write(data: T): void { + if (isString()) { + writeString(changetype(this), changetype(data)); + } else if (data instanceof ArrayBuffer) { + writeBuffer(changetype(this), data); + } else { + ERROR("String or ArrayBuffer expected"); + } + } +} + +@unmanaged +abstract class ReadableStream extends Stream { + read(buffer: ArrayBuffer, offset: isize = 0): i32 { + var end = buffer.byteLength; + if (offset < 0 || offset > end) { + throw new Error(E_INDEXOUTOFRANGE); + } + store(iobuf, changetype(buffer) + offset); + store(iobuf, end - offset, sizeof()); + var err = fd_read(changetype(this), iobuf, 1, iobuf + 2 * sizeof()); + if (err) throw new Error(errnoToString(err)); + return load(iobuf, 2 * sizeof()); + } +} + +function writeBuffer(fd: fd, data: ArrayBuffer): void { + store(iobuf, changetype(data)); + store(iobuf, data.byteLength, sizeof()); + var err = fd_write(fd, iobuf, 1, iobuf + 2 * sizeof()); + if (err) throw new Error(errnoToString(err)); +} + +function writeString(fd: fd, data: string): void { + var char2 = -1; + var char3 = -1; + var char4 = -1; + switch (data.length) { + case 4: { // "null" + char4 = load(changetype(data), 6); + if (char4 >= 0x80) break; + } + case 3: { // "ms\n" + char3 = load(changetype(data), 4); + if (char3 >= 0x80) break; + } + case 2: { // "\r\n" + char2 = load(changetype(data), 2); + if (char2 >= 0x80) break; + } + case 1: { // "\n" + let char1 = load(changetype(data)); + if (char1 >= 0x80) break; + store(iobuf, iobuf + 2 * sizeof()); + store(iobuf, 1 + i32(char2 != -1) + i32(char3 != -1) + i32(char4 != -1), sizeof()); + store(iobuf, char1 | char2 << 8 | char3 << 16 | char4 << 24, 2 * sizeof()); + let err = fd_write(fd, iobuf, 1, iobuf + 3 * sizeof()); + if (err) throw new Error(errnoToString(err)); + } + case 0: return; + } + var utf8len = String.UTF8.byteLength(data); + var utf8buf = __alloc(utf8len); + assert(String.UTF8.encodeUnsafe(changetype(data), data.length, utf8buf) == utf8len); + store(iobuf, utf8buf); + store(iobuf, utf8len, sizeof()); + var err = fd_write(fd, iobuf, 1, iobuf + 2 * sizeof()); + __free(utf8buf); + if (err) throw new Error(errnoToString(err)); +} diff --git a/std/assembly/rt.ts b/std/assembly/rt.ts index 10dff618c4..852a9d5f23 100644 --- a/std/assembly/rt.ts +++ b/std/assembly/rt.ts @@ -25,12 +25,12 @@ export function __typeinfo(id: u32): TypeinfoFlags { // @ts-ignore: decorator @unsafe -export function __instanceof(ref: usize, superId: u32): bool { // keyword - var id = changetype(ref - TOTAL_OVERHEAD).rtId; - var ptr = __rtti_base; - if (id <= load(ptr)) { - do if (id == superId) return true; - while (id = changetype(ptr + sizeof() + id * offsetof()).base); +export function __instanceof(ptr: usize, classId: u32): bool { // keyword + var id = changetype(ptr - TOTAL_OVERHEAD).rtId; + var rttiBase = __rtti_base; + if (id <= load(rttiBase)) { + do if (id == classId) return true; + while (id = changetype(rttiBase + sizeof() + id * offsetof()).base); } return false; } @@ -46,16 +46,25 @@ export function __newBuffer(size: usize, id: u32, data: usize = 0): usize { // @ts-ignore: decorator @unsafe export function __newArray(length: i32, alignLog2: usize, id: u32, data: usize = 0): usize { - var array = __new(offsetof(), id); var bufferSize = length << alignLog2; - var buffer = __newBuffer(bufferSize, idof(), data); - store(array, __retain(buffer), offsetof("buffer")); - store(array, buffer, offsetof("dataStart")); + // make sure `buffer` is tracked by the shadow stack + var buffer = changetype(__newBuffer(bufferSize, idof(), data)); + // ...since allocating the array may trigger GC steps + var array = __new(offsetof(), id); + store(array, changetype(buffer), offsetof("buffer")); + __link(array, changetype(buffer), false); + store(array, changetype(buffer), offsetof("dataStart")); store(array, bufferSize, offsetof("byteLength")); store(array, length, offsetof("length_")); return array; } +// @ts-ignore: decorator +@global @unsafe +function __tostack(ptr: usize): usize { // eslint-disable-line + return ptr; +} + // These are provided by the respective implementation, included as another entry file by asc: // // @ts-ignore: decorator @@ -80,11 +89,7 @@ export function __newArray(length: i32, alignLog2: usize, id: u32, data: usize = // // @ts-ignore: decorator // @builtin @unsafe -// export declare function __retain(ptr: usize): usize; - -// // @ts-ignore: decorator -// @builtin @unsafe -// export declare function __release(ptr: usize): void; +// export declare function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void; // // @ts-ignore: decorator // @builtin @unsafe diff --git a/std/assembly/rt/README.md b/std/assembly/rt/README.md index 5ca6a832e1..deb0c9f13c 100644 --- a/std/assembly/rt/README.md +++ b/std/assembly/rt/README.md @@ -1,106 +1,86 @@ The AssemblyScript Runtime ========================== -The runtime provides the functionality necessary to dynamically allocate and deallocate memory of objects, arrays and buffers, as well as keep track of references that are no longer used. +The runtime provides the functionality necessary to dynamically allocate and deallocate memory of objects, arrays and buffers, as well as collect garbage that is no longer used. The current implementation is either a Two-Color Mark & Sweep (TCMS) garbage collector that must be called manually when the execution stack is unwound or an Incremental Tri-Color Mark & Sweep (ITCMS) garbage collector that is fully automated with a shadow stack, implemented on top of a Two-Level Segregate Fit (TLSF) memory manager. It's not designed to be the fastest of its kind, but intentionally focuses on simplicity and ease of integration until we can replace it with the real deal, i.e. Wasm GC. Interface --------- -### Memory manager - -* **__alloc**(size: `usize`): `usize`
    - Dynamically allocates a chunk of memory of at least the specified size and returns its address. - Alignment is guaranteed to be 16 bytes to fit up to v128 values naturally. - -* **__realloc**(ref: `usize`, size: `usize`): `usize`
    - Dynamically changes the size of a chunk of memory, possibly moving it to a new address. - -* **__free**(ref: `usize`): `void`
    - Frees a dynamically allocated chunk of memory by its address. - -### Garbage collector +### Garbage collector / `--exportRuntime` * **__new**(size: `usize`, id: `u32` = 0): `usize`
    Dynamically allocates a GC object of at least the specified size and returns its address. Alignment is guaranteed to be 16 bytes to fit up to v128 values naturally. GC-allocated objects cannot be used with `__realloc` and `__free`. -* **__renew**(ptr: `usize`, size: `usize`): `usize`
    - Like `__realloc`, but for `__new`ed GC objects. - -* **__retain**(ref: `usize`): `usize`
    - Retains a reference to an object. The object doesn't become collected as long as there's at least one retained reference. Returns the retained reference. +* **__pin**(ptr: `usize`): `usize`
    + Pins the object pointed to by `ptr` externally so it and its directly reachable members and indirectly reachable objects do not become garbage collected. -* **__release**(ref: `usize`): `void`
    - Releases a reference to an object. The object is considered for collection once all references to it have been released. +* **__unpin**(ptr: `usize`): `void`
    + Unpins the object pointed to by `ptr` externally so it can become garbage collected. * **__collect**(): `void`
    - Forces a full garbage collection cycle. By default this means that reference cycles are resolved and possibly collected. + Performs a full garbage collection. ### Internals -* **__visit**(ref: `usize`, cookie: `u32`): `void`
    - Concrete visitor implementation called during traversal. Cookie can be used to indicate one of multiple operations. - -### Built-ins - -* **__typeinfo**(id: `u32`): `RTTIFlags`
    - Obtains the runtime type information for objects with the specified runtime id. Runtime type information is a set of flags indicating whether a reference type is managed, an array or similar, and what the relevant alignments when creating an instance externally are etc. - -* **__instanceof** - -* **__visit_globals**(cookie: `u32`): `void`
    - Calls `__visit` on each global that is of a reference type. Not used anymore (originally provided to support tracing GCs) but still here for possible future use. +* **__alloc**(size: `usize`): `usize`
    + Dynamically allocates a chunk of memory of at least the specified size and returns its address. + Alignment is guaranteed to be 16 bytes to fit up to v128 values naturally. -* **__visit_members**(ref: `usize`, cookie: `u32`): `void`
    - Calls `__visit` on each member of the object pointed to by `ref`. +* **__realloc**(ptr: `usize`, size: `usize`): `usize`
    + Dynamically changes the size of a chunk of memory, possibly moving it to a new address. -### Related +* **__free**(ptr: `usize`): `void`
    + Frees a dynamically allocated chunk of memory by its address. -* **idof**<`T`>(): `u32`
    - Obtains the unique internal class id of a reference type. +* **__renew**(ptr: `usize`, size: `usize`): `usize`
    + Like `__realloc`, but for `__new`ed GC objects. -Full/half ---------- +* **__link**(parentPtr: `usize`, childPtr: `usize`, expectMultiple: `bool`): `void`
    + Introduces a link from a parent object to a child object, i.e. upon `parent.field = child`. -The [full](./index-full.ts) runtime is based on [the TLSF memory manager](./tlsf.ts) and [a pure reference counting garbage collector](./pure.ts) and provides all the functionality necessary. The [half](./index-half.ts) alias is essentially the same, but doesn't expose the runtime API so unused runtime code can be DCE'ed. +* **__visit**(ptr: `usize`, cookie: `u32`): `void`
    + Concrete visitor implementation called during traversal. Cookie can be used to indicate one of multiple operations. -Stub/none ---------- +* **__visit_globals**(cookie: `u32`): `void`
    + Calls `__visit` on each global that is of a managed type. -The [stub](./index-stub.ts) runtime, though fully functional, provides minimal dynamic memory allocation but no deallocation. Useful for prototyping or very short-lived programs with hardly any memory footprint. The [none](./index-none.ts) alias is the same, but doesn't expose the runtime API so unused runtime code can be DCE'ed. +* **__visit_members**(ptr: `usize`, cookie: `u32`): `void`
    + Calls `__visit` on each member of the object pointed to by `ptr`. -Integration notes ------------------ +* **__typeinfo**(id: `u32`): `RTTIFlags`
    + Obtains the runtime type information for objects with the specified runtime id. Runtime type information is a set of flags indicating whether a type is managed, an array or similar, and what the relevant alignments when creating an instance externally are etc. -The underlying reference counting implementation works very similar to other implementations. When an object is stored in a local, global or field, its reference becomes retained (reference count is incremented by 1), respectively when it becomes deleted, it is released (reference count is decremented by 1). Once the reference count reaches zero, the object is considered for collection and the reference count of all contained objects (fields, array elements etc.) is decremented by 1. Now, if an object is inherently acyclic (most objects are), it is free'd right away, while otherwise it is added to a cycle pool and considered for cycle collection on the next `__collect`. +* **__instanceof**(ptr: `usize`, classId: `u32`): `bool`
    + Tests if the object pointed to by `ptr` is an instance of the specified class id. -Differences to other implementations include: +ITCMS / `--runtime incremental` +----- -* A new object from `__new` doesn't start with a reference count of 1, but 0. -* When an object is returned from a function, it remains at RC + 1 and the caller is expected to release it. -* Functions with reference type arguments retain each such argument when called, and release it again when exited. This can't be counted on, however, because the compiler may decide to eliminate these where unnecessary. -* Getters, setters, operator overloads and constructors are function calls and behave like one. +The Incremental Tri-Color Mark & Sweep garbage collector maintains a separate shadow stack of managed values in the background to achieve full automation. Maintaining another stack introduces some overhead compared to the simpler Two-Color Mark & Sweep garbage collector, but makes it independent of whether the execution stack is unwound or not when it is invoked, so the garbage collector can run interleaved with the program. -Even though the rules are simple, working with the runtime internals within standard library code can be tricky and requires knowledge of where the compiler will insert runtime calls automatically. For instance +There are several constants one can experiment with to tweak ITCMS's automation: -* `changetype`ing a pointer to a reference type or vice-versa has no side-effects. For example in a `changetype(ptr)` the pointer is untracked before, and the reference becomes tracked afterwards, but there's nothing inserted in between. -* `load`, `store` and similar built-ins aren't functions but intrinsics and as such have no side-effects. For example a `load(...)` is equivalent to a `changetype(load(...))` and a `store(..., ref)` equivalent to a `store(..., changetype(ref))`. +* `--use ASC_GC_GRANULARITY=1024`
    + How often to interrupt. The default of 1024 means "interrupt each 1024 bytes allocated". +* `--use ASC_GC_STEPFACTOR=200`
    + How long to interrupt. The default of 200% means "run at double the speed of allocations". +* `--use ASC_GC_IDLEFACTOR=200`
    + How long to idle. The default of 200% means "wait for memory to double before kicking in again". +* `--use ASC_GC_MARKCOST=1`
    + How costly it is to mark one object. Budget per interrupt is `GRANULARITY * STEPFACTOR / 100`. +* `--use ASC_GC_SWEEPCOST=10`
    + How costly it is to sweep one object. Budget per interrupt is `GRANULARITY * STEPFACTOR / 100`. -**GOOD:** In case of doubt, the following pattern is universal: +TCMS / `--runtime minimal` +---- -```ts -var ref = changetype(__new(SIZE, idof())); // assignment retains, RC=1 -// ... safe ... -return ref; // knows `ref` is already retained and simply returns it -``` +If automation and low pause times aren't strictly necessary, using the Two-Color Mark & Sweep garbage collector instead by invoking collection manually at appropriate times when the execution stack is unwound may be more performant as it simpler and has less overhead. The execution stack is typically unwound when invoking the collector externally, at a place that is not indirectly called from Wasm. -**BAD:** A pattern one shouldn't use is: +STUB / `--runtime stub` +---- -```ts -var ptr = __new(SIZE, idof()); // RC=0 -// ... not safe while RC=0 ... e.g.: -someFunc(changetype(ptr)); // might, or might not, free the object! -``` +The stub is a maximally minimal runtime substitute, consisting of a simple and fast bump allocator with no means of freeing up memory again, except when freeing the respective most recently allocated object on top of the bump. Useful where memory is not a concern, and/or where it is sufficient to destroy the whole module including any potential garbage after execution. -**BONUS:** Beware of runtime calls in conditional expressions like a ternary IF, logical AND or OR. Each arm can be in either of two states: Either in-flight if immediately retained/returned or not if the expression or the target doesn't support it. Don't fight the compiler there. +See also: [Garbage collection](https://www.assemblyscript.org/garbage-collection.html) diff --git a/std/assembly/rt/common.ts b/std/assembly/rt/common.ts index ade9a622b6..4be7c653c4 100644 --- a/std/assembly/rt/common.ts +++ b/std/assembly/rt/common.ts @@ -13,6 +13,10 @@ @inline export const DEBUG = true; // @ts-ignore: decorator @inline export const TRACE = false; +// @ts-ignore: decorator +@inline export const RTRACE = isDefined(ASC_RTRACE); +// @ts-ignore: decorator +@inline export const PROFILE = isDefined(ASC_PROFILE); // Memory manager diff --git a/std/assembly/rt/index-full.ts b/std/assembly/rt/index-full.ts deleted file mode 100644 index 7d60cfe165..0000000000 --- a/std/assembly/rt/index-full.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { __new, __renew, __retain, __release, __collect } from "rt/pure"; -export { __rtti_base } from "rt"; diff --git a/std/assembly/rt/index-half.ts b/std/assembly/rt/index-half.ts deleted file mode 100644 index eb6e7b3697..0000000000 --- a/std/assembly/rt/index-half.ts +++ /dev/null @@ -1 +0,0 @@ -import "rt/index-full"; diff --git a/std/assembly/rt/index-incremental.ts b/std/assembly/rt/index-incremental.ts new file mode 100644 index 0000000000..4730344b4f --- /dev/null +++ b/std/assembly/rt/index-incremental.ts @@ -0,0 +1,2 @@ +import "rt/tlsf"; +import "rt/itcms"; diff --git a/std/assembly/rt/index-minimal.ts b/std/assembly/rt/index-minimal.ts new file mode 100644 index 0000000000..cf88ee158f --- /dev/null +++ b/std/assembly/rt/index-minimal.ts @@ -0,0 +1,2 @@ +import "rt/tlsf"; +import "rt/tcms"; diff --git a/std/assembly/rt/index-none.ts b/std/assembly/rt/index-none.ts deleted file mode 100644 index f3b0d9ad08..0000000000 --- a/std/assembly/rt/index-none.ts +++ /dev/null @@ -1 +0,0 @@ -import "rt/index-stub"; diff --git a/std/assembly/rt/index-stub.ts b/std/assembly/rt/index-stub.ts index e9b706ec74..47f29bebfd 100644 --- a/std/assembly/rt/index-stub.ts +++ b/std/assembly/rt/index-stub.ts @@ -1,2 +1 @@ -export { __new, __renew, __retain, __release, __collect, __reset } from "rt/stub"; -export { __rtti_base } from "rt"; +import "rt/stub"; diff --git a/std/assembly/rt/index.d.ts b/std/assembly/rt/index.d.ts index 2aeab16b0a..260a9881bf 100644 --- a/std/assembly/rt/index.d.ts +++ b/std/assembly/rt/index.d.ts @@ -1,19 +1,38 @@ +// Memory manager declare function __alloc(size: usize): usize; declare function __realloc(ptr: usize, size: usize): usize; declare function __free(ptr: usize): void; +declare function __reset(): void; + +// Garbage collector declare function __new(size: usize, id: u32): usize; declare function __renew(ptr: usize, size: usize): usize; -declare function __retain(ptr: usize): usize; -declare function __release(ptr: usize): void; +declare function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void; declare function __collect(): void; -declare function __reset(): void; + +// Runtime type info declare function __typeinfo(id: u32): u32; declare function __instanceof(ptr: usize, superId: u32): bool; + +// Visitors declare function __visit(ptr: usize, cookie: i32): void; declare function __visit_globals(cookie: u32): void; declare function __visit_members(ptr: usize, cookie: u32): void; + +// Allocation helpers declare function __newBuffer(size: usize, id: u32, data?: usize): usize; declare function __newArray(length: i32, alignLog2: usize, id: u32, data?: usize): usize; + +// Finalization declare function __finalize(ptr: usize): void; + +// Debugging declare const ASC_RTRACE: bool; -declare const __GC_ALL_ACYCLIC: bool; +declare const ASC_PROFILE: bool; + +// Incremental GC constants +declare const ASC_GC_GRANULARITY: i32; +declare const ASC_GC_SWEEPFACTOR: i32; +declare const ASC_GC_IDLEFACTOR: i32; +declare const ASC_GC_MARKCOST: i32; +declare const ASC_GC_SWEEPCOST: i32; diff --git a/std/assembly/rt/itcms.ts b/std/assembly/rt/itcms.ts new file mode 100644 index 0000000000..f309c0e0fd --- /dev/null +++ b/std/assembly/rt/itcms.ts @@ -0,0 +1,409 @@ +import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE, PROFILE } from "./common"; +import { onvisit, oncollect, oninterrupt, onyield } from "./rtrace"; +import { TypeinfoFlags } from "../shared/typeinfo"; +import { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from "../util/error"; + +// === ITCMS: An incremental Tri-Color Mark & Sweep garbage collector === +// Adapted from Bach Le's μgc, see: https://github.com/bullno1/ugc + +// ╒═════════════╤══════════════ Colors ═══════════════════════════╕ +// │ Color │ Meaning │ +// ├─────────────┼─────────────────────────────────────────────────┤ +// │ WHITE* │ Unprocessed │ +// │ BLACK* │ Processed │ +// │ GRAY │ Processed with unprocessed children │ +// │ TRANSPARENT │ Manually pinned (always reachable) │ +// └─────────────┴─────────────────────────────────────────────────┘ +// * flipped between cycles + +// @ts-ignore: decorator +@lazy var white = 0; +// @ts-ignore: decorator +@inline const gray = 2; +// @ts-ignore: decorator +@inline const transparent = 3; +// @ts-ignore: decorator +@inline const COLOR_MASK = 3; + +/** Size in memory of all objects currently managed by the GC. */ +// @ts-ignore: decorator +@lazy var total: usize = 0; + +/** Currently transitioning from SWEEP to MARK state. */ +// @ts-ignore: decorator +@inline const STATE_IDLE = 0; +/** Currently marking reachable objects. */ +// @ts-ignore: decorator +@inline const STATE_MARK = 1; +/** Currently sweeping unreachable objects. */ +// @ts-ignore: decorator +@inline const STATE_SWEEP = 2; +/** Current collector state. */ +// @ts-ignore: decorator +@lazy var state = STATE_IDLE; + +// @ts-ignore: decorator +@lazy var fromSpace = initLazy(changetype(memory.data(offsetof()))); +// @ts-ignore: decorator +@lazy var toSpace = initLazy(changetype(memory.data(offsetof()))); +// @ts-ignore: decorator +@lazy var pinSpace = initLazy(changetype(memory.data(offsetof()))); +// @ts-ignore: decorator +@lazy var iter: Object; // null + +function initLazy(space: Object): Object { + space.nextWithColor = changetype(space); + space.prev = space; + return space; +} + +/** Visit cookie indicating scanning of an object. */ +// @ts-ignore: decorator +@inline const VISIT_SCAN = 0; + +// ╒═══════════════ Managed object layout (32-bit) ════════════════╕ +// 3 2 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ +// │ Memory manager block │ +// ╞═══════════════════════════════════════════════════════════╤═══╡ +// │ next │ C │ = nextWithColor +// ├───────────────────────────────────────────────────────────┴───┤ +// │ prev │ +// ├───────────────────────────────────────────────────────────────┤ +// │ rtId │ +// ├───────────────────────────────────────────────────────────────┤ +// │ rtSize │ +// ╞>ptr═══════════════════════════════════════════════════════════╡ +// │ ... │ +// C: color + +/** Represents a managed object in memory, consisting of a header followed by the object's data. */ +@unmanaged class Object extends BLOCK { + /** Pointer to the next object with color flags stored in the alignment bits. */ + nextWithColor: usize; // *u32 + /** Pointer to the previous object. */ + prev: Object; // *u32 + /** Runtime id. */ + rtId: u32; + /** Runtime size. */ + rtSize: u32; + + /** Gets the pointer to the next object. */ + get next(): Object { + return changetype(this.nextWithColor & ~COLOR_MASK); + } + + /** Sets the pointer to the next object. */ + set next(obj: Object) { + this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK); + } + + /** Gets this object's color. */ + get color(): i32 { + return i32(this.nextWithColor & COLOR_MASK); + } + + /** Sets this object's color. */ + set color(color: i32) { + this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color; + } + + /** Gets the size of this object in memory. */ + get size(): usize { + return BLOCK_OVERHEAD + (this.mmInfo & ~3); + } + + /** Tests if this object is pointerfree. */ + get isPointerfree(): bool { + var rtId = this.rtId; + return rtId <= idof() || (__typeinfo(rtId) & TypeinfoFlags.POINTERFREE) != 0; + } + + /** Unlinks this object from its list. */ + unlink(): void { + var next = this.next; + if (next == null) { + if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base); + return; // static data not yet linked + } + var prev = this.prev; + if (DEBUG) assert(prev); + next.prev = prev; + prev.next = next; + } + + /** Links this object to the specified list, with the given color. */ + linkTo(list: Object, withColor: i32): void { + let prev = list.prev; + this.nextWithColor = changetype(list) | withColor; + this.prev = prev; + prev.next = this; + list.prev = this; + } + + /** Marks this object as gray, that is reachable with unscanned children. */ + makeGray(): void { + if (this == iter) iter = assert(this.prev); + this.unlink(); + this.linkTo(toSpace, this.isPointerfree ? i32(!white) : gray); + } +} + +/** Visits all objects considered to be program roots. */ +function visitRoots(cookie: u32): void { + __visit_globals(cookie); + var iter = pinSpace.next; + while (iter != pinSpace) { + __visit_members(changetype(iter) + TOTAL_OVERHEAD, cookie); + iter = iter.next; + } +} + +/** Visits all objects on the stack. */ +function visitStack(cookie: u32): void { + var ptr = __stack_pointer; + while (ptr < __heap_base) { + __visit(load(ptr), cookie); + ptr += sizeof(); + } +} + +/** Performs a single step according to the current state. */ +function step(): usize { + // Magic constants responsible for pause times. Obtained experimentally + // using the compiler compiling itself. 2048 budget pro run by default. + const MARKCOST = isDefined(ASC_GC_MARKCOST) ? ASC_GC_MARKCOST : 1; + const SWEEPCOST = isDefined(ASC_GC_SWEEPCOST) ? ASC_GC_SWEEPCOST : 10; + var obj: Object; + switch (state) { + case STATE_IDLE: { + state = STATE_MARK; + visitCount = 0; + visitRoots(VISIT_SCAN); + iter = toSpace; + return visitCount * MARKCOST; + } + case STATE_MARK: { + let black = i32(!white); + obj = iter.next; + while (obj != toSpace) { + iter = obj; + if (obj.color != black) { // skip already-blacks (pointerfree) + obj.color = black; + visitCount = 0; + __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN); + return visitCount * MARKCOST; + } + obj = obj.next; + } + visitCount = 0; + visitRoots(VISIT_SCAN); + obj = iter.next; + if (obj == toSpace) { + visitStack(VISIT_SCAN); + obj = iter.next; + while (obj != toSpace) { + obj.color = black; + __visit_members(changetype(obj) + TOTAL_OVERHEAD, VISIT_SCAN); + obj = obj.next; + } + let from = fromSpace; + fromSpace = toSpace; + toSpace = from; + white = black; + iter = from.next; + state = STATE_SWEEP; + } + return visitCount * MARKCOST; + } + case STATE_SWEEP: { + obj = iter; + if (obj != toSpace) { + iter = obj.next; + if (DEBUG) assert(obj.color == i32(!white)); // old white + free(obj); + return SWEEPCOST; + } + toSpace.nextWithColor = changetype(toSpace); + toSpace.prev = toSpace; + state = STATE_IDLE; + break; + } + } + return 0; +} + +/** Frees an object. */ +function free(obj: Object): void { + if (changetype(obj) < __heap_base) { + obj.nextWithColor = 0; // may become linked again + obj.prev = changetype(0); + } else { + total -= obj.size; + if (isDefined(__finalize)) { + __finalize(changetype(obj) + TOTAL_OVERHEAD); + } + __free(changetype(obj) + BLOCK_OVERHEAD); + } +} + +// Garbage collector interface + +// @ts-ignore: decorator +@global @unsafe +export function __new(size: usize, id: i32): usize { + if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); + if (total >= threshold) interrupt(); + var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD); + obj.rtId = id; + obj.rtSize = size; + obj.linkTo(fromSpace, white); // inits next/prev + total += obj.size; + var ptr = changetype(obj) + TOTAL_OVERHEAD; + // may be visited before being fully initialized, so must fill + memory.fill(ptr, 0, size); + return ptr; +} + +// @ts-ignore: decorator +@global @unsafe +export function __renew(oldPtr: usize, size: usize): usize { + var oldObj = changetype(oldPtr - TOTAL_OVERHEAD); + // Update object size if its block is large enough + if (size <= (oldObj.mmInfo & ~3) - OBJECT_OVERHEAD) { + oldObj.rtSize = size; + return oldPtr; + } + // If not the same object anymore, we have to move it move it due to the + // shadow stack potentially still referencing the old object + var newPtr = __new(size, oldObj.rtId); + memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize)); + return newPtr; +} + +// @ts-ignore: decorator +@global @unsafe +export function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void { + // Write barrier is unnecessary if non-incremental + if (!childPtr) return; + if (DEBUG) assert(parentPtr); + var child = changetype(childPtr - TOTAL_OVERHEAD); + if (child.color == white) { + let parent = changetype(parentPtr - TOTAL_OVERHEAD); + let parentColor = parent.color; + if (parentColor == i32(!white)) { + // Maintain the invariant that no black object may point to a white object. + if (expectMultiple) { + // Move the barrier "backward". Suitable for containers receiving multiple stores. + // Avoids a barrier for subsequent objects stored into the same container. + parent.makeGray(); + } else { + // Move the barrier "forward". Suitable for objects receiving isolated stores. + child.makeGray(); + } + } else if (parentColor == transparent && state == STATE_MARK) { + // Pinned objects are considered 'black' during the mark phase. + child.makeGray(); + } + } +} + +// @ts-ignore: decorator +@lazy var visitCount = 0; + +// @ts-ignore: decorator +@global @unsafe +export function __visit(ptr: usize, cookie: i32): void { + if (!ptr) return; + let obj = changetype(ptr - TOTAL_OVERHEAD); + if (RTRACE) if (!onvisit(obj)) return; + if (obj.color == white) { + obj.makeGray(); + ++visitCount; + } +} + +// @ts-ignore: decorator +@global @unsafe +export function __pin(ptr: usize): usize { + if (ptr) { + let obj = changetype(ptr - TOTAL_OVERHEAD); + if (obj.color == transparent) { + throw new Error(E_ALREADY_PINNED); + } + obj.unlink(); // from fromSpace + obj.linkTo(pinSpace, transparent); + } + return ptr; +} + +// @ts-ignore: decorator +@global @unsafe +export function __unpin(ptr: usize): void { + if (!ptr) return; + var obj = changetype(ptr - TOTAL_OVERHEAD); + if (obj.color != transparent) { + throw new Error(E_NOT_PINNED); + } + if (state == STATE_MARK) { + // We may be right at the point after marking roots for the second time and + // entering the sweep phase, in which case the object would be missed if it + // is not only pinned but also a root. Make sure it isn't missed. + obj.makeGray(); + } else { + obj.unlink(); + obj.linkTo(fromSpace, white); + } +} + +// @ts-ignore: decorator +@global @unsafe +export function __collect(): void { + if (TRACE) trace("GC (full) at", 1, total); + if (state > STATE_IDLE) { + // finish current cycle + while (state != STATE_IDLE) step(); + } + // perform a full cycle + step(); + while (state != STATE_IDLE) step(); + threshold = (total * IDLEFACTOR / 100) + GRANULARITY; + if (TRACE) trace("GC (full) done at cur/max", 2, total, memory.size() << 16); + if (RTRACE || PROFILE) oncollect(total); +} + +// Garbage collector automation + +/** How often to interrupt. The default of 1024 means "interrupt each 1024 bytes allocated". */ +// @ts-ignore: decorator +@inline const GRANULARITY: usize = isDefined(ASC_GC_GRANULARITY) ? ASC_GC_GRANULARITY : 1024; +/** How long to interrupt. The default of 200% means "run at double the speed of allocations". */ +// @ts-ignore: decorator +@inline const STEPFACTOR: usize = isDefined(ASC_GC_SWEEPFACTOR) ? ASC_GC_SWEEPFACTOR : 200; +/** How long to idle. The default of 200% means "wait for memory to double before kicking in again". */ +// @ts-ignore: decorator +@inline const IDLEFACTOR: usize = isDefined(ASC_GC_IDLEFACTOR) ? ASC_GC_IDLEFACTOR : 200; + +/** Threshold of objects for the next scheduled GC step. */ +// @ts-ignore: decorator +@lazy var threshold: usize = GRANULARITY; + +/** Performs a reasonable amount of incremental GC steps. */ +function interrupt(): void { + if (PROFILE) oninterrupt(total); + if (TRACE) trace("GC (auto) at", 1, total); + var budget: isize = GRANULARITY * STEPFACTOR / 100; + do { + budget -= step(); + if (state == STATE_IDLE) { + if (TRACE) trace("└ GC (auto) done at cur/max", 2, total, memory.size() << 16); + threshold = (total * IDLEFACTOR / 100) + GRANULARITY; + if (PROFILE) onyield(total); + return; + } + } while (budget > 0); + if (TRACE) trace("└ GC (auto) ongoing at", 1, total); + threshold = total + GRANULARITY * usize(total - threshold < GRANULARITY); + if (PROFILE) onyield(total); +} diff --git a/std/assembly/rt/pure.ts b/std/assembly/rt/pure.ts deleted file mode 100644 index 300d537a5d..0000000000 --- a/std/assembly/rt/pure.ts +++ /dev/null @@ -1,305 +0,0 @@ -import { BLOCK_OVERHEAD, DEBUG, OBJECT, OBJECT_MAXSIZE, OBJECT_OVERHEAD, TOTAL_OVERHEAD } from "rt/common"; -import { Block, freeBlock, ROOT } from "rt/tlsf"; -import { TypeinfoFlags } from "shared/typeinfo"; -import { onincrement, ondecrement } from "./rtrace"; - -// === A Pure Reference Counting Garbage Collector === -// see: https://researcher.watson.ibm.com/researcher/files/us-bacon/Bacon03Pure.pdf - -// ╒══════════════════════ GC Info structure ══════════════════════╕ -// │ 3 2 1 │ -// │1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0│ -// ├─┼─┴─┴─┼─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ -// │B│color│ refCount │ -// └─┴─────┴───────────────────────────────────────────────────────┘ -// B: buffered - -// @ts-ignore: decorator -@inline const BUFFERED_MASK: u32 = 1 << ((sizeof() * 8) - 1); -// @ts-ignore: decorator -@inline const COLOR_BITS = 3; -// @ts-ignore: decorator -@inline const COLOR_SHIFT: u32 = ctz(BUFFERED_MASK) - COLOR_BITS; -// @ts-ignore: decorator -@inline const COLOR_MASK: u32 = ((1 << COLOR_BITS) - 1) << COLOR_SHIFT; -// @ts-ignore: decorator -@inline export const REFCOUNT_MASK: u32 = (1 << COLOR_SHIFT) - 1; - -// ╒════════╤═══════════════════ Colors ═══════════════════════════╕ -// │ Color │ Meaning │ -// ├────────┼──────────────────────────────────────────────────────┤ -// │ BLACK │ In use or free │ -// │ GRAY │ Possible member of cycle │ -// │ WHITE │ Member of garbage cycle │ -// │ PURPLE │ Possible root of cycle │ -// │ RED │ Candidate cycle undergoing Σ-computation *concurrent │ -// │ ORANGE │ Candidate cycle awaiting epoch boundary *concurrent │ -// └────────┴──────────────────────────────────────────────────────┘ -// Acyclic detection has been decoupled, hence no GREEN. - -// @ts-ignore: decorator -@inline const COLOR_BLACK: u32 = 0 << COLOR_SHIFT; -// @ts-ignore: decorator -@inline const COLOR_GRAY: u32 = 1 << COLOR_SHIFT; -// @ts-ignore: decorator -@inline const COLOR_WHITE: u32 = 2 << COLOR_SHIFT; -// @ts-ignore: decorator -@inline const COLOR_PURPLE: u32 = 3 << COLOR_SHIFT; -// @ts-ignore: decorator -// @inline const COLOR_RED: u32 = 4 << COLOR_SHIFT; -// @ts-ignore: decorator -// @inline const COLOR_ORANGE: u32 = 5 << COLOR_SHIFT; - -// @ts-ignore: decorator -@inline const VISIT_DECREMENT = 1; // guard 0 -// @ts-ignore: decorator -@inline const VISIT_MARKGRAY = 2; -// @ts-ignore: decorator -@inline const VISIT_SCAN = 3; -// @ts-ignore: decorator -@inline const VISIT_SCANBLACK = 4; -// @ts-ignore: decorator -@inline const VISIT_COLLECTWHITE = 5; - -// @ts-ignore: decorator -@global @unsafe @lazy -function __visit(ref: usize, cookie: i32): void { // eslint-disable-line @typescript-eslint/no-unused-vars - if (ref < __heap_base) return; - if (isDefined(__GC_ALL_ACYCLIC)) { - if (DEBUG) assert(cookie == VISIT_DECREMENT); - decrement(changetype(ref - TOTAL_OVERHEAD)); - } else { - let s = changetype(ref - TOTAL_OVERHEAD); - switch (cookie) { - case VISIT_DECREMENT: { - decrement(s); - break; - } - case VISIT_MARKGRAY: { - if (DEBUG) assert((s.gcInfo & REFCOUNT_MASK) > 0); - s.gcInfo = s.gcInfo - 1; - markGray(s); - break; - } - case VISIT_SCAN: { - scan(s); - break; - } - case VISIT_SCANBLACK: { - let info = s.gcInfo; - assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow - s.gcInfo = info + 1; - if ((info & COLOR_MASK) != COLOR_BLACK) { - scanBlack(s); - } - break; - } - case VISIT_COLLECTWHITE: { - collectWhite(s); - break; - } - default: if (DEBUG) assert(false); - } - } -} - -/** Increments the reference count of the specified block by one.*/ -function increment(s: OBJECT): void { - var info = s.gcInfo; - assert((info & ~REFCOUNT_MASK) == ((info + 1) & ~REFCOUNT_MASK)); // overflow - s.gcInfo = info + 1; - if (isDefined(ASC_RTRACE)) onincrement(s); - if (DEBUG) assert(!(s.mmInfo & 1)); // used -} - -/** Decrements the reference count of the specified block by one, possibly freeing it. */ -// @ts-ignore: decorator -@lazy -function decrement(s: OBJECT): void { - var info = s.gcInfo; - var rc = info & REFCOUNT_MASK; - if (isDefined(ASC_RTRACE)) ondecrement(s); - if (DEBUG) assert(!(s.mmInfo & 1)); // used - if (rc == 1) { - __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_DECREMENT); - if (isDefined(__GC_ALL_ACYCLIC)) { - if (DEBUG) assert(!(info & BUFFERED_MASK)); - finalize(s); - } else { - if (!(info & BUFFERED_MASK)) { - finalize(s); - } else { - s.gcInfo = BUFFERED_MASK | COLOR_BLACK | 0; - } - } - } else { - if (DEBUG) assert(rc > 0); - if (isDefined(__GC_ALL_ACYCLIC)) { - s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1); - } else { - if (!(__typeinfo(s.rtId) & TypeinfoFlags.ACYCLIC)) { - s.gcInfo = BUFFERED_MASK | COLOR_PURPLE | (rc - 1); - if (!(info & BUFFERED_MASK)) { - appendRoot(s); - } - } else { - s.gcInfo = (info & ~REFCOUNT_MASK) | (rc - 1); - } - } - } -} - -/** Finalizes the specified block, giving it back to the memory manager. */ -function finalize(s: OBJECT): void { - if (isDefined(__finalize)) { - __finalize(changetype(s) + TOTAL_OVERHEAD); - } - freeBlock(ROOT, changetype(s)); -} - -/** Buffer of possible roots. */ -// @ts-ignore: decorator -@lazy var ROOTS: usize; -/** Current absolute offset into the `ROOTS` buffer. */ -// @ts-ignore: decorator -@lazy var CUR: usize = 0; -/** Current absolute end offset into the `ROOTS` buffer. */ -// @ts-ignore: decorator -@lazy var END: usize = 0; - -/** Appends a block to possible roots. */ -function appendRoot(s: OBJECT): void { - var cur = CUR; - if (cur >= END) { - growRoots(); // TBD: either that or pick a default and force collection on overflow - cur = CUR; - } - store(cur, s); - CUR = cur + sizeof(); -} - -/** Grows the roots buffer if it ran full. */ -function growRoots(): void { - var oldRoots = ROOTS; - var oldSize = CUR - oldRoots; - var newSize = max(oldSize * 2, 64 << alignof()); - var newRoots = __alloc(newSize); - memory.copy(newRoots, oldRoots, oldSize); - if (oldRoots) __free(oldRoots); - ROOTS = newRoots; - CUR = newRoots + oldSize; - END = newRoots + newSize; -} - -/** Collects cyclic garbage. */ -// @ts-ignore: decorator -@global @unsafe @lazy -export function __collect(): void { - if (isDefined(__GC_ALL_ACYCLIC)) return; - - // markRoots - var roots = ROOTS; - var cur = roots; - for (let pos = cur, end = CUR; pos < end; pos += sizeof()) { - let s = load(pos); - let info = s.gcInfo; - if ((info & COLOR_MASK) == COLOR_PURPLE && (info & REFCOUNT_MASK) > 0) { - markGray(s); - store(cur, s); - cur += sizeof(); - } else { - if ((info & COLOR_MASK) == COLOR_BLACK && !(info & REFCOUNT_MASK)) { - finalize(s); - } else { - s.gcInfo = info & ~BUFFERED_MASK; - } - } - } - CUR = cur; - - // scanRoots - for (let pos = roots; pos < cur; pos += sizeof()) { - scan(load(pos)); - } - - // collectRoots - for (let pos = roots; pos < cur; pos += sizeof()) { - let s = load(pos); - s.gcInfo = s.gcInfo & ~BUFFERED_MASK; - collectWhite(s); - } - CUR = roots; -} - -/** Marks a block as gray (possible member of cycle) during the collection phase. */ -function markGray(s: OBJECT): void { - var info = s.gcInfo; - if ((info & COLOR_MASK) != COLOR_GRAY) { - s.gcInfo = (info & ~COLOR_MASK) | COLOR_GRAY; - __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_MARKGRAY); - } -} - -/** Scans a block during the collection phase, determining whether it is garbage or not. */ -function scan(s: OBJECT): void { - var info = s.gcInfo; - if ((info & COLOR_MASK) == COLOR_GRAY) { - if ((info & REFCOUNT_MASK) > 0) { - scanBlack(s); - } else { - s.gcInfo = (info & ~COLOR_MASK) | COLOR_WHITE; - __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_SCAN); - } - } -} - -/** Marks a block as black (in use) if it was found to be reachable during the collection phase. */ -function scanBlack(s: OBJECT): void { - s.gcInfo = (s.gcInfo & ~COLOR_MASK) | COLOR_BLACK; - __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_SCANBLACK); -} - -/** Collects all white (member of a garbage cycle) nodes when completing the collection phase. */ -function collectWhite(s: OBJECT): void { - var info = s.gcInfo; - if ((info & COLOR_MASK) == COLOR_WHITE && !(info & BUFFERED_MASK)) { - s.gcInfo = (info & ~COLOR_MASK) | COLOR_BLACK; - __visit_members(changetype(s) + TOTAL_OVERHEAD, VISIT_COLLECTWHITE); - finalize(s); - } -} - -// @ts-ignore: decorator -@global @unsafe -export function __new(size: usize, id: u32): usize { - if (size > OBJECT_MAXSIZE) throw new Error("allocation too large"); - var ptr = __alloc(OBJECT_OVERHEAD + size); - var object = changetype(ptr - BLOCK_OVERHEAD); - object.gcInfo = 0; // RC=0 - object.gcInfo2 = 0; - object.rtId = id; - object.rtSize = size; - return ptr + OBJECT_OVERHEAD; -} - -// @ts-ignore: decorator -@global @unsafe -export function __renew(oldPtr: usize, size: usize): usize { - if (size > OBJECT_MAXSIZE) throw new Error("allocation too large"); - var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); - changetype(newPtr - BLOCK_OVERHEAD).rtSize = size; - return newPtr + OBJECT_OVERHEAD; -} - -// @ts-ignore: decorator -@global @unsafe -export function __retain(ptr: usize): usize { - if (ptr > __heap_base) increment(changetype(ptr - TOTAL_OVERHEAD)); - return ptr; -} - -// @ts-ignore: decorator -@global @unsafe -export function __release(ptr: usize): void { - if (ptr > __heap_base) decrement(changetype(ptr - TOTAL_OVERHEAD)); -} diff --git a/std/assembly/rt/rtrace.ts b/std/assembly/rt/rtrace.ts index 9b0cc8b5ac..1e22956b43 100644 --- a/std/assembly/rt/rtrace.ts +++ b/std/assembly/rt/rtrace.ts @@ -1,8 +1,15 @@ import { BLOCK } from "./common"; -export declare function onalloc(s: BLOCK): void; -export declare function onresize(s: BLOCK, oldSize: usize): void; -export declare function onmove(sOld: BLOCK, sNew: BLOCK): void; -export declare function onincrement(s: BLOCK): void; -export declare function ondecrement(s: BLOCK): void; -export declare function onfree(s: BLOCK): void; +export declare function oninit(heapBase: usize): void; + +// Memory Allocator +export declare function onalloc(block: BLOCK): void; +export declare function onresize(block: BLOCK, oldSizeInclOverhead: usize): void; +export declare function onmove(oldBlock: BLOCK, newBlock: BLOCK): void; +export declare function onfree(block: BLOCK): void; + +// Garbage collector +export declare function onvisit(block: BLOCK): bool; +export declare function oncollect(total: usize): void; +export declare function oninterrupt(total: usize): void; +export declare function onyield(total: usize): void; diff --git a/std/assembly/rt/stub.ts b/std/assembly/rt/stub.ts index 42b4487acf..7206486934 100644 --- a/std/assembly/rt/stub.ts +++ b/std/assembly/rt/stub.ts @@ -1,8 +1,10 @@ -import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, OBJECT_MAXSIZE } from "rt/common"; +import { AL_MASK, OBJECT, OBJECT_OVERHEAD, BLOCK_MAXSIZE, BLOCK_OVERHEAD, BLOCK, OBJECT_MAXSIZE } from "./common"; +import { E_ALLOCATION_TOO_LARGE } from "../util/error"; + +// === A minimal runtime stub === // @ts-ignore: decorator @lazy var startOffset: usize = ((__heap_base + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; - // @ts-ignore: decorator @lazy var offset: usize = startOffset; @@ -20,14 +22,15 @@ function maybeGrowMemory(newOffset: usize): void { offset = newOffset; } -function computeSize(size: usize): usize { +// @ts-ignore: decorator +@inline function computeSize(size: usize): usize { return ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD; } // @ts-ignore: decorator @unsafe @global export function __alloc(size: usize): usize { - if (size > BLOCK_MAXSIZE) unreachable(); + if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); var block = changetype(offset); var ptr = offset + BLOCK_OVERHEAD; var payloadSize = computeSize(size); @@ -36,19 +39,6 @@ export function __alloc(size: usize): usize { return ptr; } -// @ts-ignore: decorator -@unsafe @global -export function __new(size: usize, id: u32): usize { - if (size > OBJECT_MAXSIZE) unreachable(); - var ptr = __alloc(OBJECT_OVERHEAD + size); - var object = changetype(ptr - BLOCK_OVERHEAD); - object.gcInfo = 0; - object.gcInfo2 = 0; - object.rtId = id; - object.rtSize = size; - return ptr + OBJECT_OVERHEAD; -} - // @ts-ignore: decorator @unsafe @global export function __realloc(ptr: usize, size: usize): usize { @@ -59,7 +49,7 @@ export function __realloc(ptr: usize, size: usize): usize { var payloadSize = computeSize(size); if (size > actualSize) { if (isLast) { // last block: grow - if (size > BLOCK_MAXSIZE) unreachable(); + if (size > BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); maybeGrowMemory(ptr + payloadSize); block.mmInfo = payloadSize; } else { // copy to new block at least double the size @@ -74,15 +64,6 @@ export function __realloc(ptr: usize, size: usize): usize { return ptr; } -// @ts-ignore: decorator -@unsafe @global -export function __renew(oldPtr: usize, size: usize): usize { - if (size > OBJECT_MAXSIZE) unreachable(); - var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); - changetype(newPtr - BLOCK_OVERHEAD).rtSize = size; - return newPtr + OBJECT_OVERHEAD; -} - // @ts-ignore: decorator @unsafe @global export function __free(ptr: usize): void { @@ -99,26 +80,54 @@ export function __reset(): void { // special offset = startOffset; } +// @ts-ignore: decorator +@unsafe @global +export function __new(size: usize, id: u32): usize { + if (size > OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); + var ptr = __alloc(OBJECT_OVERHEAD + size); + var object = changetype(ptr - BLOCK_OVERHEAD); + object.gcInfo = 0; + object.gcInfo2 = 0; + object.rtId = id; + object.rtSize = size; + return ptr + OBJECT_OVERHEAD; +} + +// @ts-ignore: decorator +@unsafe @global +export function __renew(oldPtr: usize, size: usize): usize { + if (size > OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); + var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size); + changetype(newPtr - BLOCK_OVERHEAD).rtSize = size; + return newPtr + OBJECT_OVERHEAD; +} + +// @ts-ignore: decorator +@global @unsafe +export function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void { + // nop +} + // @ts-ignore: decorator @global @unsafe -export function __retain(ref: usize): usize { - return ref; +export function __pin(ptr: usize): usize { + return ptr; } // @ts-ignore: decorator @global @unsafe -export function __release(ref: usize): void { - /* nop */ +export function __unpin(ptr: usize): void { + // nop } // @ts-ignore: decorator @global @unsafe -function __visit(ref: usize, cookie: u32): void { // eslint-disable-line @typescript-eslint/no-unused-vars - /* nop */ +function __visit(ptr: usize, cookie: u32): void { // eslint-disable-line @typescript-eslint/no-unused-vars + // nop } // @ts-ignore: decorator @global @unsafe export function __collect(): void { - /* nop */ + // nop } diff --git a/std/assembly/rt/tcms.ts b/std/assembly/rt/tcms.ts new file mode 100644 index 0000000000..771fa27f98 --- /dev/null +++ b/std/assembly/rt/tcms.ts @@ -0,0 +1,254 @@ +import { BLOCK, BLOCK_OVERHEAD, OBJECT_OVERHEAD, OBJECT_MAXSIZE, TOTAL_OVERHEAD, DEBUG, TRACE, RTRACE } from "./common"; +import { onvisit, oncollect } from "./rtrace"; +import { E_ALLOCATION_TOO_LARGE, E_ALREADY_PINNED, E_NOT_PINNED } from "../util/error"; + +// === TCMS: A Two-Color Mark & Sweep garbage collector === + +// ╒═════════════╤══════════════ Colors ═══════════════════════════╕ +// │ Color │ Meaning │ +// ├─────────────┼─────────────────────────────────────────────────┤ +// │ WHITE* │ Unreachable │ +// │ BLACK* │ Reachable │ +// │ TRANSPARENT │ Manually pinned (always reachable) │ +// └─────────────┴─────────────────────────────────────────────────┘ +// * flipped between cycles + +// @ts-ignore: decorator +@lazy var white = 0; +// @ts-ignore: decorator +@inline const transparent = 3; +// @ts-ignore: decorator +@inline const COLOR_MASK = 3; + +/** Size in memory of all objects currently managed by the GC. */ +// @ts-ignore: decorator +@lazy var total: usize = 0; + +// @ts-ignore: decorator +@lazy var fromSpace = initLazy(changetype(memory.data(offsetof()))); +// @ts-ignore: decorator +@lazy var toSpace = initLazy(changetype(memory.data(offsetof()))); +// @ts-ignore: decorator +@lazy var pinSpace = initLazy(changetype(memory.data(offsetof()))); + +function initLazy(space: Object): Object { + space.nextWithColor = changetype(space); + space.prev = space; + return space; +} + +/** Visit cookie indicating scanning of an object. */ +// @ts-ignore: decorator +@inline const VISIT_SCAN = 0; + +// ╒═══════════════ Managed object layout (32-bit) ════════════════╕ +// 3 2 1 +// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 bits +// ├─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┤ +// │ Memory manager block │ +// ╞═══════════════════════════════════════════════════════════╤═══╡ +// │ next │ C │ = nextWithColor +// ├───────────────────────────────────────────────────────────┴───┤ +// │ prev │ +// ├───────────────────────────────────────────────────────────────┤ +// │ rtId │ +// ├───────────────────────────────────────────────────────────────┤ +// │ rtSize │ +// ╞>ptr═══════════════════════════════════════════════════════════╡ +// │ ... │ +// C: color + +/** Represents a managed object in memory, consisting of a header followed by the object's data. */ +@unmanaged class Object extends BLOCK { + /** Pointer to the next object with color flags stored in the alignment bits. */ + nextWithColor: usize; // *u32 + /** Pointer to the previous object. */ + prev: Object; // *u32 + /** Runtime id. */ + rtId: u32; + /** Runtime size. */ + rtSize: u32; + + /** Gets the pointer to the next object. */ + get next(): Object { + return changetype(this.nextWithColor & ~COLOR_MASK); + } + + /** Sets the pointer to the next object. */ + set next(obj: Object) { + this.nextWithColor = changetype(obj) | (this.nextWithColor & COLOR_MASK); + } + + /** Gets this object's color. */ + get color(): i32 { + return i32(this.nextWithColor & COLOR_MASK); + } + + /** Sets this object's color. */ + set color(color: i32) { + this.nextWithColor = (this.nextWithColor & ~COLOR_MASK) | color; + } + + /** Gets the size of this object in memory. */ + get size(): usize { + return BLOCK_OVERHEAD + (this.mmInfo & ~3); + } + + /** Unlinks this object from its list. */ + unlink(): void { + let next = this.next; + if (next == null) { + if (DEBUG) assert(this.prev == null && changetype(this) < __heap_base); + return; // static data not yet linked + } + let prev = this.prev; + if (DEBUG) assert(prev); + next.prev = prev; + prev.next = next; + } + + /** Links this object to the specified list, with the given color. */ + linkTo(list: Object, withColor: i32): void { + let prev = list.prev; + this.nextWithColor = changetype(list) | withColor; + this.prev = prev; + prev.next = this; + list.prev = this; + } +} + +// Garbage collector interface + +// @ts-ignore: decorator +@global @unsafe +export function __new(size: usize, id: i32): usize { + if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); + var obj = changetype(__alloc(OBJECT_OVERHEAD + size) - BLOCK_OVERHEAD); + obj.rtId = id; + obj.rtSize = size; + obj.linkTo(fromSpace, white); + total += obj.size; + return changetype(obj) + TOTAL_OVERHEAD; +} + +// @ts-ignore: decorator +@global @unsafe +export function __renew(oldPtr: usize, size: usize): usize { + var oldObj = changetype(oldPtr - TOTAL_OVERHEAD); + if (oldPtr < __heap_base) { // move to heap for simplicity + let newPtr = __new(size, oldObj.rtId); + memory.copy(newPtr, oldPtr, min(size, oldObj.rtSize)); + return newPtr; + } + if (size >= OBJECT_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); + total -= oldObj.size; + var newPtr = __realloc(oldPtr - OBJECT_OVERHEAD, OBJECT_OVERHEAD + size) + OBJECT_OVERHEAD; + var newObj = changetype(newPtr - TOTAL_OVERHEAD); + newObj.rtSize = size; + + // Replace with new object + newObj.next.prev = newObj; + newObj.prev.next = newObj; + + total += newObj.size; + return newPtr; +} + +// @ts-ignore: decorator +@global @unsafe +export function __link(parentPtr: usize, childPtr: usize, expectMultiple: bool): void { + // nop +} + +// @ts-ignore: decorator +@global @unsafe +export function __visit(ptr: usize, cookie: i32): void { + if (!ptr) return; + let obj = changetype(ptr - TOTAL_OVERHEAD); + if (RTRACE) if (!onvisit(obj)) return; + if (obj.color == white) { + obj.unlink(); // from fromSpace + obj.linkTo(toSpace, i32(!white)); + } +} + +// @ts-ignore: decorator +@global @unsafe +export function __pin(ptr: usize): usize { + if (ptr) { + let obj = changetype(ptr - TOTAL_OVERHEAD); + if (obj.color == transparent) { + throw new Error(E_ALREADY_PINNED); + } + obj.unlink(); // from fromSpace + obj.linkTo(pinSpace, transparent); + } + return ptr; +} + +// @ts-ignore: decorator +@global @unsafe +export function __unpin(ptr: usize): void { + if (!ptr) return; + var obj = changetype(ptr - TOTAL_OVERHEAD); + if (obj.color != transparent) { + throw new Error(E_NOT_PINNED); + } + obj.unlink(); // from pinSpace + obj.linkTo(fromSpace, white); +} + +// @ts-ignore: decorator +@global @unsafe +export function __collect(): void { + if (TRACE) trace("GC at", 1, total); + + // Mark roots and add to toSpace + __visit_globals(VISIT_SCAN); + + // Mark what's reachable from roots + var black = i32(!white); + var to = toSpace; + var iter = to.next; + while (iter != to) { + if (DEBUG) assert(iter.color == black); + __visit_members(changetype(iter) + TOTAL_OVERHEAD, VISIT_SCAN); + iter = iter.next; + } + + // Mark what's reachable from pinned objects + var pn = pinSpace; + iter = pn.next; + while (iter != pn) { + if (DEBUG) assert(iter.color == transparent); + __visit_members(changetype(iter) + TOTAL_OVERHEAD, VISIT_SCAN); + iter = iter.next; + } + + // Sweep what's left in fromSpace + var from = fromSpace; + iter = from.next; + while (iter != from) { + if (DEBUG) assert(iter.color == white); + let newNext = iter.next; + if (changetype(iter) < __heap_base) { + iter.nextWithColor = 0; // may become linked again + iter.prev = changetype(0); + } else { + total -= iter.size; + if (isDefined(__finalize)) __finalize(changetype(iter) + TOTAL_OVERHEAD); + __free(changetype(iter) + BLOCK_OVERHEAD); + } + iter = newNext; + } + from.nextWithColor = changetype(from); + from.prev = from; + + // Flip spaces and colors + fromSpace = to; + toSpace = from; + white = black; + + if (TRACE) trace("GC done at", 1, total); + if (RTRACE) oncollect(total); +} diff --git a/std/assembly/rt/tlsf.ts b/std/assembly/rt/tlsf.ts index d5eda1a666..8c27338c24 100644 --- a/std/assembly/rt/tlsf.ts +++ b/std/assembly/rt/tlsf.ts @@ -1,5 +1,6 @@ -import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "rt/common"; -import { onalloc, onresize, onmove, onfree } from "./rtrace"; +import { AL_BITS, AL_SIZE, AL_MASK, DEBUG, BLOCK, BLOCK_OVERHEAD, BLOCK_MAXSIZE } from "./common"; +import { oninit, onalloc, onresize, onmove, onfree } from "./rtrace"; +import { E_ALLOCATION_TOO_LARGE } from "../util/error"; // === The TLSF (Two-Level Segregate Fit) memory allocator === // see: http://www.gii.upv.es/tlsf/ @@ -458,12 +459,13 @@ function computeSize(size: usize): usize { /** Prepares and checks an allocation size. */ function prepareSize(size: usize): usize { - if (size >= BLOCK_MAXSIZE) throw new Error("allocation too large"); + if (size >= BLOCK_MAXSIZE) throw new Error(E_ALLOCATION_TOO_LARGE); return computeSize(size); } /** Initializes the root structure. */ function initialize(): void { + if (isDefined(ASC_RTRACE)) oninit(__heap_base); var rootOffset = (__heap_base + AL_MASK) & ~AL_MASK; var pagesBefore = memory.size(); var pagesNeeded = ((((rootOffset + ROOT_SIZE) + 0xffff) & ~0xffff) >>> 16); @@ -514,7 +516,7 @@ export function reallocateBlock(root: Root, block: Block, size: usize): Block { if (payloadSize <= blockSize) { prepareBlock(root, block, payloadSize); if (isDefined(ASC_RTRACE)) { - if (payloadSize != blockSize) onresize(block, blockSize); + if (payloadSize != blockSize) onresize(block, BLOCK_OVERHEAD + blockSize); } return block; } @@ -530,7 +532,7 @@ export function reallocateBlock(root: Root, block: Block, size: usize): Block { // is immediately split though. does this trigger any assertions / issues? block.mmInfo = (blockInfo & TAGS_MASK) | mergeSize; prepareBlock(root, block, payloadSize); - if (isDefined(ASC_RTRACE)) onresize(block, blockSize); + if (isDefined(ASC_RTRACE)) onresize(block, BLOCK_OVERHEAD + blockSize); return block; } } @@ -552,8 +554,8 @@ function moveBlock(root: Root, block: Block, newSize: usize): Block { /** Frees a block. */ export function freeBlock(root: Root, block: Block): void { - block.mmInfo = block.mmInfo | FREE; if (isDefined(ASC_RTRACE)) onfree(block); + block.mmInfo = block.mmInfo | FREE; insertBlock(root, block); } @@ -591,9 +593,3 @@ export function __free(ptr: usize): void { if (!ROOT) initialize(); freeBlock(ROOT, checkUsedBlock(ptr)); } - -// @ts-ignore: decorator -@global @unsafe -export function __reset(): void { - throw new Error("not implemented"); -} diff --git a/std/assembly/set.ts b/std/assembly/set.ts index 2fe540a551..f8396a5216 100644 --- a/std/assembly/set.ts +++ b/std/assembly/set.ts @@ -111,9 +111,10 @@ export class Set { } // append new entry entry = changetype>(changetype(this.entries) + (this.entriesOffset++) * ENTRY_SIZE()); - entry.key = isManaged() - ? changetype(__retain(changetype(key))) - : key; + entry.key = key; + if (isManaged()) { + __link(changetype(this), changetype(key), true); + } ++this.entriesCount; // link with previous entry in bucket let bucketPtrBase = changetype(this.buckets) + (hashCode & this.bucketsMask) * BUCKET_SIZE; @@ -132,7 +133,6 @@ export class Set { delete(key: T): bool { var entry = this.find(key, HASH(key)); // unmanaged! if (!entry) return false; - if (isManaged()) __release(changetype(entry.key)); // exact 'key' entry.taggedNext |= EMPTY; --this.entriesCount; // check if rehashing is appropriate diff --git a/std/assembly/shared/typeinfo.ts b/std/assembly/shared/typeinfo.ts index 7dd0e437cf..fb33087055 100644 --- a/std/assembly/shared/typeinfo.ts +++ b/std/assembly/shared/typeinfo.ts @@ -35,8 +35,8 @@ export const enum TypeinfoFlags { SET = 1 << 3, /** Type is a `Map`. */ MAP = 1 << 4, - /** Type is inherently acyclic. */ - ACYCLIC = 1 << 5, + /** Type has no outgoing pointers. */ + POINTERFREE = 1 << 5, /** Value alignment of 1 byte. */ VALUE_ALIGN_0 = 1 << 6, /** Value alignment of 2 bytes. */ diff --git a/std/assembly/staticarray.ts b/std/assembly/staticarray.ts index 0af1a5856d..c20feb9f38 100644 --- a/std/assembly/staticarray.ts +++ b/std/assembly/staticarray.ts @@ -19,17 +19,19 @@ export class StaticArray { static fromArray(source: Array): StaticArray { var length = source.length; var outSize = length << alignof(); - var out = __new(outSize, idof>()); + var out = changetype>(__new(outSize, idof>())); if (isManaged()) { let sourcePtr = source.dataStart; for (let i = 0; i < length; ++i) { let off = i << alignof(); - store(out + off, __retain(load(sourcePtr + off))); + let ref = load(sourcePtr + off); + store(changetype(out) + off, ref); + __link(changetype(out), ref, true); } } else { - memory.copy(out, source.dataStart, outSize); + memory.copy(changetype(out), source.dataStart, outSize); } - return changetype>(out); + return out; } static concat(source: StaticArray, other: StaticArray): StaticArray { @@ -37,19 +39,21 @@ export class StaticArray { var otherLen = select(0, other.length, other === null); var outLen = sourceLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__new(outLen << alignof(), idof>())); // retains + var out = changetype>(__new(outLen << alignof(), idof>())); var outStart = changetype(out); var sourceSize = sourceLen << alignof(); if (isManaged()) { for (let offset: usize = 0; offset < sourceSize; offset += sizeof()) { let ref = load(changetype(source) + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } outStart += sourceSize; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { let ref = load(changetype(other) + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } } else { memory.copy(outStart, changetype(source), sourceSize); @@ -64,13 +68,14 @@ export class StaticArray { end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); var sliceSize = length << alignof(); - var slice = changetype>(__new(sliceSize, idof>())); // retains + var slice = changetype>(__new(sliceSize, idof>())); var sourcePtr = changetype(source) + (start << alignof()); if (isManaged()) { let off: usize = 0; while (off < sliceSize) { let ref = load(sourcePtr + off); - store(changetype(slice) + off, __retain(ref)); + store(changetype(slice) + off, ref); + __link(changetype(slice), ref, true); off += sizeof(); } } else { @@ -82,9 +87,9 @@ export class StaticArray { constructor(length: i32) { if (length > BLOCK_MAXSIZE >>> alignof()) throw new RangeError(E_INVALIDLENGTH); var outSize = length << alignof(); - var out = __new(outSize, idof>()); - memory.fill(out, 0, outSize); - return changetype>(out); // retains + var out = changetype>(__new(outSize, idof>())); + memory.fill(changetype(out), 0, outSize); + return out; } get length(): i32 { @@ -112,15 +117,9 @@ export class StaticArray { } @unsafe @operator("{}=") private __uset(index: i32, value: T): void { + store(changetype(this) + (index << alignof()), value); if (isManaged()) { - let offset = changetype(this) + (index << alignof()); - let oldRef = load(offset); - if (changetype(value) != oldRef) { - store(offset, __retain(changetype(value))); - __release(changetype(oldRef)); - } - } else { - store(changetype(this) + (index << alignof()), value); + __link(changetype(this), changetype(value), true); } } @@ -169,21 +168,23 @@ export class StaticArray { var otherLen = select(0, other.length, other === null); var outLen = thisLen + otherLen; if (outLen > BLOCK_MAXSIZE >>> alignof()) throw new Error(E_INVALIDLENGTH); - var out = changetype>(__newArray(outLen, alignof(), idof>())); // retains + var out = changetype>(__newArray(outLen, alignof(), idof>())); var outStart = out.dataStart; var thisSize = thisLen << alignof(); if (isManaged()) { let thisStart = changetype(this); for (let offset: usize = 0; offset < thisSize; offset += sizeof()) { let ref = load(thisStart + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } outStart += thisSize; let otherStart = other.dataStart; let otherSize = otherLen << alignof(); for (let offset: usize = 0; offset < otherSize; offset += sizeof()) { let ref = load(otherStart + offset); - store(outStart + offset, __retain(ref)); + store(outStart + offset, ref); + __link(changetype(out), ref, true); } } else { memory.copy(outStart, changetype(this), thisSize); @@ -197,7 +198,7 @@ export class StaticArray { start = start < 0 ? max(start + length, 0) : min(start, length); end = end < 0 ? max(end + length, 0) : min(end , length); length = max(end - start, 0); - var slice = changetype>(__newArray(length, alignof(), idof>())); // retains + var slice = changetype>(__newArray(length, alignof(), idof>())); var sliceBase = slice.dataStart; var thisBase = changetype(this) + (start << alignof()); if (isManaged()) { @@ -205,7 +206,8 @@ export class StaticArray { let end = length << alignof(); while (off < end) { let ref = load(thisBase + off); - store(sliceBase + off, __retain(ref)); + store(sliceBase + off, ref); + __link(changetype(slice), ref, true); off += sizeof(); } } else { diff --git a/std/assembly/string.ts b/std/assembly/string.ts index 0ff88c264f..4b13e55467 100644 --- a/std/assembly/string.ts +++ b/std/assembly/string.ts @@ -13,35 +13,35 @@ import { Array } from "./array"; static fromCharCode(unit: i32, surr: i32 = -1): String { var hasSur = surr > 0; - var out = __new(2 << i32(hasSur), idof()); - store(out, unit); - if (hasSur) store(out, surr, 2); - return changetype(out); // retains + var out = changetype(__new(2 << i32(hasSur), idof())); + store(changetype(out), unit); + if (hasSur) store(changetype(out), surr, 2); + return out; } static fromCharCodes(units: Array): String { var length = units.length; - var out = __new(length << 1, idof()); + var out = changetype(__new(length << 1, idof())); var ptr = units.dataStart; for (let i = 0; i < length; ++i) { - store(out + (i << 1), load(ptr + (i << 2))); + store(changetype(out) + (i << 1), load(ptr + (i << 2))); } - return changetype(out); + return out; } static fromCodePoint(code: i32): String { assert(code <= 0x10FFFF); var hasSur = code > 0xFFFF; - var out = __new(2 << i32(hasSur), idof()); + var out = changetype(__new(2 << i32(hasSur), idof())); if (!hasSur) { - store(out, code); + store(changetype(out), code); } else { code -= 0x10000; let hi = (code & 0x03FF) | 0xDC00; let lo = (code >>> 10) | 0xD800; - store(out, lo | (hi << 16)); + store(changetype(out), lo | (hi << 16)); } - return changetype(out); // retains + return out; } get length(): i32 { @@ -50,9 +50,9 @@ import { Array } from "./array"; @operator("[]") charAt(pos: i32): String { if (pos >= this.length) return changetype(""); - var out = __new(2, idof()); - store(out, load(changetype(this) + (pos << 1))); - return changetype(out); // retains + var out = changetype(__new(2, idof())); + store(changetype(out), load(changetype(this) + (pos << 1))); + return out; } charCodeAt(pos: i32): i32 { @@ -80,7 +80,7 @@ import { Array } from "./array"; var otherSize: isize = other.length << 1; var outSize: usize = thisSize + otherSize; if (outSize == 0) return changetype(""); - var out = changetype(__new(outSize, idof())); // retains + var out = changetype(__new(outSize, idof())); memory.copy(changetype(out), changetype(this), thisSize); memory.copy(changetype(out) + thisSize, changetype(other), otherSize); return out; @@ -203,9 +203,9 @@ import { Array } from "./array"; if (intStart < 0) intStart = max(len + intStart, 0); var size = min(max(end, 0), len - intStart) << 1; if (size <= 0) return changetype(""); - var out = __new(size, idof()); - memory.copy(out, changetype(this) + (intStart << 1), size); - return changetype(out); // retains + var out = changetype(__new(size, idof())); + memory.copy(changetype(out), changetype(this) + (intStart << 1), size); + return out; } substring(start: i32, end: i32 = i32.MAX_VALUE): String { @@ -217,9 +217,9 @@ import { Array } from "./array"; var size = toPos - fromPos; if (!size) return changetype(""); if (!fromPos && toPos == len << 1) return this; - var out = __new(size, idof()); - memory.copy(out, changetype(this) + fromPos, size); - return changetype(out); // retains + var out = changetype(__new(size, idof())); + memory.copy(changetype(out), changetype(this) + fromPos, size); + return out; } trim(): String { @@ -234,9 +234,9 @@ import { Array } from "./array"; } if (!size) return changetype(""); if (!offset && size == len << 1) return this; - var out = __new(size, idof()); - memory.copy(out, changetype(this) + offset, size); - return changetype(out); // retains + var out = changetype(__new(size, idof())); + memory.copy(changetype(out), changetype(this) + offset, size); + return out; } @inline @@ -258,9 +258,9 @@ import { Array } from "./array"; if (!offset) return this; size -= offset; if (!size) return changetype(""); - var out = __new(size, idof()); - memory.copy(out, changetype(this) + offset, size); - return changetype(out); // retains + var out = changetype(__new(size, idof())); + memory.copy(changetype(out), changetype(this) + offset, size); + return out; } trimEnd(): String { @@ -271,9 +271,9 @@ import { Array } from "./array"; } if (!size) return changetype(""); if (size == originalSize) return this; - var out = __new(size, idof()); - memory.copy(out, changetype(this), size); - return changetype(out); // retains + var out = changetype(__new(size, idof())); + memory.copy(changetype(out), changetype(this), size); + return out; } padStart(length: i32, pad: string = " "): String { @@ -282,18 +282,18 @@ import { Array } from "./array"; var padSize = pad.length << 1; if (targetSize < thisSize || !padSize) return this; var prependSize = targetSize - thisSize; - var out = __new(targetSize, idof()); + var out = changetype(__new(targetSize, idof())); if (prependSize > padSize) { let repeatCount = (prependSize - 2) / padSize; let restBase = repeatCount * padSize; let restSize = prependSize - restBase; - memory.repeat(out, changetype(pad), padSize, repeatCount); - memory.copy(out + restBase, changetype(pad), restSize); + memory.repeat(changetype(out), changetype(pad), padSize, repeatCount); + memory.copy(changetype(out) + restBase, changetype(pad), restSize); } else { - memory.copy(out, changetype(pad), prependSize); + memory.copy(changetype(out), changetype(pad), prependSize); } - memory.copy(out + prependSize, changetype(this), thisSize); - return changetype(out); // retains + memory.copy(changetype(out) + prependSize, changetype(this), thisSize); + return out; } padEnd(length: i32, pad: string = " "): String { @@ -302,18 +302,18 @@ import { Array } from "./array"; var padSize = pad.length << 1; if (targetSize < thisSize || !padSize) return this; var appendSize = targetSize - thisSize; - var out = __new(targetSize, idof()); - memory.copy(out, changetype(this), thisSize); + var out = changetype(__new(targetSize, idof())); + memory.copy(changetype(out), changetype(this), thisSize); if (appendSize > padSize) { let repeatCount = (appendSize - 2) / padSize; let restBase = repeatCount * padSize; let restSize = appendSize - restBase; - memory.repeat(out + thisSize, changetype(pad), padSize, repeatCount); - memory.copy(out + thisSize + restBase, changetype(pad), restSize); + memory.repeat(changetype(out) + thisSize, changetype(pad), padSize, repeatCount); + memory.copy(changetype(out) + thisSize + restBase, changetype(pad), restSize); } else { - memory.copy(out + thisSize, changetype(pad), appendSize); + memory.copy(changetype(out) + thisSize, changetype(pad), appendSize); } - return changetype(out); // retains + return out; } repeat(count: i32 = 0): String { @@ -326,9 +326,9 @@ import { Array } from "./array"; if (count == 0 || !length) return changetype(""); if (count == 1) return this; - var out = __new((length * count) << 1, idof()); - memory.repeat(out, changetype(this), length << 1, count); - return changetype(out); // retains + var out = changetype(__new((length * count) << 1, idof())); + memory.repeat(changetype(out), changetype(this), length << 1, count); + return out; } replace(search: String, replacement: String): String { @@ -343,19 +343,19 @@ import { Array } from "./array"; len -= slen; let olen = len + rlen; if (olen) { - let out = __new(olen << 1, idof()); - memory.copy(out, changetype(this), index << 1); + let out = changetype(__new(olen << 1, idof())); + memory.copy(changetype(out), changetype(this), index << 1); memory.copy( - out + (index << 1), + changetype(out) + (index << 1), changetype(replacement), rlen << 1 ); memory.copy( - out + ((index + rlen) << 1), + changetype(out) + ((index + rlen) << 1), changetype(this) + ((index + slen) << 1), (len - index) << 1 ); - return changetype(out); + return out; } } return this; @@ -373,8 +373,8 @@ import { Array } from "./array"; if (!searchLen) { if (!replaceLen) return this; // Special case: 'abc'.replaceAll('', '-') -> '-a-b-c-' - let out = __new((thisLen + (thisLen + 1) * replaceLen) << 1, idof()); - memory.copy(out, changetype(replacement), replaceLen << 1); + let out = changetype(__new((thisLen + (thisLen + 1) * replaceLen) << 1, idof())); + memory.copy(changetype(out), changetype(replacement), replaceLen << 1); let offset = replaceLen; for (let i: usize = 0; i < thisLen; ++i) { store( @@ -382,66 +382,66 @@ import { Array } from "./array"; load(changetype(this) + (i << 1)) ); memory.copy( - out + (offset << 1), + changetype(out) + (offset << 1), changetype(replacement), replaceLen << 1 ); offset += replaceLen; } - return changetype(out); + return out; } var prev: isize = 0, next: isize = 0; if (searchLen == replaceLen) { // Fast path when search and replacement have same length let outSize = thisLen << 1; - let out = __new(outSize, idof()); - memory.copy(out, changetype(this), outSize); + let out = changetype(__new(outSize, idof())); + memory.copy(changetype(out), changetype(this), outSize); while (~(next = this.indexOf(search, prev))) { - memory.copy(out + (next << 1), changetype(replacement), replaceLen << 1); + memory.copy(changetype(out) + (next << 1), changetype(replacement), replaceLen << 1); prev = next + searchLen; } - return changetype(out); + return out; } - var out: usize = 0, offset: usize = 0, outSize = thisLen; + var out: String | null = null, offset: usize = 0, outSize = thisLen; while (~(next = this.indexOf(search, prev))) { - if (!out) out = __new(thisLen << 1, idof()); + if (!out) out = changetype(__new(thisLen << 1, idof())); let chunk = next - prev; if (offset + chunk + replaceLen > outSize) { outSize <<= 1; - out = __renew(out, outSize << 1); + out = changetype(__renew(changetype(out), outSize << 1)); } memory.copy( - out + (offset << 1), + changetype(out) + (offset << 1), changetype(this) + (prev << 1), chunk << 1 ); offset += chunk; memory.copy( - out + (offset << 1), + changetype(out) + (offset << 1), changetype(replacement), replaceLen << 1 ); offset += replaceLen; prev = next + searchLen; } - if (offset) { + if (out) { let rest = thisLen - prev; if (offset + rest > outSize) { outSize <<= 1; - out = __renew(out, outSize << 1); + out = changetype(__renew(changetype(out), outSize << 1)); } if (rest) { memory.copy( - out + (offset << 1), + changetype(out) + (offset << 1), changetype(this) + (prev << 1), rest << 1 ); } rest += offset; if (outSize > rest) { - out = __renew(out, rest << 1); + out = changetype(__renew(changetype(out), rest << 1)); } - return changetype(out); + return out; } return this; } @@ -452,45 +452,45 @@ import { Array } from "./array"; end = end < 0 ? max(end + len, 0) : min(end, len); len = end - start; if (len <= 0) return changetype(""); - var out = __new(len << 1, idof()); - memory.copy(out, changetype(this) + (start << 1), len << 1); - return changetype(out); // retains + var out = changetype(__new(len << 1, idof())); + memory.copy(changetype(out), changetype(this) + (start << 1), len << 1); + return out; } split(separator: String | null = null, limit: i32 = i32.MAX_VALUE): String[] { - if (!limit) return changetype>(__newArray(0, alignof(), idof>())); // retains + if (!limit) return changetype(__newArray(0, alignof(), idof>())); if (separator === null) return [this]; var length: isize = this.length; var sepLen = separator.length; if (limit < 0) limit = i32.MAX_VALUE; if (!sepLen) { - if (!length) return changetype>(__newArray(0, alignof(), idof>())); // retains + if (!length) return changetype(__newArray(0, alignof(), idof>())); // split by chars length = min(length, limit); - let result = changetype>(__newArray(length, alignof(), idof>())); // retains + let result = changetype(__newArray(length, alignof(), idof>())); // @ts-ignore: cast let resultStart = result.dataStart as usize; for (let i: isize = 0; i < length; ++i) { - let charStr = __new(2, idof()); - store(charStr, load(changetype(this) + (i << 1))); - store(resultStart + (i << alignof()), charStr); // result[i] = charStr - if (isManaged()) __retain(charStr); + let charStr = changetype(__new(2, idof())); + store(changetype(charStr), load(changetype(this) + (i << 1))); + store(resultStart + (i << alignof()), changetype(charStr)); // result[i] = charStr + __link(changetype(result), changetype(charStr), true); } return result; } else if (!length) { - let result = changetype>(__newArray(1, alignof(), idof>())); // retains + let result = changetype(__newArray(1, alignof(), idof>())); // @ts-ignore: cast store(result.dataStart as usize, changetype("")); // static "" return result; } - var result = changetype>(__newArray(0, alignof(), idof>())); // retains + var result = changetype(__newArray(0, alignof(), idof>())); var end = 0, start = 0, i = 0; while (~(end = this.indexOf(separator, start))) { let len = end - start; if (len > 0) { - let out = __new(len << 1, idof()); - memory.copy(out, changetype(this) + (start << 1), len << 1); - result.push(changetype(out)); + let out = changetype(__new(len << 1, idof())); + memory.copy(changetype(out), changetype(this) + (start << 1), len << 1); + result.push(out); } else { result.push(changetype("")); } @@ -503,9 +503,9 @@ import { Array } from "./array"; } var len = length - start; if (len > 0) { - let out = __new(len << 1, idof()); - memory.copy(out, changetype(this) + (start << 1), len << 1); - result.push(changetype(out)); // retains + let out = changetype(__new(len << 1, idof())); + memory.copy(changetype(out), changetype(this) + (start << 1), len << 1); + result.push(out); } else { result.push(changetype("")); // static "" } @@ -515,12 +515,12 @@ import { Array } from "./array"; toLowerCase(): String { var len = this.length; if (!len) return this; - var codes = __new(len * 2 * 2, idof()); + var codes = changetype(__new(len * 2 * 2, idof())); var j: usize = 0; for (let i: usize = 0; i < len; ++i, ++j) { let c = load(changetype(this) + (i << 1)); if (isAscii(c)) { - store(codes + (j << 1), toLower8(c)); + store(changetype(codes) + (j << 1), toLower8(c)); } else { // check and read surrogate pair if ((c - 0xD7FF < 0xDC00 - 0xD7FF) && i < len - 1) { @@ -530,7 +530,7 @@ import { Array } from "./array"; c = (((c & 0x03FF) << 10) | (c1 & 0x03FF)) + 0x10000; ++i; if (c >= 0x20000) { - store(codes + (j << 1), c0 | (c1 << 16)); + store(changetype(codes) + (j << 1), c0 | (c1 << 16)); ++j; continue; } @@ -539,7 +539,7 @@ import { Array } from "./array"; // check special casing for lower table. It has one ently so instead lookup we just inline this. if (c == 0x0130) { // 0x0130 -> [0x0069, 0x0307] - store(codes + (j << 1), (0x0307 << 16) | 0x0069); + store(changetype(codes) + (j << 1), (0x0307 << 16) | 0x0069); ++j; } else if (c == 0x03A3) { // 'Σ' // Σ maps to σ but except at the end of a word where it maps to ς @@ -547,40 +547,39 @@ import { Array } from "./array"; if (len > 1 && isFinalSigma(changetype(this), i, len)) { sigma = 0x03C2; // ς } - store(codes + (j << 1), sigma); + store(changetype(codes) + (j << 1), sigma); } else if (c - 0x24B6 <= 0x24CF - 0x24B6) { // Range 0x24B6 <= c <= 0x24CF not covered by casemap and require special early handling - store(codes + (j << 1), c + 26); + store(changetype(codes) + (j << 1), c + 26); } else { let code = casemap(c, 0) & 0x1FFFFF; if (code < 0x10000) { - store(codes + (j << 1), code); + store(changetype(codes) + (j << 1), code); } else { // store as surrogare pair code -= 0x10000; let lo = (code >>> 10) | 0xD800; let hi = (code & 0x03FF) | 0xDC00; - store(codes + (j << 1), lo | (hi << 16)); + store(changetype(codes) + (j << 1), lo | (hi << 16)); ++j; } } } } - codes = __renew(codes, j << 1); - return changetype(codes); // retains + return changetype(__renew(changetype(codes), j << 1)); } toUpperCase(): String { var len = this.length; if (!len) return this; - var codes = __new(len * 3 * 2, idof()); + var codes = changetype(__new(len * 3 * 2, idof())); var specialsPtr = changetype(SPECIALS_UPPER); var specialsLen = SPECIALS_UPPER.length; var j: usize = 0; for (let i: usize = 0; i < len; ++i, ++j) { let c = load(changetype(this) + (i << 1)); if (isAscii(c)) { - store(codes + (j << 1), toUpper8(c)); + store(changetype(codes) + (j << 1), toUpper8(c)); } else { // check and read surrogate pair if ((c - 0xD7FF < 0xDC00 - 0xD7FF) && i < len - 1) { @@ -590,7 +589,7 @@ import { Array } from "./array"; c = (((c & 0x03FF) << 10) | (c1 & 0x03FF)) + 0x10000; ++i; if (c >= 0x20000) { - store(codes + (j << 1), c0 | (c1 << 16)); + store(changetype(codes) + (j << 1), c0 | (c1 << 16)); ++j; continue; } @@ -599,7 +598,7 @@ import { Array } from "./array"; // Range 0x24D0 <= c <= 0x24E9 not covered by casemap and require special early handling if (c - 0x24D0 <= 0x24E9 - 0x24D0) { // monkey patch - store(codes + (j << 1), c - 26); + store(changetype(codes) + (j << 1), c - 26); } else { let index: usize = -1; // Fast range check. See first and last rows in specialsUpper table @@ -610,27 +609,26 @@ import { Array } from "./array"; // load next 3 code points from row with `index` offset for specialsUpper table let ab = load(specialsPtr + (index << 1), 2); let cc = load(specialsPtr + (index << 1), 6); - store(codes + (j << 1), ab, 0); - store(codes + (j << 1), cc, 4); + store(changetype(codes) + (j << 1), ab, 0); + store(changetype(codes) + (j << 1), cc, 4); j += 1 + usize(cc != 0); } else { let code = casemap(c, 1) & 0x1FFFFF; if (code < 0x10000) { - store(codes + (j << 1), code); + store(changetype(codes) + (j << 1), code); } else { // store as surrogare pair code -= 0x10000; let lo = (code >>> 10) | 0xD800; let hi = (code & 0x03FF) | 0xDC00; - store(codes + (j << 1), lo | (hi << 16)); + store(changetype(codes) + (j << 1), lo | (hi << 16)); ++j; } } } } } - codes = __renew(codes, j << 1); - return changetype(codes); // retains + return changetype(__renew(changetype(codes), j << 1)); } toString(): String { @@ -681,9 +679,9 @@ export namespace String { } export function encode(str: string, nullTerminated: bool = false): ArrayBuffer { - var buf = __new(byteLength(str, nullTerminated), idof()); - encodeUnsafe(changetype(str), str.length, buf, nullTerminated); - return changetype(buf); // retains + var buf = changetype(__new(byteLength(str, nullTerminated), idof())); + encodeUnsafe(changetype(str), str.length, changetype(buf), nullTerminated); + return buf; } // @ts-ignore: decorator @@ -740,8 +738,8 @@ export namespace String { var bufOff = buf; var bufEnd = buf + len; assert(bufEnd >= bufOff); // guard wraparound - var str = __new(len << 1, idof()); // max is one u16 char per u8 byte - var strOff = str; + var str = changetype(__new(len << 1, idof())); // max is one u16 char per u8 byte + var strOff = changetype(str); while (bufOff < bufEnd) { let u0 = load(bufOff); ++bufOff; if (!(u0 & 128)) { @@ -776,7 +774,7 @@ export namespace String { } strOff += 2; } - return changetype(__renew(str, strOff - str)); // retains + return changetype(__renew(changetype(str), strOff - changetype(str))); } } @@ -787,9 +785,9 @@ export namespace String { } export function encode(str: string): ArrayBuffer { - var buf = __new(byteLength(str), idof()); - encodeUnsafe(changetype(str), str.length, buf); - return changetype(buf); // retains + var buf = changetype(__new(byteLength(str), idof())); + encodeUnsafe(changetype(str), str.length, changetype(buf)); + return buf; } // @ts-ignore: decorator @@ -807,9 +805,9 @@ export namespace String { // @ts-ignore: decorator @unsafe export function decodeUnsafe(buf: usize, len: usize): String { - var str = __new(len &= ~1, idof()); - memory.copy(str, buf, len); - return changetype(str); // retains + var str = changetype(__new(len &= ~1, idof())); + memory.copy(changetype(str), buf, len); + return str; } } } diff --git a/std/assembly/typedarray.ts b/std/assembly/typedarray.ts index 6816d89216..a713bfec97 100644 --- a/std/assembly/typedarray.ts +++ b/std/assembly/typedarray.ts @@ -1488,11 +1488,13 @@ function SUBARRAY( end = end < 0 ? max(len + end, 0) : min(end, len); end = max(end, begin); - var out = __new(offsetof(), idof()); - store(out, __retain(changetype(array.buffer)), offsetof("buffer")); - store(out, array.dataStart + (begin << alignof()), offsetof("dataStart")); - store(out, (end - begin) << alignof(), offsetof("byteLength")); - return changetype(out); // retains + var out = changetype(__new(offsetof(), idof())); + var buf = changetype(array.buffer); + store(changetype(out), buf, offsetof("buffer")); + __link(changetype(out), buf, false); + store(changetype(out), array.dataStart + (begin << alignof()), offsetof("dataStart")); + store(changetype(out), (end - begin) << alignof(), offsetof("byteLength")); + return out; } // @ts-ignore: decorator @@ -1558,18 +1560,19 @@ function MAP( var dataStart = array.dataStart; var byteLength = len << alignof(); - var out = __new(offsetof(), idof()); - var buffer = __new(byteLength, idof()); + var out = changetype(__new(offsetof(), idof())); + var buf = changetype(__new(byteLength, idof())); for (let i = 0; i < len; i++) { store( - buffer + (i << alignof()), + changetype(buf) + (i << alignof()), fn(load(dataStart + (i << alignof())), i, array) ); } - store(out, __retain(buffer), offsetof("buffer")); - store(out, buffer, offsetof("dataStart")); - store(out, byteLength, offsetof("byteLength")); - return changetype(out); // retains + store(changetype(out), changetype(buf), offsetof("buffer")); + __link(changetype(out), changetype(buf), false); + store(changetype(out), changetype(buf), offsetof("dataStart")); + store(changetype(out), byteLength, offsetof("byteLength")); + return out; } // @ts-ignore: decorator @@ -1579,26 +1582,27 @@ function FILTER( fn: (value: T, index: i32, self: TArray) => bool, ): TArray { var len = array.length; - var out = __new(offsetof(), idof()); - var buffer = __new(len << alignof(), idof()); + var out = changetype(__new(offsetof(), idof())); + var buf = changetype(__new(len << alignof(), idof())); var dataStart = array.dataStart; var j: usize = 0; for (let i = 0; i < len; i++) { let value = load(dataStart + (i << alignof())); if (fn(value, i, array)) { store( - buffer + (j++ << alignof()), + changetype(buf) + (j++ << alignof()), value ); } } // shrink output buffer var byteLength = j << alignof(); - var data = __renew(buffer, byteLength); - store(out, __retain(data), offsetof("buffer")); - store(out, byteLength, offsetof("byteLength")); - store(out, data, offsetof("dataStart")); - return changetype(out); // retains + var data = __renew(changetype(buf), byteLength); + store(changetype(out), data, offsetof("buffer")); + __link(changetype(out), data, false); + store(changetype(out), byteLength, offsetof("byteLength")); + store(changetype(out), data, offsetof("dataStart")); + return out; } // @ts-ignore: decorator @@ -1755,11 +1759,12 @@ function WRAP(buffer: ArrayBuffer, byteOffset throw new RangeError(E_INVALIDLENGTH); } } - var out = __new(offsetof(), idof()); - store(out, __retain(changetype(buffer)), offsetof("buffer")); - store(out, byteLength, offsetof("byteLength")); - store(out, changetype(buffer) + byteOffset, offsetof("dataStart")); - return changetype(out); // retains + var out = changetype(__new(offsetof(), idof())); + store(changetype(out), changetype(buffer), offsetof("buffer")); + __link(changetype(out), changetype(buffer), false); + store(changetype(out), byteLength, offsetof("byteLength")); + store(changetype(out), changetype(buffer) + byteOffset, offsetof("dataStart")); + return out; } // @ts-ignore: decorator diff --git a/std/assembly/util/error.ts b/std/assembly/util/error.ts index 747067fc66..2384a60e8c 100644 --- a/std/assembly/util/error.ts +++ b/std/assembly/util/error.ts @@ -28,3 +28,15 @@ export const E_NOTIMPLEMENTED: string = "Not implemented"; // @ts-ignore: decorator @lazy @inline export const E_KEYNOTFOUND: string = "Key does not exist"; + +// @ts-ignore: decorator +@lazy @inline +export const E_ALLOCATION_TOO_LARGE: string = "Allocation too large"; + +// @ts-ignore: decorator +@lazy @inline +export const E_ALREADY_PINNED: string = "Object already pinned"; + +// @ts-ignore: decorator +@lazy @inline +export const E_NOT_PINNED: string = "Object is not pinned"; diff --git a/std/assembly/util/number.ts b/std/assembly/util/number.ts index 19b6a0822f..aacb3a786f 100644 --- a/std/assembly/util/number.ts +++ b/std/assembly/util/number.ts @@ -350,22 +350,22 @@ export function utoa32(value: u32, radix: i32): String { throw new RangeError("toString() radix argument must be between 2 and 36"); } if (!value) return "0"; - var out: usize = 0; + var out: String; if (radix == 10) { let decimals = decimalCount32(value); - out = __new(decimals << 1, idof()); - utoa32_dec_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_dec_core(changetype(out), value, decimals); } else if (radix == 16) { let decimals = (31 - clz(value) >> 2) + 1; - out = __new(decimals << 1, idof()); - utoa32_hex_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_hex_core(changetype(out), value, decimals); } else { let decimals = ulog_base(value, radix); - out = __new(decimals << 1, idof()); - utoa64_any_core(out, value, decimals, radix); + out = changetype(__new(decimals << 1, idof())); + utoa64_any_core(changetype(out), value, decimals, radix); } - return changetype(out); // retains + return out; } export function itoa32(value: i32, radix: i32): String { @@ -376,24 +376,24 @@ export function itoa32(value: i32, radix: i32): String { var sign = value >>> 31; if (sign) value = -value; - var out: usize = 0; + var out: String; if (radix == 10) { let decimals = decimalCount32(value) + sign; - out = __new(decimals << 1, idof()); - utoa32_dec_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_dec_core(changetype(out), value, decimals); } else if (radix == 16) { let decimals = (31 - clz(value) >> 2) + 1 + sign; - out = __new(decimals << 1, idof()); - utoa32_hex_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_hex_core(changetype(out), value, decimals); } else { let val32 = u32(value); let decimals = ulog_base(val32, radix) + sign; - out = __new(decimals << 1, idof()); - utoa64_any_core(out, val32, decimals, radix); + out = changetype(__new(decimals << 1, idof())); + utoa64_any_core(changetype(out), val32, decimals, radix); } - if (sign) store(out, CharCode.MINUS); - return changetype(out); // retains + if (sign) store(changetype(out), CharCode.MINUS); + return out; } export function utoa64(value: u64, radix: i32): String { @@ -401,29 +401,29 @@ export function utoa64(value: u64, radix: i32): String { throw new RangeError("toString() radix argument must be between 2 and 36"); } if (!value) return "0"; - var out: usize = 0; + var out: String; if (radix == 10) { if (value <= u32.MAX_VALUE) { let val32 = value; let decimals = decimalCount32(val32); - out = __new(decimals << 1, idof()); - utoa32_dec_core(out, val32, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_dec_core(changetype(out), val32, decimals); } else { let decimals = decimalCount64High(value); - out = __new(decimals << 1, idof()); - utoa64_dec_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa64_dec_core(changetype(out), value, decimals); } } else if (radix == 16) { let decimals = (63 - u32(clz(value)) >> 2) + 1; - out = __new(decimals << 1, idof()); - utoa64_hex_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa64_hex_core(changetype(out), value, decimals); } else { let decimals = ulog_base(value, radix); - out = __new(decimals << 1, idof()); - utoa64_any_core(out, value, decimals, radix); + out = changetype(__new(decimals << 1, idof())); + utoa64_any_core(changetype(out), value, decimals, radix); } - return changetype(out); // retains + return out; } export function itoa64(value: i64, radix: i32): String { @@ -434,30 +434,30 @@ export function itoa64(value: i64, radix: i32): String { var sign = u32(value >>> 63); if (sign) value = -value; - var out: usize = 0; + var out: String; if (radix == 10) { if (value <= u32.MAX_VALUE) { let val32 = value; let decimals = decimalCount32(val32) + sign; - out = __new(decimals << 1, idof()); - utoa32_dec_core(out, val32, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa32_dec_core(changetype(out), val32, decimals); } else { let decimals = decimalCount64High(value) + sign; - out = __new(decimals << 1, idof()); - utoa64_dec_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa64_dec_core(changetype(out), value, decimals); } } else if (radix == 16) { let decimals = (63 - u32(clz(value)) >> 2) + 1 + sign; - out = __new(decimals << 1, idof()); - utoa64_hex_core(out, value, decimals); + out = changetype(__new(decimals << 1, idof())); + utoa64_hex_core(changetype(out), value, decimals); } else { let decimals = ulog_base(value, radix) + sign; - out = __new(decimals << 1, idof()); - utoa64_any_core(out, value, decimals, radix); + out = changetype(__new(decimals << 1, idof())); + utoa64_any_core(changetype(out), value, decimals, radix); } - if (sign) store(out, CharCode.MINUS); - return changetype(out); // retains + if (sign) store(changetype(out), CharCode.MINUS); + return out; } // @ts-ignore: decorator @@ -738,9 +738,9 @@ export function dtoa(value: f64): String { return select("-Infinity", "Infinity", value < 0); } var size = dtoa_core(dtoa_buf, value) << 1; - var result = __new(size, idof()); - memory.copy(result, dtoa_buf, size); - return changetype(result); + var result = changetype(__new(size, idof())); + memory.copy(changetype(result), dtoa_buf, size); + return result; } export function itoa_buffered(buffer: usize, value: T): u32 { diff --git a/std/assembly/util/string.ts b/std/assembly/util/string.ts index 15b4f51a82..39569c5f3e 100644 --- a/std/assembly/util/string.ts +++ b/std/assembly/util/string.ts @@ -849,7 +849,7 @@ export function joinBooleanArray(dataStart: usize, length: i32, separator: strin var sepLen = separator.length; var valueLen = 5; // max possible length of element len("false") var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__new(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); var offset = 0; var value: bool; for (let i = 0; i < lastIndex; ++i) { @@ -891,18 +891,18 @@ export function joinIntegerArray(dataStart: usize, length: i32, separator: st if (isSigned()) { if (sizeof() <= 4) { // @ts-ignore: type - return changetype(itoa32(value, 10)); // retains + return changetype(itoa32(value, 10)); } else { // @ts-ignore: type - return changetype(itoa64(value, 10)); // retains + return changetype(itoa64(value, 10)); } } else { if (sizeof() <= 4) { // @ts-ignore: type - return changetype(utoa32(value, 10)); // retains + return changetype(utoa32(value, 10)); } else { // @ts-ignore: type - return changetype(utoa64(value, 10)); // retains + return changetype(utoa64(value, 10)); } } } @@ -910,7 +910,7 @@ export function joinIntegerArray(dataStart: usize, length: i32, separator: st var sepLen = separator.length; const valueLen = (sizeof() <= 4 ? 10 : 20) + i32(isSigned()); var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__new(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); var offset = 0; var value: T; for (let i = 0; i < lastIndex; ++i) { @@ -940,13 +940,13 @@ export function joinFloatArray(dataStart: usize, length: i32, separator: stri return changetype(dtoa( // @ts-ignore: type load(dataStart)) - ); // retains + ); } const valueLen = MAX_DOUBLE_LENGTH; var sepLen = separator.length; var estLen = (valueLen + sepLen) * lastIndex + valueLen; - var result = changetype(__new(estLen << 1, idof())); // retains + var result = changetype(__new(estLen << 1, idof())); var offset = 0; var value: T; for (let i = 0; i < lastIndex; ++i) { @@ -985,13 +985,13 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } var offset = 0; var sepLen = separator.length; - var result = __new((estLen + sepLen * lastIndex) << 1, idof()); + var result = changetype(__new((estLen + sepLen * lastIndex) << 1, idof())); for (let i = 0; i < lastIndex; ++i) { value = load(dataStart + (i << alignof())); if (value !== null) { let valueLen = value.length; memory.copy( - result + (offset << 1), + changetype(result) + (offset << 1), changetype(value), valueLen << 1 ); @@ -999,7 +999,7 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string } if (sepLen) { memory.copy( - result + (offset << 1), + changetype(result) + (offset << 1), changetype(separator), sepLen << 1 ); @@ -1009,12 +1009,12 @@ export function joinStringArray(dataStart: usize, length: i32, separator: string value = load(dataStart + (lastIndex << alignof())); if (value !== null) { memory.copy( - result + (offset << 1), + changetype(result) + (offset << 1), changetype(value), value.length << 1 ); } - return changetype(result); // retains + return result; } export function joinReferenceArray(dataStart: usize, length: i32, separator: string): string { diff --git a/std/portable/index.d.ts b/std/portable/index.d.ts index e8a6766429..34b535b79f 100644 --- a/std/portable/index.d.ts +++ b/std/portable/index.d.ts @@ -362,3 +362,7 @@ declare interface Float64ArrayConstructor { /** Equivalent to calling `new Float64Array` with multiple arguments. */ wrap(buffer: ArrayBuffer, byteOffset?: i32, length?: i32): Float64Array; } + +// FIXME: remove +declare function offsetof(fieldName?: string): usize; +declare function idof(): u32; diff --git a/tests/allocators/buddy/assembly/buddy.ts b/tests/allocators/buddy/assembly/buddy.ts deleted file mode 100644 index 2e8963f22c..0000000000 --- a/tests/allocators/buddy/assembly/buddy.ts +++ /dev/null @@ -1,535 +0,0 @@ -/* - Copyright 2018 Evan Wallace - - 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. - -*/// see: https://github.com/evanw/buddy-malloc - -/* - * This file implements a buddy memory allocator, which is an allocator that - * allocates memory within a fixed linear address range. It spans the address - * range with a binary tree that tracks free space. Both "malloc" and "free" - * are O(log N) time where N is the maximum possible number of allocations. - * - * The "buddy" term comes from how the tree is used. When memory is allocated, - * nodes in the tree are split recursively until a node of the appropriate size - * is reached. Every split results in two child nodes, each of which is the - * buddy of the other. When a node is freed, the node and its buddy can be - * merged again if the buddy is also free. This makes the memory available - * for larger allocations again. - */ - -/* - * Every allocation needs an 8-byte header to store the allocation size while - * staying 8-byte aligned. The address returned by "malloc" is the address - * right after this header (i.e. the size occupies the 8 bytes before the - * returned address). - */ -const HEADER_SIZE: usize = 8; - -/* - * The minimum allocation size is 16 bytes because we have an 8-byte header and - * we need to stay 8-byte aligned. - */ -const MIN_ALLOC_LOG2: usize = 4; -const MIN_ALLOC: usize = 1 << MIN_ALLOC_LOG2; - -/* - * The maximum allocation size is currently set to 2gb. This is the total size - * of the heap. It's technically also the maximum allocation size because the - * heap could consist of a single allocation of this size. But of course real - * heaps will have multiple allocations, so the real maximum allocation limit - * is at most 1gb. - */ -const MAX_ALLOC_LOG2: usize = 30; // 31; -const MAX_ALLOC: usize = 1 << MAX_ALLOC_LOG2; - -/* - * Allocations are done in powers of two starting from MIN_ALLOC and ending at - * MAX_ALLOC inclusive. Each allocation size has a bucket that stores the free - * list for that allocation size. - * - * Given a bucket index, the size of the allocations in that bucket can be - * found with "(size_t)1 << (MAX_ALLOC_LOG2 - bucket)". - */ -const BUCKET_COUNT: usize = MAX_ALLOC_LOG2 - MIN_ALLOC_LOG2 + 1; - -/* - * Free lists are stored as circular doubly-linked lists. Every possible - * allocation size has an associated free list that is threaded through all - * currently free blocks of that size. That means MIN_ALLOC must be at least - * "sizeof(list_t)". MIN_ALLOC is currently 16 bytes, so this will be true for - * both 32-bit and 64-bit. - */ -@unmanaged -class List { - prev: List; - next: List; - static readonly SIZE: usize = 2 * sizeof(); -} - -/* - * Each bucket corresponds to a certain allocation size and stores a free list - * for that size. The bucket at index 0 corresponds to an allocation size of - * MAX_ALLOC (i.e. the whole address space). - */ -var BUCKETS_START: usize = __heap_base; -var BUCKETS_END: usize = BUCKETS_START + BUCKET_COUNT * List.SIZE; - -function buckets$get(index: usize): List { - assert(index < BUCKET_COUNT); - return changetype(BUCKETS_START + index * List.SIZE); -} - -/* - * We could initialize the allocator by giving it one free block the size of - * the entire address space. However, this would cause us to instantly reserve - * half of the entire address space on the first allocation, since the first - * split would store a free list entry at the start of the right child of the - * root. Instead, we have the tree start out small and grow the size of the - * tree as we use more memory. The size of the tree is tracked by this value. - */ -var bucket_limit: usize; - -/* - * This array represents a linearized binary tree of bits. Every possible - * allocation larger than MIN_ALLOC has a node in this tree (and therefore a - * bit in this array). - * - * Given the index for a node, lineraized binary trees allow you to traverse to - * the parent node or the child nodes just by doing simple arithmetic on the - * index: - * - * - Move to parent: index = (index - 1) / 2; - * - Move to left child: index = index * 2 + 1; - * - Move to right child: index = index * 2 + 2; - * - Move to sibling: index = ((index - 1) ^ 1) + 1; - * - * Each node in this tree can be in one of several states: - * - * - UNUSED (both children are UNUSED) - * - SPLIT (one child is UNUSED and the other child isn't) - * - USED (neither children are UNUSED) - * - * These states take two bits to store. However, it turns out we have enough - * information to distinguish between UNUSED and USED from context, so we only - * need to store SPLIT or not, which only takes a single bit. - * - * Note that we don't need to store any nodes for allocations of size MIN_ALLOC - * since we only ever care about parent nodes. - */ -const SPLIT_COUNT: usize = (1 << (BUCKET_COUNT - 1)) / 8; -var NODE_IS_SPLIT_START: usize = BUCKETS_END; -var NODE_IS_SPLIT_END: usize = NODE_IS_SPLIT_START + SPLIT_COUNT * sizeof(); - -function node_is_split$get(index: usize): i32 { - assert(index < SPLIT_COUNT); - return load(NODE_IS_SPLIT_START + index); -} - -function node_is_split$set(index: usize, state: i32): void { - assert(index < SPLIT_COUNT); - store(NODE_IS_SPLIT_START + index, state); -} - -/* - * This is the starting address of the address range for this allocator. Every - * returned allocation will be an offset of this pointer from 0 to MAX_ALLOC. - */ -var base_ptr: usize; - -/* - * This is the maximum address that has ever been used by the allocator. It's - * used to know when to call "brk" to request more memory from the kernel. - */ -var max_ptr: usize; - -/* - * Make sure all addresses before "new_value" are valid and can be used. Memory - * is allocated in a 2gb address range but that memory is not reserved up - * front. It's only reserved when it's needed by calling this function. This - * will return false if the memory could not be reserved. - */ -function update_max_ptr(new_value: usize): i32 { - if (new_value > max_ptr) { - // if (brk(new_value)) { - // return 0; - // } - let oldPages = memory.size(); - let newPages = (((new_value + 0xffff) & ~0xffff) >>> 16); - assert(newPages > oldPages); - if (memory.grow(newPages - oldPages) < 0) { - return 0; - } - // max_ptr = new_value; - max_ptr = newPages << 16; - } - return 1; -} - -/* - * Initialize a list to empty. Because these are circular lists, an "empty" - * list is an entry where both links point to itself. This makes insertion - * and removal simpler because they don't need any branches. - */ -function list_init(list: List): void { - list.prev = list; - list.next = list; -} - -/* - * Append the provided entry to the end of the list. This assumes the entry - * isn't in a list already because it overwrites the linked list pointers. - */ -function list_push(list: List, entry: List): void { - var prev = list.prev; - entry.prev = prev; - entry.next = list; - prev.next = entry; - list.prev = entry; -} - -/* - * Remove the provided entry from whichever list it's currently in. This - * assumes that the entry is in a list. You don't need to provide the list - * because the lists are circular, so the list's pointers will automatically - * be updated if the first or last entries are removed. - */ -function list_remove(entry: List): void { - var prev = entry.prev; - var next = entry.next; - prev.next = next; - next.prev = prev; -} - -/* - * Remove and return the first entry in the list or NULL if the list is empty. - */ -function list_pop(list: List): List | null { - var back = list.prev; - if (back == list) return null; - list_remove(back); - return back; -} - -/* - * This maps from the index of a node to the address of memory that node - * represents. The bucket can be derived from the index using a loop but is - * required to be provided here since having them means we can avoid the loop - * and have this function return in constant time. - */ -function ptr_for_node(index: usize, bucket: usize): usize { - return base_ptr + ((index - (1 << bucket) + 1) << (MAX_ALLOC_LOG2 - bucket)); -} - -/* - * This maps from an address of memory to the node that represents that - * address. There are often many nodes that all map to the same address, so - * the bucket is needed to uniquely identify a node. - */ -function node_for_ptr(ptr: usize, bucket: usize): usize { - return ((ptr - base_ptr) >> (MAX_ALLOC_LOG2 - bucket)) + (1 << bucket) - 1; -} - -/* - * Given the index of a node, this returns the "is split" flag of the parent. - */ -function parent_is_split(index: usize): bool { - index = (index - 1) / 2; - return ((node_is_split$get(index / 8) >>> (index % 8)) & 1) == 1; -} - -/* - * Given the index of a node, this flips the "is split" flag of the parent. - */ -function flip_parent_is_split(index: usize): void { - index = (index - 1) / 2; - var indexDiv8 = index / 8; - node_is_split$set(indexDiv8, - node_is_split$get(indexDiv8) ^ (1 << (index % 8)) - ); -} - -/* - * Given the requested size passed to "malloc", this function returns the index - * of the smallest bucket that can fit that size. - */ -function bucket_for_request(request: usize): usize { - var bucket = BUCKET_COUNT - 1; - var size = MIN_ALLOC; - - while (size < request) { - bucket--; - size *= 2; - } - - return bucket; -} - -/* - * The tree is always rooted at the current bucket limit. This call grows the - * tree by repeatedly doubling it in size until the root lies at the provided - * bucket index. Each doubling lowers the bucket limit by 1. - */ -function lower_bucket_limit(bucket: usize): u32 { - while (bucket < bucket_limit) { - let root = node_for_ptr(base_ptr, bucket_limit); - let right_child: usize; - - /* - * If the parent isn't SPLIT, that means the node at the current bucket - * limit is UNUSED and our address space is entirely free. In that case, - * clear the root free list, increase the bucket limit, and add a single - * block with the newly-expanded address space to the new root free list. - */ - if (!parent_is_split(root)) { - list_remove(changetype(base_ptr)); - list_init(buckets$get(--bucket_limit)); - list_push(buckets$get(bucket_limit), changetype(base_ptr)); - continue; - } - - /* - * Otherwise, the tree is currently in use. Create a parent node for the - * current root node in the SPLIT state with a right child on the free - * list. Make sure to reserve the memory for the free list entry before - * writing to it. Note that we do not need to flip the "is split" flag for - * our current parent because it's already on (we know because we just - * checked it above). - */ - right_child = ptr_for_node(root + 1, bucket_limit); - if (!update_max_ptr(right_child + List.SIZE)) { - return 0; - } - list_push(buckets$get(bucket_limit), changetype(right_child)); - list_init(buckets$get(--bucket_limit)); - - /* - * Set the grandparent's SPLIT flag so if we need to lower the bucket limit - * again, we'll know that the new root node we just added is in use. - */ - root = (root - 1) / 2; - if (root != 0) { - flip_parent_is_split(root); - } - } - - return 1; -} - -// Memory allocator interface - -@global export function __mem_allocate(request: usize): usize { - var original_bucket: usize, bucket: usize; - - /* - * Make sure it's possible for an allocation of this size to succeed. There's - * a hard-coded limit on the maximum allocation size because of the way this - * allocator works. - */ - if (request > MAX_ALLOC - HEADER_SIZE) unreachable(); - - /* - * Initialize our global state if this is the first call to "malloc". At the - * beginning, the tree has a single node that represents the smallest - * possible allocation size. More memory will be reserved later as needed. - */ - if (base_ptr == 0) { - // base_ptr = max_ptr = (uint8_t *)sbrk(0); - base_ptr = (NODE_IS_SPLIT_END + 7) & ~7; // must be aligned - max_ptr = memory.size() << 16; // must grow first - bucket_limit = BUCKET_COUNT - 1; - if (!update_max_ptr(base_ptr + List.SIZE)) { - return 0; - } - list_init(buckets$get(BUCKET_COUNT - 1)); - list_push(buckets$get(BUCKET_COUNT - 1), changetype(base_ptr)); - } - - /* - * Find the smallest bucket that will fit this request. This doesn't check - * that there's space for the request yet. - */ - bucket = bucket_for_request(request + HEADER_SIZE); - original_bucket = bucket; - - /* - * Search for a bucket with a non-empty free list that's as large or larger - * than what we need. If there isn't an exact match, we'll need to split a - * larger one to get a match. - */ - while (bucket + 1 != 0) { - let size: usize, bytes_needed: usize, i: usize; - let ptr: usize; - - /* - * We may need to grow the tree to be able to fit an allocation of this - * size. Try to grow the tree and stop here if we can't. - */ - if (!lower_bucket_limit(bucket)) { - return 0; - } - - /* - * Try to pop a block off the free list for this bucket. If the free list - * is empty, we're going to have to split a larger block instead. - */ - ptr = changetype(list_pop(buckets$get(bucket))); - if (!ptr) { - /* - * If we're not at the root of the tree or it's impossible to grow the - * tree any more, continue on to the next bucket. - */ - if (bucket != bucket_limit || bucket == 0) { - bucket--; - continue; - } - - /* - * Otherwise, grow the tree one more level and then pop a block off the - * free list again. Since we know the root of the tree is used (because - * the free list was empty), this will add a parent above this node in - * the SPLIT state and then add the new right child node to the free list - * for this bucket. Popping the free list will give us this right child. - */ - if (!lower_bucket_limit(bucket - 1)) { - return 0; - } - ptr = changetype(list_pop(buckets$get(bucket))); - } - - /* - * Try to expand the address space first before going any further. If we - * have run out of space, put this block back on the free list and fail. - */ - size = 1 << (MAX_ALLOC_LOG2 - bucket); - bytes_needed = bucket < original_bucket ? size / 2 + List.SIZE : size; - if (!update_max_ptr(ptr + bytes_needed)) { - list_push(buckets$get(bucket), changetype(ptr)); - return 0; - } - - /* - * If we got a node off the free list, change the node from UNUSED to USED. - * This involves flipping our parent's "is split" bit because that bit is - * the exclusive-or of the UNUSED flags of both children, and our UNUSED - * flag (which isn't ever stored explicitly) has just changed. - * - * Note that we shouldn't ever need to flip the "is split" bit of our - * grandparent because we know our buddy is USED so it's impossible for our - * grandparent to be UNUSED (if our buddy chunk was UNUSED, our parent - * wouldn't ever have been split in the first place). - */ - i = node_for_ptr(ptr, bucket); - if (i != 0) { - flip_parent_is_split(i); - } - - /* - * If the node we got is larger than we need, split it down to the correct - * size and put the new unused child nodes on the free list in the - * corresponding bucket. This is done by repeatedly moving to the left - * child, splitting the parent, and then adding the right child to the free - * list. - */ - while (bucket < original_bucket) { - i = i * 2 + 1; - bucket++; - flip_parent_is_split(i); - list_push( - buckets$get(bucket), - changetype(ptr_for_node(i + 1, bucket)) - ); - } - - /* - * Now that we have a memory address, write the block header (just the size - * of the allocation) and return the address immediately after the header. - */ - store(ptr, request); - return ptr + HEADER_SIZE; - } - - return 0; -} - -@global export function __mem_free(ptr: usize): void { - var bucket: usize, i: usize; - - /* - * Ignore any attempts to free a NULL pointer. - */ - if (!ptr) { - return; - } - - /* - * We were given the address returned by "malloc" so get back to the actual - * address of the node by subtracting off the size of the block header. Then - * look up the index of the node corresponding to this address. - */ - ptr = ptr - HEADER_SIZE; - bucket = bucket_for_request(load(ptr) + HEADER_SIZE); - i = node_for_ptr(ptr, bucket); - - /* - * Traverse up to the root node, flipping USED blocks to UNUSED and merging - * UNUSED buddies together into a single UNUSED parent. - */ - while (i != 0) { - /* - * Change this node from UNUSED to USED. This involves flipping our - * parent's "is split" bit because that bit is the exclusive-or of the - * UNUSED flags of both children, and our UNUSED flag (which isn't ever - * stored explicitly) has just changed. - */ - flip_parent_is_split(i); - - /* - * If the parent is now SPLIT, that means our buddy is USED, so don't merge - * with it. Instead, stop the iteration here and add ourselves to the free - * list for our bucket. - * - * Also stop here if we're at the current root node, even if that root node - * is now UNUSED. Root nodes don't have a buddy so we can't merge with one. - */ - if (parent_is_split(i) || bucket == bucket_limit) { - break; - } - - /* - * If we get here, we know our buddy is UNUSED. In this case we should - * merge with that buddy and continue traversing up to the root node. We - * need to remove the buddy from its free list here but we don't need to - * add the merged parent to its free list yet. That will be done once after - * this loop is finished. - */ - list_remove(changetype(ptr_for_node(((i - 1) ^ 1) + 1, bucket))); - i = (i - 1) / 2; - bucket--; - } - - /* - * Add ourselves to the free list for our bucket. We add to the back of the - * list because "malloc" takes from the back of the list and we want a "free" - * followed by a "malloc" of the same size to ideally use the same address - * for better memory locality. - */ - list_push(buckets$get(bucket), changetype(ptr_for_node(i, bucket))); -} diff --git a/tests/allocators/buddy/assembly/index.ts b/tests/allocators/buddy/assembly/index.ts deleted file mode 100644 index 0f9f2e0055..0000000000 --- a/tests/allocators/buddy/assembly/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import "./buddy"; -export { memory }; -export { __mem_allocate as __alloc, __mem_free as __free }; diff --git a/tests/allocators/buddy/optimized.wat b/tests/allocators/buddy/optimized.wat deleted file mode 100644 index f5b0f9dcc1..0000000000 --- a/tests/allocators/buddy/optimized.wat +++ /dev/null @@ -1,860 +0,0 @@ -(module - (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 (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 (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) "\1e\00\00\00\01\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") - (data (i32.const 1100) "\1c\00\00\00\01\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") - (global $assembly/buddy/BUCKETS_START (mut i32) (i32.const 0)) - (global $assembly/buddy/bucket_limit (mut i32) (i32.const 0)) - (global $assembly/buddy/NODE_IS_SPLIT_START (mut i32) (i32.const 0)) - (global $assembly/buddy/NODE_IS_SPLIT_END (mut i32) (i32.const 0)) - (global $assembly/buddy/base_ptr (mut i32) (i32.const 0)) - (global $assembly/buddy/max_ptr (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "memory.init" (func $~lib/memory/memory.init)) - (export "memory.drop" (func $~lib/memory/memory.drop)) - (export "memory.repeat" (func $~lib/memory/memory.repeat)) - (export "memory.compare" (func $~lib/memory/memory.compare)) - (export "__alloc" (func $assembly/buddy/__mem_allocate)) - (export "__free" (func $assembly/buddy/__mem_free)) - (start $~start) - (func $~lib/memory/memory.init (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 1056 - i32.const 1120 - i32.const 35 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/memory/memory.drop (param $0 i32) - i32.const 1056 - i32.const 1120 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (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/memory.repeat (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - local.get $2 - local.get $3 - i32.mul - local.set $3 - loop $while-continue|0 - local.get $4 - local.get $3 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - local.set $4 - br $while-continue|0 - end - end - ) - (func $~lib/memory/memory.compare (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/memory/memcmp|inlined.0 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memcmp|inlined.0 - 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 $0 - i32.const 7 - i32.and - if - i32.const 0 - local.set $3 - local.get $2 - i32.eqz - br_if $~lib/util/memory/memcmp|inlined.0 - local.get $0 - i32.load8_u - local.tee $4 - local.get $1 - i32.load8_u - local.tee $5 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $~lib/util/memory/memcmp|inlined.0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $2 - i32.const 8 - i32.ge_u - if - local.get $0 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 8 - i32.sub - local.set $2 - br $while-continue|1 - end - end - end - end - loop $while-continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - if - local.get $0 - i32.load8_u - local.tee $4 - local.get $1 - i32.load8_u - local.tee $5 - i32.sub - local.set $3 - local.get $4 - local.get $5 - i32.ne - br_if $~lib/util/memory/memcmp|inlined.0 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $while-continue|2 - end - end - i32.const 0 - local.set $3 - end - local.get $3 - ) - (func $assembly/buddy/update_max_ptr (param $0 i32) (result i32) - local.get $0 - global.get $assembly/buddy/max_ptr - i32.gt_u - if - local.get $0 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - memory.size - i32.sub - memory.grow - i32.const 0 - i32.lt_s - if - i32.const 0 - return - end - local.get $0 - i32.const 16 - i32.shl - global.set $assembly/buddy/max_ptr - end - i32.const 1 - ) - (func $assembly/buddy/buckets$get (param $0 i32) (result i32) - global.get $assembly/buddy/BUCKETS_START - local.get $0 - i32.const 3 - i32.shl - i32.add - ) - (func $assembly/buddy/list_init (param $0 i32) - local.get $0 - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.store offset=4 - ) - (func $assembly/buddy/list_push (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - ) - (func $assembly/buddy/bucket_for_request (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 26 - local.set $1 - i32.const 16 - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $0 - i32.lt_u - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - i32.const 1 - i32.shl - local.set $2 - br $while-continue|0 - end - end - local.get $1 - ) - (func $assembly/buddy/node_for_ptr (param $0 i32) (param $1 i32) (result i32) - i32.const 1 - local.get $1 - i32.shl - local.get $0 - global.get $assembly/buddy/base_ptr - i32.sub - i32.const 30 - local.get $1 - i32.sub - i32.shr_u - i32.add - i32.const 1 - i32.sub - ) - (func $assembly/buddy/parent_is_split (param $0 i32) (result i32) - global.get $assembly/buddy/NODE_IS_SPLIT_START - local.get $0 - i32.const 1 - i32.sub - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $0 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - ) - (func $assembly/buddy/list_remove (param $0 i32) - (local $1 i32) - local.get $0 - i32.load - local.tee $1 - local.get $0 - i32.load offset=4 - local.tee $0 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - ) - (func $assembly/buddy/ptr_for_node (param $0 i32) (param $1 i32) (result i32) - global.get $assembly/buddy/base_ptr - local.get $0 - i32.const 1 - local.get $1 - i32.shl - i32.sub - i32.const 1 - i32.add - i32.const 30 - local.get $1 - i32.sub - i32.shl - i32.add - ) - (func $assembly/buddy/flip_parent_is_split (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 1 - i32.sub - i32.const 1 - i32.shr_u - local.tee $0 - i32.const 3 - i32.shr_u - local.tee $1 - global.get $assembly/buddy/NODE_IS_SPLIT_START - i32.add - i32.load8_u - i32.const 1 - local.get $0 - i32.const 7 - i32.and - i32.shl - i32.xor - local.set $0 - local.get $1 - global.get $assembly/buddy/NODE_IS_SPLIT_START - i32.add - local.get $0 - i32.store8 - ) - (func $assembly/buddy/lower_bucket_limit (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - loop $while-continue|0 - local.get $0 - global.get $assembly/buddy/bucket_limit - i32.lt_u - if - global.get $assembly/buddy/base_ptr - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/node_for_ptr - local.tee $1 - call $assembly/buddy/parent_is_split - i32.eqz - if - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_remove - global.get $assembly/buddy/bucket_limit - i32.const 1 - i32.sub - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_push - br $while-continue|0 - end - local.get $1 - i32.const 1 - i32.add - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/ptr_for_node - local.tee $2 - i32.const 8 - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - i32.const 0 - return - end - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - local.get $2 - call $assembly/buddy/list_push - global.get $assembly/buddy/bucket_limit - i32.const 1 - i32.sub - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - local.get $1 - i32.const 1 - i32.sub - i32.const 1 - i32.shr_u - local.tee $1 - if - local.get $1 - call $assembly/buddy/flip_parent_is_split - end - br $while-continue|0 - end - end - i32.const 1 - ) - (func $assembly/buddy/list_pop (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.load - local.tee $0 - i32.eq - if - i32.const 0 - return - end - local.get $0 - call $assembly/buddy/list_remove - local.get $0 - ) - (func $assembly/buddy/__mem_allocate (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1073741816 - i32.gt_u - if - unreachable - end - global.get $assembly/buddy/base_ptr - i32.eqz - if - global.get $assembly/buddy/NODE_IS_SPLIT_END - i32.const 7 - i32.add - i32.const -8 - i32.and - global.set $assembly/buddy/base_ptr - memory.size - i32.const 16 - i32.shl - global.set $assembly/buddy/max_ptr - i32.const 26 - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/base_ptr - i32.const 8 - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - i32.const 0 - return - end - i32.const 26 - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - i32.const 26 - call $assembly/buddy/buckets$get - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_push - end - local.get $0 - i32.const 8 - i32.add - call $assembly/buddy/bucket_for_request - local.tee $2 - local.set $4 - loop $while-continue|0 - local.get $2 - i32.const -1 - i32.ne - if - local.get $2 - call $assembly/buddy/lower_bucket_limit - i32.eqz - if - i32.const 0 - return - end - local.get $2 - call $assembly/buddy/buckets$get - call $assembly/buddy/list_pop - local.tee $1 - i32.eqz - if - i32.const 1 - local.get $2 - i32.eqz - local.get $2 - global.get $assembly/buddy/bucket_limit - i32.ne - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - local.get $2 - i32.const 1 - i32.sub - call $assembly/buddy/lower_bucket_limit - i32.eqz - if - i32.const 0 - return - end - local.get $2 - call $assembly/buddy/buckets$get - call $assembly/buddy/list_pop - local.set $1 - end - local.get $1 - i32.const 1 - i32.const 30 - local.get $2 - i32.sub - i32.shl - local.tee $3 - i32.const 1 - i32.shr_u - i32.const 8 - i32.add - local.get $3 - local.get $2 - local.get $4 - i32.lt_u - select - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - local.get $2 - call $assembly/buddy/buckets$get - local.get $1 - call $assembly/buddy/list_push - i32.const 0 - return - end - local.get $1 - local.get $2 - call $assembly/buddy/node_for_ptr - local.tee $3 - if - local.get $3 - call $assembly/buddy/flip_parent_is_split - end - loop $while-continue|1 - local.get $2 - local.get $4 - i32.lt_u - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - i32.add - local.tee $3 - call $assembly/buddy/flip_parent_is_split - local.get $2 - i32.const 1 - i32.add - local.tee $2 - call $assembly/buddy/buckets$get - local.get $3 - i32.const 1 - i32.add - local.get $2 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_push - br $while-continue|1 - end - end - local.get $1 - local.get $0 - i32.store - local.get $1 - i32.const 8 - i32.add - return - end - end - i32.const 0 - ) - (func $assembly/buddy/__mem_free (param $0 i32) - (local $1 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - i32.const 8 - i32.sub - local.tee $1 - i32.load - i32.const 8 - i32.add - call $assembly/buddy/bucket_for_request - local.set $0 - local.get $1 - local.get $0 - call $assembly/buddy/node_for_ptr - local.set $1 - loop $while-continue|0 - local.get $1 - if - block $while-break|0 - local.get $1 - call $assembly/buddy/flip_parent_is_split - local.get $1 - call $assembly/buddy/parent_is_split - if (result i32) - i32.const 1 - else - local.get $0 - global.get $assembly/buddy/bucket_limit - i32.eq - end - br_if $while-break|0 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.xor - i32.const 1 - i32.add - local.get $0 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_remove - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - end - local.get $0 - call $assembly/buddy/buckets$get - local.get $1 - local.get $0 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_push - ) - (func $~start - i32.const 1148 - global.set $assembly/buddy/BUCKETS_START - i32.const 1364 - global.set $assembly/buddy/NODE_IS_SPLIT_START - i32.const 8389972 - global.set $assembly/buddy/NODE_IS_SPLIT_END - ) -) diff --git a/tests/allocators/buddy/untouched.wat b/tests/allocators/buddy/untouched.wat deleted file mode 100644 index 4e8f3df2f7..0000000000 --- a/tests/allocators/buddy/untouched.wat +++ /dev/null @@ -1,2137 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (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))) - (type $i32_i32_=>_i32 (func (param i32 i32) (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))) - (memory $0 1) - (data (i32.const 12) "\1e\00\00\00\01\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") - (data (i32.const 76) "\1c\00\00\00\01\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") - (data (i32.const 124) "\"\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00m\00b\00l\00y\00/\00b\00u\00d\00d\00y\00.\00t\00s\00") - (table $0 1 funcref) - (global $assembly/buddy/HEADER_SIZE i32 (i32.const 8)) - (global $assembly/buddy/MIN_ALLOC_LOG2 i32 (i32.const 4)) - (global $assembly/buddy/MIN_ALLOC i32 (i32.const 16)) - (global $assembly/buddy/MAX_ALLOC_LOG2 i32 (i32.const 30)) - (global $assembly/buddy/MAX_ALLOC i32 (i32.const 1073741824)) - (global $assembly/buddy/BUCKET_COUNT i32 (i32.const 27)) - (global $assembly/buddy/List.SIZE i32 (i32.const 8)) - (global $assembly/buddy/BUCKETS_START (mut i32) (i32.const 0)) - (global $assembly/buddy/BUCKETS_END (mut i32) (i32.const 0)) - (global $assembly/buddy/bucket_limit (mut i32) (i32.const 0)) - (global $assembly/buddy/SPLIT_COUNT i32 (i32.const 8388608)) - (global $assembly/buddy/NODE_IS_SPLIT_START (mut i32) (i32.const 0)) - (global $assembly/buddy/NODE_IS_SPLIT_END (mut i32) (i32.const 0)) - (global $assembly/buddy/base_ptr (mut i32) (i32.const 0)) - (global $assembly/buddy/max_ptr (mut i32) (i32.const 0)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/heap/__heap_base i32 (i32.const 180)) - (export "memory" (memory $0)) - (export "memory.init" (func $~lib/memory/memory.init)) - (export "memory.drop" (func $~lib/memory/memory.drop)) - (export "memory.repeat" (func $~lib/memory/memory.repeat)) - (export "memory.compare" (func $~lib/memory/memory.compare)) - (export "__alloc" (func $assembly/buddy/__mem_allocate)) - (export "__free" (func $assembly/buddy/__mem_free)) - (start $~start) - (func $start:assembly/buddy - global.get $~lib/heap/__heap_base - global.set $assembly/buddy/BUCKETS_START - global.get $assembly/buddy/BUCKETS_START - global.get $assembly/buddy/BUCKET_COUNT - global.get $assembly/buddy/List.SIZE - i32.mul - i32.add - global.set $assembly/buddy/BUCKETS_END - global.get $assembly/buddy/BUCKETS_END - global.set $assembly/buddy/NODE_IS_SPLIT_START - global.get $assembly/buddy/NODE_IS_SPLIT_START - global.get $assembly/buddy/SPLIT_COUNT - i32.const 1 - i32.mul - i32.add - global.set $assembly/buddy/NODE_IS_SPLIT_END - ) - (func $start:assembly/index - call $start:assembly/buddy - ) - (func $~lib/memory/memory.init (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 32 - i32.const 96 - i32.const 35 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/memory/memory.drop (param $0 i32) - i32.const 32 - i32.const 96 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - 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/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/memory/memory.compare (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) - block $~lib/util/memory/memcmp|inlined.0 (result i32) - 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 - i32.const 0 - br $~lib/util/memory/memcmp|inlined.0 - end - i32.const 0 - i32.const 2 - i32.lt_s - drop - local.get $5 - i32.const 7 - i32.and - local.get $4 - 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 - i32.const 0 - br $~lib/util/memory/memcmp|inlined.0 - end - local.get $5 - i32.load8_u - local.set $7 - local.get $4 - i32.load8_u - local.set $8 - local.get $7 - local.get $8 - i32.ne - if - local.get $7 - local.get $8 - i32.sub - br $~lib/util/memory/memcmp|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - block $while-break|1 - loop $while-continue|1 - local.get $3 - i32.const 8 - i32.ge_u - local.set $6 - local.get $6 - if - local.get $5 - i64.load - local.get $4 - i64.load - i64.ne - if - br $while-break|1 - end - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - local.get $3 - i32.const 8 - i32.sub - local.set $3 - br $while-continue|1 - end - end - end - end - loop $while-continue|2 - local.get $3 - local.tee $6 - i32.const 1 - i32.sub - local.set $3 - local.get $6 - local.set $6 - local.get $6 - if - local.get $5 - i32.load8_u - local.set $9 - local.get $4 - i32.load8_u - local.set $10 - local.get $9 - local.get $10 - i32.ne - if - local.get $9 - local.get $10 - i32.sub - br $~lib/util/memory/memcmp|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - i32.const 0 - end - ) - (func $assembly/buddy/update_max_ptr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - global.get $assembly/buddy/max_ptr - i32.gt_u - if - memory.size - local.set $1 - local.get $0 - 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 - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 176 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - if - i32.const 0 - return - end - local.get $2 - i32.const 16 - i32.shl - global.set $assembly/buddy/max_ptr - end - i32.const 1 - ) - (func $assembly/buddy/buckets$get (param $0 i32) (result i32) - local.get $0 - global.get $assembly/buddy/BUCKET_COUNT - i32.lt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 96 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $assembly/buddy/BUCKETS_START - local.get $0 - global.get $assembly/buddy/List.SIZE - i32.mul - i32.add - ) - (func $assembly/buddy/list_init (param $0 i32) - local.get $0 - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.store offset=4 - ) - (func $assembly/buddy/list_push (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.set $2 - local.get $1 - local.get $2 - i32.store - local.get $1 - local.get $0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - ) - (func $assembly/buddy/bucket_for_request (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $assembly/buddy/BUCKET_COUNT - i32.const 1 - i32.sub - local.set $1 - global.get $assembly/buddy/MIN_ALLOC - local.set $2 - loop $while-continue|0 - local.get $2 - local.get $0 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $2 - i32.const 2 - i32.mul - local.set $2 - br $while-continue|0 - end - end - local.get $1 - ) - (func $assembly/buddy/node_for_ptr (param $0 i32) (param $1 i32) (result i32) - local.get $0 - global.get $assembly/buddy/base_ptr - i32.sub - global.get $assembly/buddy/MAX_ALLOC_LOG2 - local.get $1 - i32.sub - i32.shr_u - i32.const 1 - local.get $1 - i32.shl - i32.add - i32.const 1 - i32.sub - ) - (func $assembly/buddy/node_is_split$get (param $0 i32) (result i32) - local.get $0 - global.get $assembly/buddy/SPLIT_COUNT - i32.lt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 142 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $assembly/buddy/NODE_IS_SPLIT_START - local.get $0 - i32.add - i32.load8_u - ) - (func $assembly/buddy/parent_is_split (param $0 i32) (result i32) - local.get $0 - i32.const 1 - i32.sub - i32.const 2 - i32.div_u - local.set $0 - local.get $0 - i32.const 8 - i32.div_u - call $assembly/buddy/node_is_split$get - local.get $0 - i32.const 8 - i32.rem_u - i32.shr_u - i32.const 1 - i32.and - i32.const 1 - i32.eq - ) - (func $assembly/buddy/list_remove (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $1 - local.get $2 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - ) - (func $assembly/buddy/ptr_for_node (param $0 i32) (param $1 i32) (result i32) - global.get $assembly/buddy/base_ptr - local.get $0 - i32.const 1 - local.get $1 - i32.shl - i32.sub - i32.const 1 - i32.add - global.get $assembly/buddy/MAX_ALLOC_LOG2 - local.get $1 - i32.sub - i32.shl - i32.add - ) - (func $assembly/buddy/node_is_split$set (param $0 i32) (param $1 i32) - local.get $0 - global.get $assembly/buddy/SPLIT_COUNT - i32.lt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 147 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $assembly/buddy/NODE_IS_SPLIT_START - local.get $0 - i32.add - local.get $1 - i32.store8 - ) - (func $assembly/buddy/flip_parent_is_split (param $0 i32) - (local $1 i32) - local.get $0 - i32.const 1 - i32.sub - i32.const 2 - i32.div_u - local.set $0 - local.get $0 - i32.const 8 - i32.div_u - local.set $1 - local.get $1 - local.get $1 - call $assembly/buddy/node_is_split$get - i32.const 1 - local.get $0 - i32.const 8 - i32.rem_u - i32.shl - i32.xor - call $assembly/buddy/node_is_split$set - ) - (func $assembly/buddy/lower_bucket_limit (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - loop $while-continue|0 - local.get $0 - global.get $assembly/buddy/bucket_limit - i32.lt_u - local.set $1 - local.get $1 - if - global.get $assembly/buddy/base_ptr - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/node_for_ptr - local.set $2 - local.get $2 - call $assembly/buddy/parent_is_split - i32.eqz - if - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_remove - global.get $assembly/buddy/bucket_limit - i32.const 1 - i32.sub - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_push - br $while-continue|0 - end - local.get $2 - i32.const 1 - i32.add - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/ptr_for_node - local.set $3 - local.get $3 - global.get $assembly/buddy/List.SIZE - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - i32.const 0 - return - end - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - local.get $3 - call $assembly/buddy/list_push - global.get $assembly/buddy/bucket_limit - i32.const 1 - i32.sub - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/bucket_limit - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.div_u - local.set $2 - local.get $2 - i32.const 0 - i32.ne - if - local.get $2 - call $assembly/buddy/flip_parent_is_split - end - br $while-continue|0 - end - end - i32.const 1 - ) - (func $assembly/buddy/list_pop (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.load - local.set $1 - local.get $1 - local.get $0 - i32.eq - if - i32.const 0 - return - end - local.get $1 - call $assembly/buddy/list_remove - local.get $1 - ) - (func $assembly/buddy/__mem_allocate (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - global.get $assembly/buddy/MAX_ALLOC - global.get $assembly/buddy/HEADER_SIZE - i32.sub - i32.gt_u - if - unreachable - end - global.get $assembly/buddy/base_ptr - i32.const 0 - i32.eq - if - global.get $assembly/buddy/NODE_IS_SPLIT_END - i32.const 7 - i32.add - i32.const 7 - i32.const -1 - i32.xor - i32.and - global.set $assembly/buddy/base_ptr - memory.size - i32.const 16 - i32.shl - global.set $assembly/buddy/max_ptr - global.get $assembly/buddy/BUCKET_COUNT - i32.const 1 - i32.sub - global.set $assembly/buddy/bucket_limit - global.get $assembly/buddy/base_ptr - global.get $assembly/buddy/List.SIZE - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - i32.const 0 - return - end - global.get $assembly/buddy/BUCKET_COUNT - i32.const 1 - i32.sub - call $assembly/buddy/buckets$get - call $assembly/buddy/list_init - global.get $assembly/buddy/BUCKET_COUNT - i32.const 1 - i32.sub - call $assembly/buddy/buckets$get - global.get $assembly/buddy/base_ptr - call $assembly/buddy/list_push - end - local.get $0 - global.get $assembly/buddy/HEADER_SIZE - i32.add - call $assembly/buddy/bucket_for_request - local.set $2 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $2 - i32.const 1 - i32.add - i32.const 0 - i32.ne - local.set $3 - local.get $3 - if - local.get $2 - call $assembly/buddy/lower_bucket_limit - i32.eqz - if - i32.const 0 - return - end - local.get $2 - call $assembly/buddy/buckets$get - call $assembly/buddy/list_pop - local.set $7 - local.get $7 - i32.eqz - if - local.get $2 - global.get $assembly/buddy/bucket_limit - i32.ne - if (result i32) - i32.const 1 - else - local.get $2 - i32.const 0 - i32.eq - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - local.get $2 - i32.const 1 - i32.sub - call $assembly/buddy/lower_bucket_limit - i32.eqz - if - i32.const 0 - return - end - local.get $2 - call $assembly/buddy/buckets$get - call $assembly/buddy/list_pop - local.set $7 - end - i32.const 1 - global.get $assembly/buddy/MAX_ALLOC_LOG2 - local.get $2 - i32.sub - i32.shl - local.set $4 - local.get $2 - local.get $1 - i32.lt_u - if (result i32) - local.get $4 - i32.const 2 - i32.div_u - global.get $assembly/buddy/List.SIZE - i32.add - else - local.get $4 - end - local.set $5 - local.get $7 - local.get $5 - i32.add - call $assembly/buddy/update_max_ptr - i32.eqz - if - local.get $2 - call $assembly/buddy/buckets$get - local.get $7 - call $assembly/buddy/list_push - i32.const 0 - return - end - local.get $7 - local.get $2 - call $assembly/buddy/node_for_ptr - local.set $6 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - call $assembly/buddy/flip_parent_is_split - end - loop $while-continue|1 - local.get $2 - local.get $1 - i32.lt_u - local.set $8 - local.get $8 - if - local.get $6 - i32.const 2 - i32.mul - i32.const 1 - i32.add - local.set $6 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $6 - call $assembly/buddy/flip_parent_is_split - local.get $2 - call $assembly/buddy/buckets$get - local.get $6 - i32.const 1 - i32.add - local.get $2 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_push - br $while-continue|1 - end - end - local.get $7 - local.get $0 - i32.store - local.get $7 - global.get $assembly/buddy/HEADER_SIZE - i32.add - return - end - end - i32.const 0 - ) - (func $assembly/buddy/__mem_free (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.eqz - if - return - end - local.get $0 - global.get $assembly/buddy/HEADER_SIZE - i32.sub - local.set $0 - local.get $0 - i32.load - global.get $assembly/buddy/HEADER_SIZE - i32.add - call $assembly/buddy/bucket_for_request - local.set $1 - local.get $0 - local.get $1 - call $assembly/buddy/node_for_ptr - local.set $2 - block $while-break|0 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ne - local.set $3 - local.get $3 - if - local.get $2 - call $assembly/buddy/flip_parent_is_split - local.get $2 - call $assembly/buddy/parent_is_split - if (result i32) - i32.const 1 - else - local.get $1 - global.get $assembly/buddy/bucket_limit - i32.eq - end - if - br $while-break|0 - end - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.xor - i32.const 1 - i32.add - local.get $1 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_remove - local.get $2 - i32.const 1 - i32.sub - i32.const 2 - i32.div_u - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - end - local.get $1 - call $assembly/buddy/buckets$get - local.get $2 - local.get $1 - call $assembly/buddy/ptr_for_node - call $assembly/buddy/list_push - ) - (func $~start - call $start:assembly/index - ) -) diff --git a/tests/allocators/rt-full/assembly/index.ts b/tests/allocators/default/assembly/index.ts similarity index 100% rename from tests/allocators/rt-full/assembly/index.ts rename to tests/allocators/default/assembly/index.ts diff --git a/tests/allocators/buddy/assembly/tsconfig.json b/tests/allocators/default/assembly/tsconfig.json similarity index 100% rename from tests/allocators/buddy/assembly/tsconfig.json rename to tests/allocators/default/assembly/tsconfig.json diff --git a/tests/allocators/rt-full/optimized.wat b/tests/allocators/default/optimized.wat similarity index 79% rename from tests/allocators/rt-full/optimized.wat rename to tests/allocators/default/optimized.wat index e2f5b1b715..521cabbb5e 100644 --- a/tests/allocators/rt-full/optimized.wat +++ b/tests/allocators/default/optimized.wat @@ -1,31 +1,28 @@ (module - (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_=>_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_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(\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) "\1e\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) "\1e\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) "\1e\00\00\00\01\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") - (data (i32.const 1280) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (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") + (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)) - (global $~lib/rt/__rtti_base i32 (i32.const 1280)) + (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)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/heap/heap.reset)) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -406,10 +403,10 @@ (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - i32.const 1 memory.size local.tee $0 - i32.gt_s + i32.const 1 + i32.lt_s if (result i32) i32.const 1 local.get $0 @@ -423,10 +420,10 @@ if unreachable end - i32.const 1312 + i32.const 1280 i32.const 0 i32.store - i32.const 2880 + i32.const 2848 i32.const 0 i32.store loop $for-loop|0 @@ -437,7 +434,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1312 + i32.const 1280 i32.add i32.const 0 i32.store offset=4 @@ -455,7 +452,7 @@ i32.add i32.const 2 i32.shl - i32.const 1312 + i32.const 1280 i32.add i32.const 0 i32.store offset=96 @@ -473,13 +470,13 @@ br $for-loop|0 end end - i32.const 1312 - i32.const 2884 + i32.const 1280 + i32.const 2852 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1312 + i32.const 1280 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) @@ -488,7 +485,7 @@ i32.ge_u if i32.const 1056 - i32.const 1184 + i32.const 1120 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -759,7 +756,7 @@ call $~lib/rt/tlsf/prepareBlock local.get $1 ) - (func $~lib/rt/tlsf/__alloc (param $0 i32) (result i32) + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -771,43 +768,6 @@ 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 1056 - i32.const 1120 - 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/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1028,7 +988,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - i32.const 1308 + i32.const 1276 i32.ge_u if local.get $0 @@ -1037,7 +997,7 @@ end local.get $2 ) - (func $~lib/rt/tlsf/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1050,7 +1010,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - i32.const 1308 + i32.const 1276 i32.lt_u if global.get $~lib/rt/tlsf/ROOT @@ -1092,6 +1052,7 @@ i32.const 1 i32.and if + local.get $4 local.get $3 i32.const 4 i32.add @@ -1100,8 +1061,7 @@ i32.and i32.add local.tee $3 - local.get $4 - i32.ge_u + i32.le_u if local.get $2 local.get $6 @@ -1133,78 +1093,9 @@ i32.const 4 i32.add ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1056 - i32.const 1120 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 16 - i32.sub - local.get $1 - i32.const 16 - i32.add - call $~lib/rt/tlsf/__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/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1308 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - drop - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1308 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/heap/heap.alloc (param $0 i32) (result i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 - call $~lib/rt/tlsf/__alloc - ) - (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/tlsf/__realloc - ) - (func $~lib/heap/heap.free (param $0 i32) - local.get $0 - i32.const 1308 + i32.const 1276 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1218,70 +1109,12 @@ call $~lib/rt/tlsf/freeBlock end ) - (func $~lib/heap/heap.reset - i32.const 1248 + (func $~lib/memory/heap.reset i32.const 1184 - i32.const 598 - i32.const 3 + i32.const 1248 + i32.const 101 + i32.const 7 call $~lib/builtins/abort unreachable ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load - drop - local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.tee $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $switch$1$default - block $switch$1$case$4 - local.get $0 - i32.const 12 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $switch$1$case$4 $switch$1$default - end - local.get $0 - i32.load offset=20 - local.tee $2 - if - local.get $2 - local.tee $1 - i32.const 1308 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - 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 - ) ) diff --git a/tests/allocators/buddy/package.json b/tests/allocators/default/package.json similarity index 58% rename from tests/allocators/buddy/package.json rename to tests/allocators/default/package.json index f0f64bb7c4..8519148c6f 100644 --- a/tests/allocators/buddy/package.json +++ b/tests/allocators/default/package.json @@ -2,7 +2,7 @@ "private": true, "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 none --sourceMap --measure", - "build:optimized": "node ../../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime none --sourceMap --measure --noAssert --optimize" + "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" } } diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/allocators/default/untouched.wat similarity index 87% rename from tests/compiler/runtime-full.untouched.wat rename to tests/allocators/default/untouched.wat index 3b7f7c26d0..b89363a127 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/allocators/default/untouched.wat @@ -2,29 +2,47 @@ (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 $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\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 208) "\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") + (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/rt/__rtti_base i32 (i32.const 208)) - (global $~lib/memory/__heap_base i32 (i32.const 236)) + (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)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (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) @@ -47,7 +65,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 272 i32.const 14 call $~lib/builtins/abort @@ -74,7 +92,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 274 i32.const 14 call $~lib/builtins/abort @@ -128,7 +146,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 287 i32.const 14 call $~lib/builtins/abort @@ -144,13 +162,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -236,7 +254,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -260,7 +278,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 200 i32.const 14 call $~lib/builtins/abort @@ -277,7 +295,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 202 i32.const 14 call $~lib/builtins/abort @@ -331,7 +349,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -372,7 +390,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 223 i32.const 16 call $~lib/builtins/abort @@ -406,7 +424,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -415,7 +433,7 @@ 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 @@ -437,7 +455,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 238 i32.const 14 call $~lib/builtins/abort @@ -455,7 +473,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 239 i32.const 14 call $~lib/builtins/abort @@ -514,7 +532,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 255 i32.const 14 call $~lib/builtins/abort @@ -539,15 +557,15 @@ 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 @@ -575,7 +593,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -619,7 +637,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 380 i32.const 14 call $~lib/builtins/abort @@ -662,7 +680,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 387 i32.const 16 call $~lib/builtins/abort @@ -695,7 +713,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 400 i32.const 5 call $~lib/builtins/abort @@ -733,13 +751,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 @@ -750,7 +768,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 @@ -777,6 +795,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 @@ -819,7 +839,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 @@ -932,8 +952,8 @@ i32.const 1073741820 i32.ge_u if + i32.const 96 i32.const 32 - i32.const 160 i32.const 461 i32.const 30 call $~lib/builtins/abort @@ -1017,7 +1037,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 333 i32.const 14 call $~lib/builtins/abort @@ -1082,7 +1102,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 346 i32.const 18 call $~lib/builtins/abort @@ -1233,7 +1253,7 @@ i32.eqz if i32.const 0 - i32.const 160 + i32.const 32 i32.const 360 i32.const 14 call $~lib/builtins/abort @@ -1259,7 +1279,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 @@ -1272,7 +1292,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 @@ -1283,7 +1303,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 @@ -1313,7 +1333,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) @@ -1342,8 +1362,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 32 + i32.const 499 i32.const 16 call $~lib/builtins/abort unreachable @@ -1362,8 +1382,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 32 + i32.const 501 i32.const 14 call $~lib/builtins/abort unreachable @@ -1391,44 +1411,9 @@ 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/tlsf/checkUsedBlock (param $0 i32) (result i32) (local $1 i32) @@ -1459,8 +1444,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 563 + i32.const 32 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable @@ -2721,14 +2706,14 @@ 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 - i32.store - i32.const 0 - drop + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock @@ -2839,7 +2824,7 @@ i32.and local.get $6 i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $1 local.get $3 @@ -2880,274 +2865,40 @@ 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 32 - i32.const 96 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) 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/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 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.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 - end - local.get $0 - ) - (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/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) - 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 96 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - 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 - 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 ) - (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 + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT 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 + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end + call $~lib/rt/tlsf/__free ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $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 + (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/package.json b/tests/allocators/package.json index 1e8b2eba42..fc58f3778c 100644 --- a/tests/allocators/package.json +++ b/tests/allocators/package.json @@ -3,6 +3,6 @@ "scripts": { "test": "node ./index", "test:forever": "node ./forever", - "test:all": "npm run test rt-full && npm run test rt-stub" + "test:all": "npm run test default && npm run test stub" } } diff --git a/tests/allocators/rt-full/package.json b/tests/allocators/rt-full/package.json deleted file mode 100644 index 0a42816c81..0000000000 --- a/tests/allocators/rt-full/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "private": true, - "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 full --sourceMap --measure --debug", - "build:optimized": "node ../../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime full --sourceMap --measure --noAssert --optimize" - } -} diff --git a/tests/allocators/rt-stub/assembly/tsconfig.json b/tests/allocators/rt-stub/assembly/tsconfig.json deleted file mode 100644 index 9263ff67b2..0000000000 --- a/tests/allocators/rt-stub/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/tests/allocators/rt-stub/untouched.wat b/tests/allocators/rt-stub/untouched.wat deleted file mode 100644 index 3693aaa078..0000000000 --- a/tests/allocators/rt-stub/untouched.wat +++ /dev/null @@ -1,1625 +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) "\1e\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") - (data (i32.const 64) "\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 $~lib/rt/__rtti_base i32 (i32.const 64)) - (global $~lib/heap/__heap_base i32 (i32.const 92)) - (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)) - (export "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/heap/heap.reset)) - (start $~start) - (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/heap/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__alloc - ) - (func $~lib/heap/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 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 $~lib/heap/heap.free (param $0 i32) - local.get $0 - call $~lib/rt/stub/__free - ) - (func $~lib/heap/heap.reset - call $~lib/rt/stub/__reset - ) - (func $~start - global.get $~lib/heap/__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/rt-stub/assembly/index.ts b/tests/allocators/stub/assembly/index.ts similarity index 100% rename from tests/allocators/rt-stub/assembly/index.ts rename to tests/allocators/stub/assembly/index.ts diff --git a/tests/allocators/rt-full/assembly/tsconfig.json b/tests/allocators/stub/assembly/tsconfig.json similarity index 100% rename from tests/allocators/rt-full/assembly/tsconfig.json rename to tests/allocators/stub/assembly/tsconfig.json diff --git a/tests/allocators/rt-stub/optimized.wat b/tests/allocators/stub/optimized.wat similarity index 72% rename from tests/allocators/rt-stub/optimized.wat rename to tests/allocators/stub/optimized.wat index 6e46c13714..43ff393683 100644 --- a/tests/allocators/rt-stub/optimized.wat +++ b/tests/allocators/stub/optimized.wat @@ -1,36 +1,18 @@ (module - (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_=>_none (func (param i32 i32 i32))) - (memory $0 1) - (data (i32.const 1024) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (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)) - (global $~lib/rt/__rtti_base i32 (i32.const 1024)) + (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)) - (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)) - (export "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/rt/stub/__reset)) (start $~start) - (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) @@ -57,9 +39,9 @@ i32.const 16 i32.shr_u local.tee $1 - local.get $2 local.get $1 - i32.gt_s + local.get $2 + i32.lt_s select memory.grow i32.const 0 @@ -92,7 +74,12 @@ i32.add local.tee $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 @@ -100,37 +87,9 @@ 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 + (func $~lib/memory/heap.alloc (param $0 i32) (result i32) 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) @@ -305,7 +264,7 @@ end end ) - (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -322,7 +281,12 @@ i32.eq local.set $5 local.get $1 - call $~lib/rt/stub/computeSize + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub local.set $2 local.get $1 local.get $3 @@ -349,9 +313,9 @@ i32.const 1 i32.shl local.tee $1 - local.get $2 local.get $1 - i32.gt_u + local.get $2 + i32.lt_u select call $~lib/rt/stub/__alloc local.tee $1 @@ -375,52 +339,7 @@ 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 $~lib/heap/heap.alloc (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__alloc - ) - (func $~lib/heap/heap.realloc (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/rt/stub/__realloc - ) - (func $~lib/heap/heap.free (param $0 i32) + (func $~lib/memory/heap.free (param $0 i32) global.get $~lib/rt/stub/offset local.get $0 local.get $0 @@ -435,10 +354,14 @@ 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 1052 + i32.const 1036 global.set $~lib/rt/stub/startOffset - i32.const 1052 + i32.const 1036 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/allocators/rt-stub/package.json b/tests/allocators/stub/package.json similarity index 100% rename from tests/allocators/rt-stub/package.json rename to tests/allocators/stub/package.json diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/allocators/stub/untouched.wat similarity index 93% rename from tests/compiler/runtime-stub.untouched.wat rename to tests/allocators/stub/untouched.wat index dcb7097599..8932e17c1f 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/allocators/stub/untouched.wat @@ -1,42 +1,25 @@ (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 (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\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 80) "\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") + (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/rt/__rtti_base i32 (i32.const 80)) - (global $~lib/memory/__heap_base i32 (i32.const 108)) + (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)) - (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)) (start $~start) - (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) @@ -97,10 +80,16 @@ 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 @@ -114,50 +103,31 @@ i32.add local.set $2 local.get $0 - call $~lib/rt/stub/computeSize local.set $3 - local.get $2 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 $3 - i32.store + local.get $4 + call $~lib/rt/common/BLOCK#set:mmInfo local.get $2 ) - (func $~lib/rt/stub/__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 - 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) @@ -1434,7 +1404,7 @@ if i32.const 0 i32.const 32 - i32.const 55 + i32.const 44 i32.const 3 call $~lib/builtins/abort unreachable @@ -1453,8 +1423,19 @@ i32.eq local.set $4 local.get $1 - call $~lib/rt/stub/computeSize 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 @@ -1468,30 +1449,30 @@ unreachable end local.get $0 - local.get $5 + local.get $6 i32.add call $~lib/rt/stub/maybeGrowMemory local.get $2 - local.get $5 - i32.store + local.get $6 + call $~lib/rt/common/BLOCK#set:mmInfo else - local.get $5 - local.tee $6 + local.get $6 + local.tee $5 local.get $3 i32.const 1 i32.shl local.tee $7 - local.get $6 + local.get $5 local.get $7 i32.gt_u select call $~lib/rt/stub/__alloc - local.set $6 - local.get $6 + local.set $5 + local.get $5 local.get $0 local.get $3 call $~lib/memory/memory.copy - local.get $6 + local.get $5 local.tee $0 i32.const 4 i32.sub @@ -1501,54 +1482,71 @@ local.get $4 if local.get $0 - local.get $5 + local.get $6 i32.add global.set $~lib/rt/stub/offset local.get $2 - local.get $5 - i32.store + local.get $6 + call $~lib/rt/common/BLOCK#set:mmInfo end end local.get $0 ) - (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/memory/heap.realloc (param $0 i32) (param $1 i32) (result i32) + local.get $0 local.get $1 - i32.const 1073741804 - i32.gt_u + 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 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.set $1 + local.get $0 local.get $1 - i32.store offset=16 - local.get $2 - i32.const 16 + 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/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/memory/heap.free (param $0 i32) local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/rt/stub/__collect - nop + 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 diff --git a/tests/asconfig/complicated/asconfig.json b/tests/asconfig/complicated/asconfig.json index 2e43499276..7f5d4c8c57 100644 --- a/tests/asconfig/complicated/asconfig.json +++ b/tests/asconfig/complicated/asconfig.json @@ -2,7 +2,7 @@ "targets": { "release": { "optimize": true, - "runtime": "stub", + "exportRuntime": true, "initialMemory": 30, "explicitStart": true, "measure": true, diff --git a/tests/asconfig/extends/asconfig.json b/tests/asconfig/extends/asconfig.json index e9ef74654a..1d6243a68f 100644 --- a/tests/asconfig/extends/asconfig.json +++ b/tests/asconfig/extends/asconfig.json @@ -6,7 +6,7 @@ }, "options": { "enable": ["simd"], - "runtime": "half", + "exportRuntime": true, "noEmit": false }, "extends": "./extends.json" diff --git a/tests/asconfig/extends/expected.json b/tests/asconfig/extends/expected.json index b5498f8b40..c212ff76d8 100644 --- a/tests/asconfig/extends/expected.json +++ b/tests/asconfig/extends/expected.json @@ -1,6 +1,6 @@ { "options": { - "runtime": "half", + "exportRuntime": true, "noEmit": false, "noAssert": true, "enable": ["simd"] diff --git a/tests/asconfig/target/asconfig.json b/tests/asconfig/target/asconfig.json index 57ba76da13..e7475ccce6 100644 --- a/tests/asconfig/target/asconfig.json +++ b/tests/asconfig/target/asconfig.json @@ -2,7 +2,7 @@ "targets": { "release": { "noAssert": true, - "runtime": "none" + "exportRuntime": false }, "debug": { "optimizeLevel": 3, @@ -12,6 +12,6 @@ } }, "options": { - "runtime": "stub" + "exportRuntime": true } } diff --git a/tests/asconfig/target/expected.json b/tests/asconfig/target/expected.json index d4e935883a..9608315490 100644 --- a/tests/asconfig/target/expected.json +++ b/tests/asconfig/target/expected.json @@ -1,6 +1,6 @@ { "options": { - "runtime": "none", + "exportRuntime": false, "noAssert": true } } \ No newline at end of file diff --git a/tests/binaryen/return-flatten.js b/tests/binaryen/return-flatten.js new file mode 100644 index 0000000000..b8fc3c4659 --- /dev/null +++ b/tests/binaryen/return-flatten.js @@ -0,0 +1,19 @@ +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/bootstrap/index.ts b/tests/bootstrap/index.ts deleted file mode 100644 index 1f66ea7c22..0000000000 --- a/tests/bootstrap/index.ts +++ /dev/null @@ -1,116 +0,0 @@ -import * as fs from "fs"; -import * as path from "path"; -import * as v8 from "v8"; -import * as binaryen from "binaryen"; -import { instantiate } from "../../lib/loader/umd"; -import { Rtrace } from "../../lib/rtrace/umd"; -import * as find from "../../cli/util/find"; -import AssemblyScript from "../../out/assemblyscript"; - -v8.setFlagsFromString("--experimental-wasm-bigint"); - -// Load stdlib -const libDir = path.join(__dirname, "..", "..", "std", "assembly"); -const libraryFiles = {}; -find.files(libDir, /^(?!.*\.d\.ts$).*\.ts$/).forEach((file: string) => { - libraryFiles[file.replace(/\.ts$/, "")] = fs.readFileSync(path.join(libDir, file), "utf8" ); -}); - -async function test(build: string): Promise { - await binaryen.ready; - - const rtrace = new Rtrace({ - onerror(err, info) { - console.log(err, info); - }, - oninfo(msg) { - // console.log(msg); - }, - getMemory() { - return asc.memory; - } - }); - - const { exports: asc } = await instantiate( - fs.promises.readFile(`${ __dirname }/../../out/assemblyscript.${ build }.wasm`), - { - binaryen, - rtrace, - env: rtrace.env - } - ); - if (asc._start) asc._start(); - - const cachedStrings = new Map(); - function cachedString(text: string): number { - if (cachedStrings.has(text)) return cachedStrings.get(text); - var ptr = asc.__retain(asc.__newString(text)); - cachedStrings.set(text, ptr); - return ptr; - } - - const programPtr = ((): number => { - const optionsPtr = asc.newOptions(); - const ptr = asc.newProgram(optionsPtr); - asc.__release(optionsPtr); - return ptr; - })(); - - console.log("\nParsing standard library ..."); - Object.keys(libraryFiles).forEach((libPath: string) => { - if (libPath.indexOf("/") >= 0) return; - const textPtr = cachedString(libraryFiles[libPath]); - const pathPtr = cachedString("~lib/" + libPath + ".ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, false); - }); - - console.log("\nParsing runtime ..."); - { - const textPtr = cachedString(libraryFiles["rt/index-stub"]); - const pathPtr = cachedString("~lib/rt/index-stub.ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, true); - } - - console.log("\nParsing backlog ..."); - var nextFilePtr = asc.nextFile(programPtr); - while (nextFilePtr) { - let nextFile = asc.__getString(nextFilePtr); - if (!nextFile.startsWith("~lib/")) { // e.g. "rt/something" - nextFile = "~lib/" + nextFile; - } - const text = libraryFiles[nextFile.substring(5)]; - if (text == null) throw Error("missing file: " + nextFile); - const textPtr = cachedString(libraryFiles[nextFile.substring(5)]); - const pathPtr = cachedString(nextFile + ".ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, false); - asc.__release(nextFilePtr); - nextFilePtr = asc.nextFile(programPtr); - } - - console.log("\nParsing entry file ..."); - { - const textPtr = cachedString("export function add(a: i32, b: i32): i32 { return a + b; }\n"); - const pathPtr = cachedString("index.ts"); - console.log(" " + asc.__getString(pathPtr)); - asc.parse(programPtr, textPtr, pathPtr, true); - } - - console.log("\nInitializing program ..."); - { - asc.initializeProgram(programPtr); - console.log("\nCompiling program ..."); - const modulePtr = asc.compile(programPtr); - const moduleRef = new Uint32Array(asc.memory.buffer, modulePtr)[0]; - console.log(binaryen.wrapModule(moduleRef).emitText()); - asc.__release(modulePtr); - } - - asc.__release(programPtr); - cachedStrings.forEach(asc.__release); - - console.log("\nSo far, so good."); -} -test("untouched"); diff --git a/tests/bootstrap/package.json b/tests/bootstrap/package.json deleted file mode 100644 index 31f6a4909a..0000000000 --- a/tests/bootstrap/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "private": true, - "type": "commonjs" -} \ No newline at end of file diff --git a/tests/browser-asc.js b/tests/browser-asc.js index b48649268b..d8a40cb0c3 100644 --- a/tests/browser-asc.js +++ b/tests/browser-asc.js @@ -73,7 +73,7 @@ process.stdout.write(stderr.toString()); console.log("\n# asc.compileString"); -const output = asc.compileString(`export function test(): void {}`, { optimizeLevel: 3, runtime: "none", exportTable: true, measure: true }); +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 >>>"); diff --git a/tests/compiler.js b/tests/compiler.js index 0ea954aefb..b641f3954c 100644 --- a/tests/compiler.js +++ b/tests/compiler.js @@ -3,6 +3,7 @@ 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"); @@ -285,14 +286,14 @@ function runTest(basename) { const instantiateUntouched = section("instantiate untouched"); if (!config.skipInstantiate) { - if (!testInstantiate(basename, untouchedBuffer, glue, stderr)) { + 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)) { + if (!testInstantiate(basename, optimizedBuffer, glue, stderr, config.asc_wasi)) { failed = true; failedTests.add(basename); instantiateOptimized.end(FAILURE); @@ -342,7 +343,7 @@ function runTest(basename) { let rtracedBuffer = stdout.toBuffer(); const instantiateRtrace = section("instantiate rtrace"); v8.setFlagsFromString("--experimental-wasm-bigint"); - if (!testInstantiate(basename, rtracedBuffer, glue, stderr)) { + if (!testInstantiate(basename, rtracedBuffer, glue, stderr, config.asc_wasi)) { failed = true; failedTests.add(basename); instantiateRtrace.end(FAILURE); @@ -360,7 +361,7 @@ function runTest(basename) { } // Tests if instantiation of a module succeeds -function testInstantiate(basename, binaryBuffer, glue, stderr) { +function testInstantiate(basename, binaryBuffer, glue, stderr, wasiOptions) { var failed = false; try { let memory = new WebAssembly.Memory({ initial: 10 }); @@ -391,8 +392,8 @@ function testInstantiate(basename, binaryBuffer, glue, stderr) { } }); - var imports = { - env: Object.assign({ + var imports = rtrace.install({ + env: { memory, abort: function(msg, file, line, column) { console.log(colorsUtil.red(" abort: " + getString(msg) + " in " + getString(file) + "(" + line + ":" + column + ")")); @@ -402,24 +403,35 @@ function testInstantiate(basename, binaryBuffer, glue, stderr) { }, seed: function() { return 0xA5534817; // make tests deterministic + }, + visit: function() { + // override in tests } - }, rtrace.env), + }, Math, Date, - Reflect, - rtrace - }; + Reflect + }); if (glue.preInstantiate) { console.log(" [call preInstantiate]"); glue.preInstantiate(imports, exports); } + 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); Object.setPrototypeOf(exports, instance.exports); if (glue.postInstantiate) { console.log(" [call postInstantiate]"); glue.postInstantiate(instance); } - if (exports._start) { + if (wasi) { + console.log(" [wasi start]"); + let code = wasi.start(instance); + console.log(" [wasi exit] code=" + code); + } else if (exports._start) { console.log(" [call start]"); exports._start(); } @@ -438,11 +450,9 @@ function testInstantiate(basename, binaryBuffer, glue, stderr) { if (rtrace.active) { console.log(" " + rtrace.allocCount + " allocs, " + - rtrace.resizeCount + " resizes, " + - rtrace.moveCount + " moves, " + rtrace.freeCount + " frees, " + - rtrace.incrementCount + " increments, " + - rtrace.decrementCount + " decrements" + rtrace.resizeCount + " resizes, " + + rtrace.moveCount + " moves" ); } return true; diff --git a/tests/compiler/ReturnType.json b/tests/compiler/ReturnType.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/ReturnType.json +++ b/tests/compiler/ReturnType.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/ReturnType.untouched.wat b/tests/compiler/ReturnType.untouched.wat index d37e1f0a8a..6ecf46de51 100644 --- a/tests/compiler/ReturnType.untouched.wat +++ b/tests/compiler/ReturnType.untouched.wat @@ -2,6 +2,9 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:ReturnType diff --git a/tests/compiler/abi.json b/tests/compiler/abi.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/abi.json +++ b/tests/compiler/abi.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat index 8bc5e55026..18dd948724 100644 --- a/tests/compiler/abi.optimized.wat +++ b/tests/compiler/abi.optimized.wat @@ -1,11 +1,12 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") - (export "memory" (memory $0)) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s") (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exported)) (export "exportedInternal" (func $abi/exported)) + (export "memory" (memory $0)) (func $abi/exported (result i32) i32.const -128 ) diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index fbd34e5585..81c33ab60a 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -4,14 +4,17 @@ (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00i\00.\00t\00s\00") (table $0 1 funcref) (global $abi/condition (mut i32) (i32.const 0)) (global $abi/y (mut i32) (i32.const 0)) - (export "memory" (memory $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)) (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exportedExported)) (export "exportedInternal" (func $abi/exportedInternal)) + (export "memory" (memory $0)) (start $~start) (func $abi/internal (result i32) i32.const 128 diff --git a/tests/compiler/asc-constants.json b/tests/compiler/asc-constants.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/asc-constants.json +++ b/tests/compiler/asc-constants.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index e32d4d899e..b57c8e0d6e 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -19,6 +19,9 @@ (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)) (export "memory" (memory $0)) (start $~start) (func $start:asc-constants diff --git a/tests/compiler/assert-nonnull.json b/tests/compiler/assert-nonnull.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/assert-nonnull.json +++ b/tests/compiler/assert-nonnull.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index 823ea93f95..3b316027c3 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -1,29 +1,103 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (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))) (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\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") - (data (i32.const 1100) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") - (data (i32.const 1164) "<\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 1228) ",\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 1276) "|\00\00\00\01\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 1036) "<") + (data (i32.const 1048) "\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 1100) "<") + (data (i32.const 1112) "\01\00\00\00\"\00\00\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s") + (data (i32.const 1164) "<") + (data (i32.const 1176) "\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 1228) ",") + (data (i32.const 1240) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1276) "|") + (data (i32.const 1288) "\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") (table $0 1 funcref) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17788)) (export "memory" (memory $0)) - (export "testVar" (func $assert-nonnull/testVar)) - (export "testObj" (func $assert-nonnull/testObj)) - (export "testProp" (func $assert-nonnull/testProp)) - (export "testArr" (func $assert-nonnull/testArr)) - (export "testElem" (func $assert-nonnull/testElem)) - (export "testAll" (func $assert-nonnull/testAll)) - (export "testAll2" (func $assert-nonnull/testAll2)) - (export "testFn" (func $assert-nonnull/testFn)) - (export "testFn2" (func $assert-nonnull/testFn2)) - (export "testRet" (func $assert-nonnull/testRet)) - (export "testObjFn" (func $assert-nonnull/testObjFn)) - (export "testObjRet" (func $assert-nonnull/testObjRet)) - (func $assert-nonnull/testVar (param $0 i32) (result i32) + (export "testVar" (func $export:assert-nonnull/testVar)) + (export "testObj" (func $export:assert-nonnull/testObj)) + (export "testProp" (func $export:assert-nonnull/testProp)) + (export "testArr" (func $export:assert-nonnull/testArr)) + (export "testElem" (func $export:assert-nonnull/testElem)) + (export "testAll" (func $export:assert-nonnull/testAll)) + (export "testAll2" (func $export:assert-nonnull/testAll2)) + (export "testFn" (func $export:assert-nonnull/testFn)) + (export "testFn2" (func $export:assert-nonnull/testFn2)) + (export "testRet" (func $export:assert-nonnull/testRet)) + (export "testObjFn" (func $export:assert-nonnull/testObjFn)) + (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1404 + i32.lt_s + if + i32.const 17808 + i32.const 17856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 + i32.eqz + if + i32.const 1184 + i32.const 1248 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:assert-nonnull/testVar (param $0 i32) (result i32) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 i32.eqz if @@ -34,9 +108,36 @@ 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 ) - (func $assert-nonnull/testObj (param $0 i32) (result i32) + (func $export:assert-nonnull/testObj (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 + i32.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.store local.get $0 i32.eqz if @@ -49,11 +150,38 @@ end local.get $0 i32.load + 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 ) - (func $assert-nonnull/testProp (param $0 i32) (result i32) + (func $export:assert-nonnull/testProp (param $0 i32) (result i32) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.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 local.tee $0 + i32.store + local.get $0 i32.eqz if i32.const 1056 @@ -63,9 +191,36 @@ 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 ) - (func $assert-nonnull/testArr (param $0 i32) (result i32) + (func $export:assert-nonnull/testArr (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 + i32.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 + local.get $0 + i32.store offset=4 local.get $0 i32.eqz if @@ -76,52 +231,87 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 i32.eqz if i32.const 1184 i32.const 1248 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 i32.load local.tee $0 + i32.store offset=4 + local.get $0 i32.eqz if i32.const 1296 i32.const 1248 - i32.const 108 + i32.const 96 i32.const 40 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (result i32) + (func $export:assert-nonnull/testElem (param $0 i32) (result i32) + global.get $~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.load offset=12 - i32.eqz - if - i32.const 1184 - i32.const 1248 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - i32.load offset=4 - i32.load - ) - (func $assert-nonnull/testElem (param $0 i32) (result i32) + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/array/Array#__get local.tee $0 + i32.store offset=4 + local.get $0 i32.eqz if i32.const 1056 @@ -131,68 +321,193 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $assert-nonnull/testAll (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll (param $0 i32) (result i32) (local $1 i32) - block $folding-inner0 - local.get $0 - local.tee $1 - i32.eqz - br_if $folding-inner0 - local.get $1 - call $~lib/array/Array#__get - local.tee $0 - local.get $0 - i32.eqz - br_if $folding-inner0 - i32.load - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - return + (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 + global.get $~lib/memory/__stack_pointer + i32.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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $__inlined_func$assert-nonnull/testAll + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$assert-nonnull/testAll + end + i32.const 1056 + i32.const 1120 + i32.const 27 + i32.const 10 + call $~lib/builtins/abort + unreachable end - i32.const 1056 - i32.const 1120 - i32.const 27 - i32.const 10 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $assert-nonnull/testAll2 (param $0 i32) (result i32) + (func $export:assert-nonnull/testAll2 (param $0 i32) (result i32) (local $1 i32) - block $folding-inner0 - local.get $0 - local.tee $1 - i32.eqz - br_if $folding-inner0 - local.get $1 - call $~lib/array/Array#__get - local.tee $0 - local.get $0 - i32.eqz - br_if $folding-inner0 - i32.load - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $0 - return + (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 + global.get $~lib/memory/__stack_pointer + i32.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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $__inlined_func$assert-nonnull/testAll2 + block $folding-inner0 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + local.get $1 + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$assert-nonnull/testAll2 + end + i32.const 1056 + i32.const 1120 + i32.const 31 + i32.const 10 + call $~lib/builtins/abort + unreachable end - i32.const 1056 - i32.const 1120 - i32.const 31 - i32.const 10 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $assert-nonnull/testFn (param $0 i32) (result i32) + (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load call_indirect (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $assert-nonnull/testFn2 (param $0 i32) (result i32) + (func $export:assert-nonnull/testFn2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.eqz if @@ -204,14 +519,43 @@ unreachable end local.get $0 + i32.store offset=4 + local.get $0 i32.load call_indirect (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $assert-nonnull/testRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 call_indirect (type $none_=>_i32) local.tee $0 + i32.store + local.get $0 i32.eqz if i32.const 1056 @@ -221,20 +565,59 @@ 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 ) - (func $assert-nonnull/testObjFn (param $0 i32) (result i32) + (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 i32.load call_indirect (type $none_=>_i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $assert-nonnull/testObjRet (param $0 i32) (result i32) + (func $export:assert-nonnull/testObjRet (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 i32.load call_indirect (type $none_=>_i32) local.tee $0 + i32.store + local.get $0 i32.eqz if i32.const 1056 @@ -244,6 +627,14 @@ 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 ) ) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 1ef01f9b2c..c6299bfa4d 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -2,119 +2,90 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (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_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\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\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\00a\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 140) "<\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 204) ",\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 252) "|\00\00\00\01\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 12) "<\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\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\00s\00s\00e\00r\00t\00-\00n\00o\00n\00n\00u\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 140) "<\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 204) ",\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 252) "|\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") (table $0 1 funcref) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 380)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16764)) + (global $~lib/memory/__heap_base i32 (i32.const 16764)) (export "memory" (memory $0)) - (export "testVar" (func $assert-nonnull/testVar)) - (export "testObj" (func $assert-nonnull/testObj)) - (export "testProp" (func $assert-nonnull/testProp)) - (export "testArr" (func $assert-nonnull/testArr)) - (export "testElem" (func $assert-nonnull/testElem)) - (export "testAll" (func $assert-nonnull/testAll)) - (export "testAll2" (func $assert-nonnull/testAll2)) - (export "testFn" (func $assert-nonnull/testFn)) - (export "testFn2" (func $assert-nonnull/testFn2)) - (export "testRet" (func $assert-nonnull/testRet)) - (export "testObjFn" (func $assert-nonnull/testObjFn)) - (export "testObjRet" (func $assert-nonnull/testObjRet)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (export "testVar" (func $export:assert-nonnull/testVar)) + (export "testObj" (func $export:assert-nonnull/testObj)) + (export "testProp" (func $export:assert-nonnull/testProp)) + (export "testArr" (func $export:assert-nonnull/testArr)) + (export "testElem" (func $export:assert-nonnull/testElem)) + (export "testAll" (func $export:assert-nonnull/testAll)) + (export "testAll2" (func $export:assert-nonnull/testAll2)) + (export "testFn" (func $export:assert-nonnull/testFn)) + (export "testFn2" (func $export:assert-nonnull/testFn2)) + (export "testRet" (func $export:assert-nonnull/testRet)) + (export "testObjFn" (func $export:assert-nonnull/testObjFn)) + (export "testObjRet" (func $export:assert-nonnull/testObjRet)) + (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/rt/stub/__release (param $0 i32) - nop - ) - (func $assert-nonnull/testVar (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 96 - i32.const 2 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/stub/__retain - local.set $1 + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - call $~lib/rt/stub/__release + i32.load offset=4 local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $assert-nonnull/testObj (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + (func $assert-nonnull/testFn (param $0 i32) (result i32) + i32.const 0 + global.set $~argumentsLength local.get $0 - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 96 - i32.const 11 - i32.const 10 - call $~lib/builtins/abort - unreachable - end i32.load - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 + call_indirect (type $none_=>_i32) ) - (func $assert-nonnull/testProp (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + (func $assert-nonnull/testObjFn (param $0 i32) (result i32) + i32.const 0 + global.set $~argumentsLength local.get $0 + i32.load offset=4 i32.load - local.tee $1 - if (result i32) - local.get $1 - else - i32.const 32 - i32.const 96 - i32.const 15 - i32.const 10 + call_indirect (type $none_=>_i32) + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16784 + i32.const 16832 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $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 - call $~lib/rt/stub/__retain ) (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 @@ -122,15 +93,22 @@ if i32.const 160 i32.const 224 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 1 drop i32.const 0 @@ -141,20 +119,35 @@ if i32.const 272 i32.const 224 - i32.const 108 + i32.const 96 i32.const 40 call $~lib/builtins/abort unreachable end local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $assert-nonnull/testArr (param $0 i32) (result i32) (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else @@ -165,25 +158,31 @@ call $~lib/builtins/abort unreachable end + 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 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $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 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - call $~lib/rt/stub/__retain + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 @@ -191,31 +190,58 @@ if i32.const 160 i32.const 224 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget - local.set $2 + local.tee $2 + i32.store offset=4 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.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $assert-nonnull/testElem (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + 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 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else @@ -226,20 +252,31 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $assert-nonnull/testAll (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else @@ -250,12 +287,18 @@ call $~lib/builtins/abort unreachable end + 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 local.tee $1 - local.tee $2 + i32.store offset=4 + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -265,9 +308,11 @@ unreachable end i32.load - local.tee $2 + local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -276,22 +321,31 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $assert-nonnull/testAll2 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else @@ -302,12 +356,18 @@ call $~lib/builtins/abort unreachable end + 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 local.tee $1 - local.tee $2 + i32.store offset=4 + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -317,9 +377,11 @@ unreachable end i32.load - local.tee $2 + local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -328,40 +390,132 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain local.set $2 - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $assert-nonnull/testVar (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 - call $~lib/rt/stub/__release + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 96 + i32.const 2 + i32.const 10 + call $~lib/builtins/abort + unreachable + 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 $assert-nonnull/testFn (param $0 i32) (result i32) + (func $assert-nonnull/testObj (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 - call $~lib/rt/stub/__retain - local.set $0 + local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 96 + i32.const 11 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $assert-nonnull/testProp (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 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - call_indirect (type $none_=>_i32) local.tee $1 + i32.store + local.get $1 + if (result i32) + local.get $1 + else + i32.const 32 + i32.const 96 + i32.const 15 + i32.const 10 + call $~lib/builtins/abort + unreachable + end local.set $2 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $assert-nonnull/testFn2 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store + local.get $1 if (result i32) local.get $1 else @@ -372,36 +526,42 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 0 global.set $~argumentsLength local.get $2 i32.load call_indirect (type $none_=>_i32) - local.tee $1 local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 ) (func $assert-nonnull/testRet (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 global.set $~argumentsLength local.get $0 i32.load call_indirect (type $none_=>_i32) local.tee $1 - local.tee $2 + i32.store + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -410,38 +570,25 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $assert-nonnull/testObjFn (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - global.set $~argumentsLength - local.get $0 - i32.load offset=4 - i32.load - call_indirect (type $none_=>_i32) - local.tee $1 local.set $2 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $assert-nonnull/testObjRet (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 global.set $~argumentsLength local.get $0 @@ -449,9 +596,10 @@ i32.load call_indirect (type $none_=>_i32) local.tee $1 - local.tee $2 + i32.store + local.get $1 if (result i32) - local.get $2 + local.get $1 else i32.const 32 i32.const 96 @@ -460,12 +608,239 @@ call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain 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:assert-nonnull/testVar (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 $assert-nonnull/testVar + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release + ) + (func $export:assert-nonnull/testObj (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 - call $~lib/rt/stub/__release - local.get $2 + i32.store + local.get $0 + call $assert-nonnull/testObj + 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:assert-nonnull/testProp (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testProp + 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:assert-nonnull/testArr (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testArr + 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:assert-nonnull/testElem (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testElem + 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:assert-nonnull/testAll (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testAll + 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:assert-nonnull/testAll2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testAll2 + 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:assert-nonnull/testFn (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 $assert-nonnull/testFn + 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:assert-nonnull/testFn2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testFn2 + 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:assert-nonnull/testRet (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testRet + 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:assert-nonnull/testObjFn (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 $assert-nonnull/testObjFn + 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:assert-nonnull/testObjRet (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $assert-nonnull/testObjRet + 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/assert.json b/tests/compiler/assert.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/assert.json +++ b/tests/compiler/assert.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index e58de52514..6c14deaad6 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -2,6 +2,9 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:assert diff --git a/tests/compiler/basic-nullable.json b/tests/compiler/basic-nullable.json index a457dec7bf..b44318af20 100644 --- a/tests/compiler/basic-nullable.json +++ b/tests/compiler/basic-nullable.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS204: Type 'i32' cannot be nullable.", diff --git a/tests/compiler/binary.json b/tests/compiler/binary.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/binary.json +++ b/tests/compiler/binary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index fe63b928b4..b82faf2a06 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -16,6 +16,9 @@ (global $~lib/util/math/log_tail (mut f64) (f64.const 0)) (global $binary/f (mut f32) (f32.const 0)) (global $binary/F (mut f64) (f64.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 6664)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23048)) + (global $~lib/memory/__heap_base i32 (i32.const 23048)) (export "memory" (memory $0)) (start $~start) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/bool.json b/tests/compiler/bool.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/bool.json +++ b/tests/compiler/bool.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/bool.optimized.wat b/tests/compiler/bool.optimized.wat index 19d3e5f98e..0c6542fe9b 100644 --- a/tests/compiler/bool.optimized.wat +++ b/tests/compiler/bool.optimized.wat @@ -1,5 +1,6 @@ (module (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index 4675495831..053be5781e 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -3,7 +3,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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $bool/i (mut i32) (i32.const 2)) (global $bool/I (mut i64) (i64.const 2)) @@ -44,6 +44,9 @@ (global $bool/F12 (mut f64) (f64.const 0)) (global $bool/F13 (mut f64) (f64.const 0)) (global $bool/uu (mut i32) (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) (export "memory" (memory $0)) (start $~start) (func $start:bool diff --git a/tests/compiler/builtins.json b/tests/compiler/builtins.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/builtins.json +++ b/tests/compiler/builtins.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 5bd9983d48..2e750bfa1c 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -1,61 +1,138 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result 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_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1100) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") - (data (i32.const 1148) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01") - (data (i32.const 1180) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") - (data (i32.const 1260) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") - (data (i32.const 1308) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") - (data (i32.const 1356) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") - (data (i32.const 1468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l") - (data (i32.const 1500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\008") - (data (i32.const 1532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00u\008") - (data (i32.const 1564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\001\006") - (data (i32.const 1596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\001\006") - (data (i32.const 1628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002") - (data (i32.const 1660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\003\002") - (data (i32.const 1692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\003\002") - (data (i32.const 1724) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\006\004") - (data (i32.const 1756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\006\004") - (data (i32.const 1788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\006\004") - (data (i32.const 1820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e") - (data (i32.const 1852) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e") - (data (i32.const 1884) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d") - (data (i32.const 1916) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") - (data (i32.const 1964) "\1c\00\00\00\01\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\02") - (data (i32.const 1996) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1100) ",") + (data (i32.const 1112) "\01\00\00\00\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s") + (data (i32.const 1148) "\1c") + (data (i32.const 1160) "\06\00\00\00\08\00\00\00\01") + (data (i32.const 1180) "L") + (data (i32.const 1192) "\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}") + (data (i32.const 1260) ",") + (data (i32.const 1272) "\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s") + (data (i32.const 1308) ",") + (data (i32.const 1320) "\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g") + (data (i32.const 1356) ",") + (data (i32.const 1368) "\01\00\00\00\10\00\00\00F\00u\00n\00c\00t\00i\00o\00n") + (data (i32.const 1404) "\1c") + (data (i32.const 1416) "\01\00\00\00\02\00\00\00C") + (data (i32.const 1436) "\1c") + (data (i32.const 1448) "\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g") + (data (i32.const 1468) "\1c") + (data (i32.const 1480) "\01\00\00\00\08\00\00\00b\00o\00o\00l") + (data (i32.const 1500) "\1c") + (data (i32.const 1512) "\01\00\00\00\04\00\00\00i\008") + (data (i32.const 1532) "\1c") + (data (i32.const 1544) "\01\00\00\00\04\00\00\00u\008") + (data (i32.const 1564) "\1c") + (data (i32.const 1576) "\01\00\00\00\06\00\00\00i\001\006") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\06\00\00\00u\001\006") + (data (i32.const 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\06\00\00\00i\003\002") + (data (i32.const 1660) "\1c") + (data (i32.const 1672) "\01\00\00\00\06\00\00\00u\003\002") + (data (i32.const 1692) "\1c") + (data (i32.const 1704) "\01\00\00\00\06\00\00\00f\003\002") + (data (i32.const 1724) "\1c") + (data (i32.const 1736) "\01\00\00\00\06\00\00\00i\006\004") + (data (i32.const 1756) "\1c") + (data (i32.const 1768) "\01\00\00\00\06\00\00\00u\006\004") + (data (i32.const 1788) "\1c") + (data (i32.const 1800) "\01\00\00\00\06\00\00\00f\006\004") + (data (i32.const 1820) "\1c") + (data (i32.const 1832) "\01\00\00\00\n\00\00\00i\00s\00i\00z\00e") + (data (i32.const 1852) "\1c") + (data (i32.const 1864) "\01\00\00\00\n\00\00\00u\00s\00i\00z\00e") + (data (i32.const 1884) "\1c") + (data (i32.const 1896) "\01\00\00\00\08\00\00\00v\00o\00i\00d") + (data (i32.const 1916) ",") + (data (i32.const 1928) "\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e") + (data (i32.const 1964) "\1c") + (data (i32.const 1976) "\0b\00\00\00\08\00\00\00\02") + (data (i32.const 1996) "\1c") + (data (i32.const 2008) "\0c\00\00\00\08\00\00\00\03") (table $0 4 funcref) (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (global $builtins/i (mut i32) (i32.const 0)) (global $builtins/I (mut i64) (i64.const 0)) (global $builtins/f (mut f32) (f32.const 0)) (global $builtins/F (mut f64) (f64.const 0)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18412)) (export "test" (func $start:builtins~anonymous|1)) + (export "memory" (memory $0)) (start $~start) (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 i32.add ) + (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) + i32.const 1 + local.get $0 + i32.const 4 + i32.eq + i32.const 1 + local.get $0 + i32.const 2 + i32.eq + local.get $0 + i32.const 1 + i32.eq + select + select + ) + (func $start:builtins~anonymous|1 + nop + ) + (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + nop + ) + (func $~start + call $start:builtins + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2028 + i32.lt_s + if + i32.const 18432 + i32.const 18480 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -66,13 +143,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -81,6 +165,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -93,7 +183,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -113,10 +202,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -124,23 +213,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -157,33 +246,31 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~lib/atomics/Atomics.isLockFree (param $0 i32) (result i32) - i32.const 1 - local.get $0 - i32.const 4 - i32.eq - i32.const 1 - local.get $0 - i32.const 2 - i32.eq - local.get $0 - i32.const 1 - i32.eq - select - select - ) - (func $start:builtins~anonymous|1 - nop - ) - (func $start:builtins~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - nop - ) (func $start:builtins + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 31 global.set $builtins/i i32.const 0 @@ -517,6 +604,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store i32.const 2 i32.const 3 i32.const 1168 @@ -532,6 +622,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -544,6 +643,21 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 i32.const 1200 i32.const 1200 call $~lib/string/String.__eq @@ -701,14 +815,23 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1280 i32.const 5 f64.const 0 f64.const 0 - f64.const 25 - f64.const 26 - f64.const 26 + f64.const 23 + f64.const 24 + f64.const 24 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store offset=4 i32.const 1376 i32.const 1376 call $~lib/string/String.__eq @@ -721,6 +844,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store offset=4 i32.const 1376 i32.const 1376 call $~lib/string/String.__eq @@ -733,6 +862,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1424 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1424 + i32.store offset=4 i32.const 1424 i32.const 1424 call $~lib/string/String.__eq @@ -745,6 +880,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store offset=4 i32.const 1456 i32.const 1456 call $~lib/string/String.__eq @@ -757,6 +898,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.store offset=4 i32.const 1488 i32.const 1488 call $~lib/string/String.__eq @@ -769,6 +916,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 i32.const 1520 i32.const 1520 call $~lib/string/String.__eq @@ -781,6 +934,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=4 i32.const 1552 i32.const 1552 call $~lib/string/String.__eq @@ -793,6 +952,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.store offset=4 i32.const 1584 i32.const 1584 call $~lib/string/String.__eq @@ -805,6 +970,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 i32.const 1616 i32.const 1616 call $~lib/string/String.__eq @@ -817,6 +988,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 i32.const 1648 i32.const 1648 call $~lib/string/String.__eq @@ -829,6 +1006,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=4 i32.const 1680 i32.const 1680 call $~lib/string/String.__eq @@ -841,6 +1024,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=4 i32.const 1712 i32.const 1712 call $~lib/string/String.__eq @@ -853,6 +1042,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1744 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1744 + i32.store offset=4 i32.const 1744 i32.const 1744 call $~lib/string/String.__eq @@ -865,6 +1060,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 i32.const 1776 i32.const 1776 call $~lib/string/String.__eq @@ -877,6 +1078,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=4 i32.const 1808 i32.const 1808 call $~lib/string/String.__eq @@ -889,6 +1096,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1840 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1840 + i32.store offset=4 i32.const 1840 i32.const 1840 call $~lib/string/String.__eq @@ -901,6 +1114,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=4 i32.const 1872 i32.const 1872 call $~lib/string/String.__eq @@ -913,6 +1132,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 i32.const 1904 i32.const 1904 call $~lib/string/String.__eq @@ -925,6 +1150,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store offset=4 i32.const 1456 i32.const 1456 call $~lib/string/String.__eq @@ -937,6 +1168,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store offset=4 i32.const 1376 i32.const 1376 call $~lib/string/String.__eq @@ -949,8 +1186,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:builtins + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 04d80f1456..fad6fdad2f 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -4,39 +4,38 @@ (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 $i32_=>_none (func (param i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 12) "\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 44) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\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\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 124) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 156) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00\00\00\00\00") - (data (i32.const 236) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 284) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 332) ",\00\00\00\01\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 380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\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\0c\00\00\00S\00t\00r\00i\00n\00g\00") - (data (i32.const 444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\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\04\00\00\00i\008\00\00\00\00\00\00\00\00\00") - (data (i32.const 508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00u\008\00\00\00\00\00\00\00\00\00") - (data (i32.const 540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\001\006\00\00\00\00\00\00\00") - (data (i32.const 572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\001\006\00\00\00\00\00\00\00") - (data (i32.const 604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\003\002\00\00\00\00\00\00\00") - (data (i32.const 636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") - (data (i32.const 668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\003\002\00\00\00\00\00\00\00") - (data (i32.const 700) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\006\004\00\00\00\00\00\00\00") - (data (i32.const 732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\006\004\00\00\00\00\00\00\00") - (data (i32.const 764) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") - (data (i32.const 796) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e\00\00\00") - (data (i32.const 828) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e\00\00\00") - (data (i32.const 860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d\00\00\00\00\00") - (data (i32.const 892) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 940) "\1c\00\00\00\01\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 972) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\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\01\00\00\00\00\00\00\00\00\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\06\00\00\00a\00b\00c\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\16\00\00\00b\00u\00i\00l\00t\00i\00n\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 156) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\008\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00(\00)\00 \00{\00 \00[\00n\00a\00t\00i\00v\00e\00 \00c\00o\00d\00e\00]\00 \00}\00\00\00\00\00") + (data (i32.const 236) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00i\00g\00n\00a\00t\00u\00r\00e\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 284) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00e\00s\00t\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 332) ",\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 380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\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\01\00\00\00\0c\00\00\00S\00t\00r\00i\00n\00g\00") + (data (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00b\00o\00o\00l\00\00\00\00\00") + (data (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\008\00\00\00\00\00\00\00\00\00") + (data (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00u\008\00\00\00\00\00\00\00\00\00") + (data (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\001\006\00\00\00\00\00\00\00") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\001\006\00\00\00\00\00\00\00") + (data (i32.const 604) "\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") + (data (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\003\002\00\00\00\00\00\00\00") + (data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\003\002\00\00\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\06\00\00\00i\006\004\00\00\00\00\00\00\00") + (data (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00u\006\004\00\00\00\00\00\00\00") + (data (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00f\006\004\00\00\00\00\00\00\00") + (data (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00s\00i\00z\00e\00\00\00") + (data (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00u\00s\00i\00z\00e\00\00\00") + (data (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00v\00o\00i\00d\00\00\00\00\00") + (data (i32.const 892) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00o\00m\00e\00 \00v\00a\00l\00u\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") (table $0 4 funcref) (elem (i32.const 1) $start:builtins~anonymous|0 $start:builtins~anonymous|1 $start:builtins~anonymous|2) (global $builtins/b (mut i32) (i32.const 0)) @@ -83,8 +82,11 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) - (export "memory" (memory $0)) + (global $~lib/memory/__data_end i32 (i32.const 1004)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17388)) + (global $~lib/memory/__heap_base i32 (i32.const 17388)) (export "test" (func $builtins/test)) + (export "memory" (memory $0)) (start $~start) (func $start:builtins~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -98,12 +100,6 @@ (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name (param $0 i32) (result i32) i32.const 32 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -118,13 +114,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -211,12 +200,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -231,85 +214,6 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - 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 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 ) (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length (param $0 i32) (result i32) i32.const 2 @@ -474,6 +378,120 @@ i32.const 24 i32.shr_s ) + (func $builtins/test + nop + ) + (func $~start + call $start:builtins + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17408 + i32.const 17456 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) (func $start:builtins (local $0 i32) (local $1 i32) @@ -485,7 +503,17 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 drop i32.const 0 @@ -1820,6 +1848,11 @@ i32.const 2 i32.const 3 global.get $builtins/fn + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index call_indirect (type $i32_i32_=>_i32) i32.eq @@ -1833,9 +1866,23 @@ unreachable end global.get $builtins/fn + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name - local.tee $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 32 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -1847,6 +1894,11 @@ unreachable end global.get $builtins/fn + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -1860,6 +1912,11 @@ unreachable end global.get $builtins/fn + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -1873,9 +1930,23 @@ unreachable end global.get $builtins/fn + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString - local.tee $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 176 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2513,30 +2584,35 @@ unreachable end i32.const 0 - local.set $6 + local.set $1 i32.const 0 + local.set $0 + i32.const 23 + local.set $6 + i32.const 24 local.set $7 - i32.const 25 + i32.const 24 local.set $8 - i32.const 26 - local.set $9 - i32.const 26 - local.set $10 i32.const 256 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 5 + local.get $1 + f64.convert_i32_u + local.get $0 + f64.convert_i32_u local.get $6 f64.convert_i32_u local.get $7 f64.convert_i32_u local.get $8 f64.convert_i32_u - local.get $9 - f64.convert_i32_u - local.get $10 - f64.convert_i32_u call $~lib/builtins/trace - local.get $6 - local.get $7 + local.get $1 + local.get $0 i32.eq i32.eqz if @@ -2547,8 +2623,8 @@ call $~lib/builtins/abort unreachable end + local.get $1 local.get $6 - local.get $8 i32.ne i32.eqz if @@ -2559,8 +2635,8 @@ call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 25 + local.get $6 + i32.const 23 i32.eq i32.eqz if @@ -2571,8 +2647,8 @@ call $~lib/builtins/abort unreachable end - local.get $9 - local.get $10 + local.get $7 + local.get $8 i32.eq i32.eqz if @@ -2584,7 +2660,17 @@ unreachable end i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2596,7 +2682,17 @@ unreachable end i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2608,7 +2704,17 @@ unreachable end i32.const 400 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 400 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2620,7 +2726,17 @@ unreachable end i32.const 432 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 432 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2632,7 +2748,17 @@ unreachable end i32.const 464 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 464 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2644,7 +2770,17 @@ unreachable end i32.const 496 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 496 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2656,7 +2792,17 @@ unreachable end i32.const 528 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 528 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2668,7 +2814,17 @@ unreachable end i32.const 560 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 560 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2680,7 +2836,17 @@ unreachable end i32.const 592 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 592 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2692,7 +2858,17 @@ unreachable end i32.const 624 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 624 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2704,7 +2880,17 @@ unreachable end i32.const 656 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 656 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2716,7 +2902,17 @@ unreachable end i32.const 688 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 688 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2728,7 +2924,17 @@ unreachable end i32.const 720 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 720 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2740,7 +2946,17 @@ unreachable end i32.const 752 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 752 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2752,7 +2968,17 @@ unreachable end i32.const 784 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 784 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2764,7 +2990,17 @@ unreachable end i32.const 816 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 816 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2776,7 +3012,17 @@ unreachable end i32.const 848 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 848 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2788,7 +3034,17 @@ unreachable end i32.const 880 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 880 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2800,7 +3056,17 @@ unreachable end i32.const 432 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 432 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2812,7 +3078,17 @@ unreachable end i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 i32.const 352 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String.__eq i32.eqz if @@ -2949,15 +3225,9 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $builtins/test - nop - ) - (func $~start - call $start:builtins + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/call-inferred.json b/tests/compiler/call-inferred.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/call-inferred.json +++ b/tests/compiler/call-inferred.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index a4cedf2b19..2df8300883 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -1,5 +1,6 @@ (module (memory $0 1) - (data (i32.const 1036) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index 6de1e833e5..f961acc585 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -6,9 +6,12 @@ (type $f64_=>_f64 (func (param f64) (result f64))) (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\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $~argumentsLength (mut i32) (i32.const 0)) + (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)) (export "memory" (memory $0)) (start $~start) (func $call-inferred/foo (param $0 i32) (result i32) diff --git a/tests/compiler/call-optional.json b/tests/compiler/call-optional.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/call-optional.json +++ b/tests/compiler/call-optional.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index 9d5adfed08..d3b4c09d21 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -4,8 +4,10 @@ (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\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") - (data (i32.const 1100) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") + (data (i32.const 1100) "\1c") + (data (i32.const 1112) "\03\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $call-optional/opt@varargs) (global $~argumentsLength (mut i32) (i32.const 0)) diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 912e8f032c..963228927d 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -4,12 +4,15 @@ (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 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $call-optional/opt@varargs) (global $~argumentsLength (mut i32) (i32.const 0)) (global $call-optional/optIndirect (mut i32) (i32.const 96)) + (global $~lib/memory/__data_end i32 (i32.const 108)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16492)) + (global $~lib/memory/__heap_base i32 (i32.const 16492)) (export "memory" (memory $0)) (start $~start) (func $call-optional/opt (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/call-super.json b/tests/compiler/call-super.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/call-super.json +++ b/tests/compiler/call-super.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 276cfd4e06..61a7affee9 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1,75 +1,1322 @@ (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))) + (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_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\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) "\0d\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1516) " \00\00\00\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\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\n\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0c\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17980)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17980 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 273 + 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 1440 + i32.const 275 + 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 1440 + i32.const 288 + 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 1440 + i32.const 201 + 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 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 $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 1440 + i32.const 224 + 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 1440 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 240 + 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 1440 + i32.const 256 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1073741804 + 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 1440 + i32.const 381 + 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 1440 + i32.const 388 + 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 1440 + i32.const 401 + 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 17984 + i32.const 0 + i32.store + i32.const 19552 + 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 17984 + 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 17984 + 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 17984 + i32.const 19556 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17984 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17980 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + 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 $1 + i32.const 17980 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort unreachable end local.get $0 - i32.const 16 + local.get $2 + i32.const 2 + i32.shl i32.add - local.tee $2 + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 + i32.ge_u if + i32.const 1104 + i32.const 1440 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -83,63 +1330,435 @@ 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 1440 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1440 + i32.const 502 + 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 $3 + local.get $2 i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1440 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 - i32.const 0 - i32.store offset=8 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1104 + i32.const 1168 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + 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 - local.get $4 - i32.const 16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~start + (func $call-super/test2 (local $0 i32) - i32.const 1084 - global.set $~lib/rt/stub/offset + (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 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 3 - call $~lib/rt/stub/__new + 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 8 + i32.const 5 + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 2 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/stub/__new - local.set $0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $0 i32.load i32.const 1 @@ -147,7 +1766,7 @@ if i32.const 0 i32.const 1056 - i32.const 15 + i32.const 38 i32.const 5 call $~lib/builtins/abort unreachable @@ -159,11 +1778,17 @@ if i32.const 0 i32.const 1056 - i32.const 16 + i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 @@ -171,7 +1796,7 @@ if i32.const 0 i32.const 1056 - i32.const 22 + i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable @@ -183,24 +1808,64 @@ if i32.const 0 i32.const 1056 - i32.const 23 + i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/test3 + (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 $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 5 - call $~lib/rt/stub/__new + 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 8 + i32.const 7 + call $~lib/rt/itcms/__new local.tee $0 - i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 6 - call $~lib/rt/stub/__new - local.set $0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 @@ -212,23 +1877,26 @@ if i32.const 0 i32.const 1056 - i32.const 38 + i32.const 56 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - i32.load offset=4 i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 @@ -236,7 +1904,7 @@ if i32.const 0 i32.const 1056 - i32.const 45 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable @@ -248,40 +1916,83 @@ if i32.const 0 i32.const 1056 - i32.const 46 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/test4 + (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 $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 7 - call $~lib/rt/stub/__new + 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 8 + i32.const 9 + call $~lib/rt/itcms/__new local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 8 - call $~lib/rt/stub/__new - local.set $0 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 56 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $0 i32.const 2 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 @@ -289,7 +2000,7 @@ if i32.const 0 i32.const 1056 - i32.const 66 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable @@ -301,28 +2012,83 @@ if i32.const 0 i32.const 1056 - i32.const 67 + i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/test5 + (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 $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 9 - call $~lib/rt/stub/__new + 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 8 + i32.const 11 + call $~lib/rt/itcms/__new local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 10 - call $~lib/rt/stub/__new - local.set $0 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 2 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 @@ -330,7 +2096,7 @@ if i32.const 0 i32.const 1056 - i32.const 84 + i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable @@ -342,28 +2108,204 @@ if i32.const 0 i32.const 1056 - i32.const 85 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + i32.const 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 + call $call-super/B#constructor + local.tee $0 + i32.store + local.get $0 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 23 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $call-super/test2 + call $call-super/test3 + call $call-super/test4 + call $call-super/test5 + ) + (func $~stack_check + 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 + ) + (func $call-super/B#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 11 - call $~lib/rt/stub/__new + 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 8 + i32.const 3 + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 12 - call $~lib/rt/stub/__new - local.set $0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 i32.store local.get $0 - i32.const 2 - i32.store offset=4 + i32.load + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 @@ -371,8 +2313,8 @@ if i32.const 0 i32.const 1056 - i32.const 104 - i32.const 3 + i32.const 15 + i32.const 5 call $~lib/builtins/abort unreachable end @@ -383,10 +2325,15 @@ if i32.const 0 i32.const 1056 - i32.const 105 - i32.const 3 + i32.const 16 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index a050928226..18455d9c8d 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -1,168 +1,2357 @@ (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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00c\00a\00l\00l\00-\00s\00u\00p\00e\00r\00.\00t\00s\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) "\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\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\06\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\n\00\00\00 \00\00\00\00\00\00\00 \00\00\00\0c\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/memory/__heap_base i32 (i32.const 60)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/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)) + (global $~lib/memory/__heap_base i32 (i32.const 16956)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 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 $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 416 + i32.const 224 + 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 416 + i32.const 239 + 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 416 + i32.const 240 + 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 416 + i32.const 256 + 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 416 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 80 + i32.const 416 + i32.const 462 + 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 416 + i32.const 334 + 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 347 + 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 - i32.const 15 + local.set $1 + local.get $1 + i32.const 65535 i32.add - i32.const 15 + i32.const 65535 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub + 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/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $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.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 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 i32.const -1 i32.xor i32.and - local.set $2 - local.get $0 local.get $2 - i32.gt_u + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.const 12 + i32.add + i32.ge_u if - local.get $0 + 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 65535 + 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 - i32.const 65535 + local.get $5 + i32.load + i32.const 3 i32.const -1 i32.xor i32.and - i32.const 16 - i32.shr_u + 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 500 + 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 502 + 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.tee $4 + 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 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 80 + i32.const 144 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $call-super/A#set:a (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) - (func $call-super/A#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 + (func $call-super/B#set:b (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 + local.get $1 + i32.store offset=4 + ) + (func $call-super/test1 + (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 $call-super/B#constructor + local.tee $0 i32.store local.get $0 i32.load @@ -172,29 +2361,54 @@ if i32.const 0 i32.const 32 - i32.const 6 - i32.const 5 + i32.const 22 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - ) - (func $call-super/B#constructor (param $0 i32) (result i32) - local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq i32.eqz if - i32.const 8 + i32.const 0 + i32.const 32 + i32.const 23 i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/C#set:a (param $0 i32) (param $1 i32) local.get $0 - i32.const 2 - i32.store offset=4 + local.get $1 + i32.store + ) + (func $call-super/D#set:b (param $0 i32) (param $1 i32) local.get $0 - call $call-super/A#constructor - local.set $0 + local.get $1 + i32.store offset=4 + ) + (func $call-super/test2 + (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 $call-super/D#constructor + local.tee $0 + i32.store local.get $0 i32.load i32.const 1 @@ -203,8 +2417,8 @@ if i32.const 0 i32.const 32 - i32.const 15 - i32.const 5 + i32.const 45 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -216,21 +2430,41 @@ if i32.const 0 i32.const 32 - i32.const 16 - i32.const 5 + i32.const 46 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/E#set:a (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) - (func $~lib/rt/stub/__release (param $0 i32) - nop + (func $call-super/F#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 ) - (func $call-super/test1 + (func $call-super/test3 (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 - call $call-super/B#constructor - local.set $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/F#constructor + local.tee $0 + i32.store local.get $0 i32.load i32.const 1 @@ -239,7 +2473,7 @@ if i32.const 0 i32.const 32 - i32.const 22 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable @@ -252,45 +2486,41 @@ if i32.const 0 i32.const 32 - i32.const 23 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $call-super/C#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + (func $call-super/G#set:a (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 + local.get $1 i32.store - local.get $0 ) - (func $call-super/D#constructor (param $0 i32) (result i32) + (func $call-super/H#set:b (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 2 + local.get $1 i32.store offset=4 - local.get $0 - call $call-super/C#constructor - local.set $0 + ) + (func $call-super/test4 + (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 $call-super/H#constructor + local.tee $0 + i32.store local.get $0 i32.load i32.const 1 @@ -299,8 +2529,8 @@ if i32.const 0 i32.const 32 - i32.const 38 - i32.const 5 + i32.const 84 + i32.const 3 call $~lib/builtins/abort unreachable end @@ -312,18 +2542,41 @@ if i32.const 0 i32.const 32 - i32.const 39 - i32.const 5 + i32.const 85 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $call-super/I#set:a (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) - (func $call-super/test2 + (func $call-super/J#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $call-super/test5 (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 - call $call-super/D#constructor - local.set $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $call-super/J#constructor + local.tee $0 + i32.store local.get $0 i32.load i32.const 1 @@ -332,7 +2585,7 @@ if i32.const 0 i32.const 32 - i32.const 45 + i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable @@ -345,26 +2598,152 @@ if i32.const 0 i32.const 32 - i32.const 46 + i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:call-super + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $call-super/test1 + call $call-super/test2 + call $call-super/test3 + call $call-super/test4 + call $call-super/test5 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 272 local.get $0 - call $~lib/rt/stub/__release + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $call-super/E#constructor (param $0 i32) (result i32) + (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 $call-super/I + block $call-super/J + block $call-super/G + block $call-super/H + block $call-super/E + block $call-super/F + block $call-super/C + block $call-super/D + block $call-super/A + block $call-super/B + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $call-super/B $call-super/A $call-super/D $call-super/C $call-super/F $call-super/E $call-super/H $call-super/G $call-super/J $call-super/I $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:call-super + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16976 + i32.const 17024 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $call-super/B#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.eqz if - i32.const 4 + global.get $~lib/memory/__stack_pointer i32.const 8 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - i32.const 1 + i32.const 2 + call $call-super/B#set:b + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/A#constructor + local.tee $0 i32.store local.get $0 i32.load @@ -374,36 +2753,65 @@ if i32.const 0 i32.const 32 - i32.const 56 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $call-super/F#constructor (param $0 i32) (result i32) + (func $call-super/D#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8 - i32.const 7 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $call-super/E#constructor - local.set $0 - local.get $0 i32.const 2 - i32.store offset=4 + call $call-super/D#set:b + global.get $~lib/memory/__stack_pointer local.get $0 - ) - (func $call-super/test3 - (local $0 i32) - i32.const 0 - call $call-super/F#constructor - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/C#constructor + local.tee $0 + i32.store local.get $0 i32.load i32.const 1 @@ -412,8 +2820,8 @@ if i32.const 0 i32.const 32 - i32.const 66 - i32.const 3 + i32.const 38 + i32.const 5 call $~lib/builtins/abort unreachable end @@ -425,119 +2833,240 @@ if i32.const 0 i32.const 32 - i32.const 67 - i32.const 3 + i32.const 39 + i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $call-super/G#constructor (param $0 i32) (result i32) + (func $call-super/F#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.eqz if - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $call-super/E#constructor + local.tee $0 i32.store local.get $0 + i32.const 2 + call $call-super/F#set:b + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $call-super/H#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8 i32.const 9 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $call-super/G#constructor - local.set $0 + local.tee $0 + i32.store local.get $0 i32.const 2 + call $call-super/H#set:b + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/J#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $1 + call $call-super/I#constructor + local.tee $0 + i32.store + local.get $0 + i32.const 2 + call $call-super/J#set:b local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $call-super/test4 - (local $0 i32) + (func $call-super/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 - call $call-super/H#constructor - local.set $0 + i32.store local.get $0 - i32.load - i32.const 1 - i32.eq i32.eqz if - i32.const 0 - i32.const 32 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.load offset=4 - i32.const 2 + i32.const 1 + call $call-super/A#set:a + local.get $0 + i32.load + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 85 - i32.const 3 + i32.const 6 + i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $call-super/I#constructor (param $0 i32) (result i32) + (func $call-super/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 4 - i32.const 12 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 - i32.store + call $call-super/C#set:a 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 $call-super/J#constructor (param $0 i32) (result i32) + (func $call-super/E#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 8 - i32.const 11 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $call-super/I#constructor - local.set $0 - local.get $0 - i32.const 2 - i32.store offset=4 - local.get $0 - ) - (func $call-super/test5 - (local $0 i32) - i32.const 0 - call $call-super/J#constructor - local.set $0 + i32.const 1 + call $call-super/E#set:a local.get $0 i32.load i32.const 1 @@ -546,49 +3075,79 @@ if i32.const 0 i32.const 32 - i32.const 104 - i32.const 3 + i32.const 56 + i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - i32.load offset=4 - i32.const 2 - i32.eq + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/G#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 - i32.const 0 - i32.const 32 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $~lib/rt/stub/__release - ) - (func $start:call-super - global.get $~lib/memory/__heap_base + i32.const 1 + call $call-super/G#set:a + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $call-super/I#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $call-super/test1 - call $call-super/test2 - call $call-super/test3 - call $call-super/test4 - call $call-super/test5 - ) - (func $~start - call $start:call-super + 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 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 1 + call $call-super/I#set:a + 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-abstract-errors.json b/tests/compiler/class-abstract-errors.json index 348da60657..fffa589f5b 100644 --- a/tests/compiler/class-abstract-errors.json +++ b/tests/compiler/class-abstract-errors.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2511: Cannot create an instance of an abstract class.", diff --git a/tests/compiler/class-extends.json b/tests/compiler/class-extends.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/class-extends.json +++ b/tests/compiler/class-extends.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/class-extends.optimized.wat b/tests/compiler/class-extends.optimized.wat index 353e0ea51c..24f0d63114 100644 --- a/tests/compiler/class-extends.optimized.wat +++ b/tests/compiler/class-extends.optimized.wat @@ -1,9 +1,30 @@ (module (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 0) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (export "memory" (memory $0)) - (export "test" (func $class-extends/test)) - (func $class-extends/test (param $0 i32) + (export "test" (func $export:class-extends/test)) + (func $export:class-extends/test (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1024 + i32.lt_s + if + i32.const 17440 + i32.const 17488 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load drop @@ -16,5 +37,9 @@ local.get $0 i32.const 3 i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/class-extends.untouched.wat b/tests/compiler/class-extends.untouched.wat index 4fb41d98ce..de7593d83d 100644 --- a/tests/compiler/class-extends.untouched.wat +++ b/tests/compiler/class-extends.untouched.wat @@ -1,20 +1,27 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result 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))) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) - (export "test" (func $class-extends/test)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (export "test" (func $export:class-extends/test)) + (func $class-extends/A#set:a (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) - (func $~lib/rt/stub/__release (param $0 i32) - nop + (func $class-extends/B#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 offset=4 ) (func $class-extends/test (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.load drop @@ -23,11 +30,38 @@ drop local.get $0 i32.const 2 - i32.store + call $class-extends/A#set:a local.get $0 i32.const 3 - i32.store16 offset=4 + call $class-extends/B#set:b + ) + (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:class-extends/test (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 $~lib/rt/stub/__release + call $class-extends/test + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/class-implements.json b/tests/compiler/class-implements.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/class-implements.json +++ b/tests/compiler/class-implements.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/class-implements.optimized.wat b/tests/compiler/class-implements.optimized.wat index ea5c4529fc..11a421ad49 100644 --- a/tests/compiler/class-implements.optimized.wat +++ b/tests/compiler/class-implements.optimized.wat @@ -1,64 +1,1237 @@ (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_=>_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))) (memory $0 1) - (data (i32.const 1036) "<\00\00\00\01\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") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17948)) (export "A" (global $class-implements/A)) - (export "A#foo" (func $class-implements/A#foo)) - (export "A#constructor" (func $class-implements/A#constructor)) (export "C" (global $class-implements/C)) - (export "C#foo" (func $class-implements/C#foo)) - (export "C#constructor" (func $class-implements/C#constructor)) + (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/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $class-implements/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-implements/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17948 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (local $6 i32) + (local $7 i32) + (local $8 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 $4 + 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - local.tee $3 - i32.const 28 i32.add - local.tee $1 + 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 17952 + i32.const 0 + i32.store + i32.const 19520 + 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 17952 + 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 17952 + 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 17952 + i32.const 19524 memory.size - local.tee $4 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17948 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -66,69 +1239,400 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $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 $class-implements/A#constructor (param $0 i32) (result i32) - local.get $0 - if (result i32) - local.get $0 - else - i32.const 3 - call $~lib/rt/stub/__new + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return end + unreachable ) - (func $class-implements/A#foo (param $0 i32) (result i32) - i32.const 1 + (func $~start + global.get $~lib/memory/__stack_pointer + i32.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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + 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 $~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 $~stack_check + 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 ) (func $class-implements/C#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 5 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - if (result i32) - local.get $0 - else + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 + 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 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#foo (param $0 i32) (result i32) + (func $export:class-implements/A#foo (param $0 i32) (result i32) + global.get $~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 + global.get $~lib/memory/__stack_pointer + 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 + call $~stack_check + 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) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 2 ) - (func $~start - i32.const 1100 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__new - drop - i32.const 0 + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $class-implements/C#constructor - drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index d8923c0fc2..6514b1b32e 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -1,237 +1,2506 @@ (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 $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 $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))) (memory $0 1) - (data (i32.const 12) "<\00\00\00\01\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 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) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $class-implements/a (mut i32) (i32.const 0)) (global $class-implements/c (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 76)) (global $class-implements/A i32 (i32.const 3)) (global $class-implements/C i32 (i32.const 5)) - (export "memory" (memory $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)) (export "A" (global $class-implements/A)) - (export "A#foo" (func $class-implements/A#foo)) - (export "A#constructor" (func $class-implements/A#constructor)) (export "C" (global $class-implements/C)) - (export "C#foo" (func $class-implements/C#foo)) - (export "C#constructor" (func $class-implements/C#constructor)) + (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/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 - i32.sub - i32.const 65535 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - i32.const 65535 - i32.const -1 + 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 273 + 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 368 + i32.const 275 + 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 - i32.and + 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.shr_u + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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 $1 - local.tee $4 local.get $3 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + 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/stub/__retain (param $0 i32) (result i32) + (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 $class-implements/A#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $0 ) - (func $class-implements/A#foo (param $0 i32) (result i32) - i32.const 1 + (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 $class-implements/B#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + (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 0 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 16944 + i32.const 16992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 ) (func $class-implements/C#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $class-implements/B#constructor - local.set $0 + local.tee $0 + i32.store local.get $0 - ) - (func $class-implements/C#foo (param $0 i32) (result i32) - i32.const 2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $start:class-implements - 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 + (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 32 + i32.const 432 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -241,20 +2510,158 @@ 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 32 + 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 $~start - call $start:class-implements + (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 $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.json b/tests/compiler/class-overloading.json index bf222c4d2d..65091e5197 100644 --- a/tests/compiler/class-overloading.json +++ b/tests/compiler/class-overloading.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/class-overloading.optimized.wat b/tests/compiler/class-overloading.optimized.wat index 453d52ad9f..aae84118bf 100644 --- a/tests/compiler/class-overloading.optimized.wat +++ b/tests/compiler/class-overloading.optimized.wat @@ -1,129 +1,1831 @@ (module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (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") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00A") - (data (i32.const 1100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00B") - (data (i32.const 1132) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C") - (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00F") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00B") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00C") - (data (i32.const 1324) "<\00\00\00\01\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") + (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) "\1c") + (data (i32.const 1480) "\01\00\00\00\02\00\00\00A") + (data (i32.const 1500) "\1c") + (data (i32.const 1512) "\01\00\00\00\02\00\00\00B") + (data (i32.const 1532) "<") + (data (i32.const 1544) "\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\02\00\00\00C") + (data (i32.const 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\02\00\00\00F") + (data (i32.const 1660) "\1c") + (data (i32.const 1672) "\01\00\00\00\04\00\00\00I\00B") + (data (i32.const 1692) "\1c") + (data (i32.const 1704) "\01\00\00\00\04\00\00\00I\00C") + (data (i32.const 1724) "<") + (data (i32.const 1736) "\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 1792) "\11\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1820) " \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00 \00\00\00\04\00\00\00 \00\00\00\06\00\00\00 \00\00\00\07\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\00\00\00\00 \00\00\00\0d\00\00\00 \00\00\00\10\00\00\00 ") (global $class-overloading/which (mut i32) (i32.const 1056)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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-overloading/a (mut i32) (i32.const 0)) + (global $class-overloading/c (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $class-overloading/b2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18316)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $class-overloading/which + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18316 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $3 - i32.const 28 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const -4 i32.and local.tee $2 - i32.gt_u + i32.const 1073741820 + i32.lt_u + i32.const 0 + local.get $2 + i32.const 12 + i32.ge_u + select + i32.eqz if - local.get $4 - local.get $1 + i32.const 0 + i32.const 1424 + i32.const 275 + 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.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 i32.shr_u - local.tee $2 + 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 1424 + i32.const 288 + 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.lt_s - select - memory.grow + 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 1424 + i32.const 201 + 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 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1424 + i32.const 224 + 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 1424 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 240 + 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 1424 + i32.const 256 + 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 1424 + i32.const 381 + 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 1424 + i32.const 388 + 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 1424 + i32.const 401 + 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 18320 + i32.const 0 + i32.store + i32.const 19888 + 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 18320 + 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 18320 + 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 18320 + i32.const 19892 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18320 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18316 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18316 + 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 $1 + i32.const 18316 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 1424 + i32.const 500 + 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 1424 + i32.const 502 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + 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 $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 $class-overloading/A#a@virtual (param $0 i32) + (local $1 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $1 + i32.const 4 + i32.eq + local.get $1 + i32.const 6 + i32.eq + i32.or + br_if $case0 + block $tablify|0 + local.get $1 + i32.const 5 + i32.sub + br_table $case1 $tablify|0 $case0 $case2 $tablify|0 + end + br $default + end + i32.const 1520 + global.set $class-overloading/which + return + end + local.get $0 + call $class-overloading/C#a + return + end + i32.const 1648 + global.set $class-overloading/which + return + end + i32.const 1488 + global.set $class-overloading/which + ) + (func $class-overloading/A#b@virtual (param $0 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 4 + i32.eq + local.get $0 + i32.const 6 + i32.eq + i32.or + br_if $case0 + block $tablify|0 + local.get $0 + i32.const 5 + i32.sub + br_table $case1 $tablify|0 $case0 $case2 $tablify|0 + end + br $default + end + i32.const 1520 + global.set $class-overloading/which + return + end + i32.const 1616 + global.set $class-overloading/which + return + end + i32.const 1648 + global.set $class-overloading/which + return + end + i32.const 1488 + global.set $class-overloading/which + ) + (func $class-overloading/IA#foo@virtual (param $0 i32) + block $default + block $case1 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.tee $0 + i32.const 10 + i32.ne + if + local.get $0 + i32.const 12 + i32.eq + br_if $case1 + br $default + end + i32.const 1680 + global.set $class-overloading/which + return + end + i32.const 1712 + global.set $class-overloading/which + return + end + unreachable + ) + (func $class-overloading/A2#foo@virtual (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 14 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.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 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 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 15 + i32.ne if - local.get $2 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + i32.const 1744 + i32.const 1552 + i32.const 186 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + return + end + i32.const 1744 + i32.const 1552 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $class-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return end + return end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1932 + i32.lt_s + if + i32.const 18336 + i32.const 18384 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 - global.set $~lib/rt/stub/offset - i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add ) (func $class-overloading/B#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 4 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - if (result i32) - local.get $0 - else + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -134,13 +1836,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -149,6 +1858,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -161,7 +1876,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -181,10 +1895,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -192,23 +1906,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -225,62 +1939,165 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $class-overloading/C#a - i32.const 1120 + (func $class-overloading/C#a (param $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1520 global.set $class-overloading/which - i32.const 1120 - i32.const 1120 + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + i32.const 1520 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1216 + i32.const 1616 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-overloading/D#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/B#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $class-overloading/E#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 7 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $class-overloading/D#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - if (result i32) - local.get $0 - else - i32.const 6 - call $~lib/rt/stub/__new - end - call $class-overloading/B#constructor ) (func $start:class-overloading (local $0 i32) - i32.const 1388 - global.set $~lib/rt/stub/offset + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $class-overloading/B#constructor global.set $class-overloading/a + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -288,15 +2105,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -304,15 +2132,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -320,34 +2159,80 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $class-overloading/B#constructor - drop + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $class-overloading/c i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + local.tee $0 + i32.store + local.get $0 call $class-overloading/C#a + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1216 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 + local.get $0 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 71 i32.const 1 call $~lib/builtins/abort @@ -355,15 +2240,24 @@ end i32.const 1056 global.set $class-overloading/which - i32.const 1216 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 global.set $class-overloading/which - i32.const 1216 - i32.const 1216 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 74 i32.const 1 call $~lib/builtins/abort @@ -371,49 +2265,77 @@ end i32.const 1056 global.set $class-overloading/which - i32.const 1216 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 global.set $class-overloading/which - i32.const 1216 - i32.const 1216 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1216 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/c + i32.store + i32.const 1616 global.set $class-overloading/which - i32.const 1216 - i32.const 1216 + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=4 + i32.const 1616 + i32.const 1616 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6 - call $~lib/rt/stub/__new - call $class-overloading/B#constructor + i32.const 0 + call $class-overloading/D#constructor global.set $class-overloading/a i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 89 i32.const 1 call $~lib/builtins/abort @@ -421,15 +2343,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 92 i32.const 1 call $~lib/builtins/abort @@ -437,29 +2370,51 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 97 i32.const 1 call $~lib/builtins/abort @@ -470,15 +2425,26 @@ global.set $class-overloading/a i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 107 i32.const 1 call $~lib/builtins/abort @@ -486,15 +2452,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 110 i32.const 1 call $~lib/builtins/abort @@ -502,49 +2479,105 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1120 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1520 + i32.store offset=4 + local.get $0 + i32.const 1520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 8 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $class-overloading/E#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $class-overloading/a i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#a@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1248 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 137 i32.const 1 call $~lib/builtins/abort @@ -552,15 +2585,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1248 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 140 i32.const 1 call $~lib/builtins/abort @@ -568,15 +2612,26 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1248 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 143 i32.const 1 call $~lib/builtins/abort @@ -584,219 +2639,188 @@ end i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/a + local.tee $0 + i32.store + local.get $0 call $class-overloading/A#b@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1248 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 146 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 10 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $class-overloading/ia i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/ia + local.tee $0 + i32.store + local.get $0 call $class-overloading/IA#foo@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1280 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=4 + local.get $0 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 162 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 12 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $class-overloading/ic i32.const 1056 global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer global.get $class-overloading/ic + local.tee $0 + i32.store + local.get $0 call $class-overloading/IA#foo@virtual + global.get $~lib/memory/__stack_pointer global.get $class-overloading/which - i32.const 1312 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=4 + local.get $0 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1552 i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 14 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - if (result i32) - local.get $0 - else + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 13 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $class-overloading/b2 - block $__inlined_func$class-overloading/A2#foo@virtual - global.get $class-overloading/b2 - i32.const 8 - i32.sub - i32.load - i32.const 14 - i32.eq - if - i32.const 15 - call $~lib/rt/stub/__new - local.tee $0 - if (result i32) - local.get $0 - else - i32.const 16 - call $~lib/rt/stub/__new - end - i32.const 8 - i32.sub - i32.load - i32.const 15 - i32.eq - br_if $__inlined_func$class-overloading/A2#foo@virtual - i32.const 1344 - i32.const 1152 - i32.const 186 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 1344 - i32.const 1152 - i32.const 198 - i32.const 5 + global.get $~lib/memory/__stack_pointer + global.get $class-overloading/b2 + local.tee $0 + i32.store + local.get $0 + call $class-overloading/A2#foo@virtual + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 209 + 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:class-overloading - ) - (func $class-overloading/A#a@virtual (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default - end - i32.const 1120 - global.set $class-overloading/which - return - end - call $class-overloading/C#a - return - end - i32.const 1248 - global.set $class-overloading/which - return - end - i32.const 1088 - global.set $class-overloading/which - ) - (func $class-overloading/A#b@virtual (param $0 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 4 - i32.eq - local.get $0 - i32.const 6 - i32.eq - i32.or - br_if $case0 - block $tablify|0 - local.get $0 - i32.const 5 - i32.sub - br_table $case1 $tablify|0 $case0 $case2 $tablify|0 - end - br $default - end - i32.const 1120 - global.set $class-overloading/which - return - end - i32.const 1216 - global.set $class-overloading/which - return - end - i32.const 1248 - global.set $class-overloading/which - return - end - i32.const 1088 - global.set $class-overloading/which - ) - (func $class-overloading/IA#foo@virtual (param $0 i32) - block $default - block $case1 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.tee $0 - i32.const 10 - i32.ne - if - local.get $0 - i32.const 12 - i32.eq - br_if $case1 - br $default - end - i32.const 1280 - global.set $class-overloading/which - return - end - i32.const 1312 - global.set $class-overloading/which - return - end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 2a930ce90f..f13e5ff1f4 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -4,631 +4,976 @@ (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 $none_=>_i32 (func (result 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))) (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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "\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 76) "\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 108) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00") - (data (i32.const 172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\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\01\00\00\00\02\00\00\00F\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\01\00\00\00\04\00\00\00I\00B\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\01\00\00\00\04\00\00\00I\00C\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\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 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "<\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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) "\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 476) "\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 508) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00(\00\00\00c\00l\00a\00s\00s\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00B\00\00\00\00\00\00\00\00\00") + (data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00C\00\00\00\00\00\00\00\00\00") + (data (i32.const 700) "<\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 768) "\11\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\00\00\00 \00\00\00\04\00\00\00 \00\00\00\06\00\00\00 \00\00\00\07\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\00\00\00\00 \00\00\00\0d\00\00\00 \00\00\00\10\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) (global $class-overloading/which (mut i32) (i32.const 32)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $class-overloading/a (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $class-overloading/a (mut i32) (i32.const 0)) (global $class-overloading/c (mut i32) (i32.const 0)) (global $class-overloading/ia (mut i32) (i32.const 0)) (global $class-overloading/ic (mut i32) (i32.const 0)) (global $class-overloading/b2 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 768)) + (global $~lib/memory/__data_end i32 (i32.const 908)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17292)) + (global $~lib/memory/__heap_base i32 (i32.const 17292)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 364)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 128 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 128 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 256 + i32.const 320 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 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 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/Object#set:prev 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) + call $~lib/rt/itcms/Object#set:next + local.get $1 local.get $0 + call $~lib/rt/itcms/Object#set:prev ) - (func $class-overloading/A#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) local.get $0 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + 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 $class-overloading/B#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + return end local.get $0 - call $class-overloading/A#constructor - local.set $0 - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class-overloading/A#a (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 64 + i32.const 20 + i32.sub local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release + i32.const 0 + drop local.get $2 - global.set $class-overloading/which + 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/string/String#get:length (param $0 i32) (result i32) + (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.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add ) - (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 $10 i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 + 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 - i32.shl - i32.add - local.set $5 + drop 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 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 273 + 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 $4 - i32.const 4 + local.get $3 + i32.const 12 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 + local.get $3 + i32.const 1073741820 + i32.lt_u else i32.const 0 end + i32.eqz if - block $do-break|0 - loop $do-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end + i32.const 0 + i32.const 400 + i32.const 275 + i32.const 14 + call $~lib/builtins/abort + unreachable end - loop $while-continue|1 + 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 - local.tee $7 + 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 400 + i32.const 288 + 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 - local.set $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 $5 - i32.load16_u + local.get $0 + local.set $9 + local.get $4 local.set $8 - local.get $6 - i32.load16_u + 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.ne + i32.eqz if - local.get $8 - local.get $9 - i32.sub - local.set $10 local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return + 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 - 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 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop local.get $1 - i32.eq + i32.eqz if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - 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 + i32.const 400 + 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 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/string/String#get:length + local.get $1 local.set $3 local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne + 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 - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release local.get $2 - return + 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 $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $class-overloading/A#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 64 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 64 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/A#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 64 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release + 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 400 + i32.const 224 + 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 - global.set $class-overloading/which - ) - (func $class-overloading/C#constructor (param $0 i32) (result i32) - local.get $0 + 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 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 400 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $class-overloading/B#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/B#a (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 96 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#a (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 + i32.const 1 + drop local.get $1 - call $class-overloading/B#a - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq + i32.const 4 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 52 - i32.const 5 + i32.const 400 + i32.const 240 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 192 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 192 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/C#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 192 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release + local.get $4 + i32.const 4 + i32.sub local.get $1 - global.set $class-overloading/which - i32.const 0 - ) - (func $class-overloading/C#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 192 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/D#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + i32.store + local.get $8 + i32.const 256 + i32.lt_u if i32.const 0 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $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 - local.get $0 - call $class-overloading/B#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/E#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if + 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 - i32.const 7 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 end - local.get $0 - call $class-overloading/D#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/F#constructor (param $0 i32) (result i32) - local.get $0 i32.eqz if i32.const 0 - i32.const 8 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 400 + i32.const 256 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $0 - call $class-overloading/E#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/CA#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + 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 - i32.const 0 - i32.const 10 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $11 + local.get $1 + call $~lib/rt/tlsf/Block#set:prev end local.get $0 - ) - (func $class-overloading/IA#foo (param $0 i32) - unreachable - ) - (func $class-overloading/CC#constructor (param $0 i32) (result i32) + 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 - i32.eqz - if - i32.const 0 - i32.const 12 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end local.get $0 - ) - (func $class-overloading/A2#constructor (param $0 i32) (result i32) + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap local.get $0 - i32.eqz - if - i32.const 0 - i32.const 13 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + 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 $class-overloading/B2#constructor (param $0 i32) (result i32) - local.get $0 + (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 400 + i32.const 381 i32.const 14 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $class-overloading/A2#constructor - local.set $0 - local.get $0 - ) - (func $class-overloading/A2#foo (param $0 i32) (result i32) - i32.const 320 - i32.const 128 - i32.const 198 - i32.const 5 - call $~lib/builtins/abort - unreachable - ) - (func $start:class-overloading - (local $0 i32) - global.get $~lib/memory/__heap_base + local.get $1 i32.const 4 i32.add i32.const 15 @@ -639,917 +984,3356 @@ 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 + 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 - call $class-overloading/B#constructor - global.set $class-overloading/a - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz + local.set $5 + local.get $4 if - i32.const 0 - i32.const 128 - i32.const 38 i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 41 + drop + local.get $1 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 388 + 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 - call $~lib/builtins/abort - unreachable + drop + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz + 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 - i32.const 128 - i32.const 44 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a + 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 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 47 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + 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 $class-overloading/C#constructor - global.set $class-overloading/c - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release + 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 - global.set $class-overloading/which - global.get $class-overloading/c + 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 - call $class-overloading/C#a - global.get $class-overloading/which - i32.const 192 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 71 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 + ) + (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 - global.get $class-overloading/which - call $~lib/rt/stub/__release + memory.size + local.set $1 local.get $0 - global.set $class-overloading/which - global.get $class-overloading/c - i32.const 1 - call $class-overloading/C#b - global.get $class-overloading/which - i32.const 192 - call $~lib/string/String.__eq - i32.eqz - if + 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.const 128 - i32.const 74 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/c - call $class-overloading/C#get:c - drop - global.get $class-overloading/which - i32.const 192 - call $~lib/string/String.__eq - i32.eqz - if + i32.lt_s + else i32.const 0 - i32.const 128 - i32.const 77 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $class-overloading/c - i32.const 1 - call $class-overloading/C#set:c - global.get $class-overloading/which - i32.const 192 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 128 - i32.const 79 - i32.const 1 - call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + local.get $3 i32.const 0 - call $class-overloading/D#constructor - local.set $0 - global.get $class-overloading/a - call $~lib/rt/stub/__release + 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 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release + 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 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if + 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 - i32.const 128 - i32.const 89 + end + if (result i32) + local.get $1 + i32.load i32.const 1 - call $~lib/builtins/abort - unreachable + i32.and + i32.eqz + else + i32.const 0 end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 92 - i32.const 1 + i32.const 400 + i32.const 565 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 drop - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz + 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 - i32.const 0 - i32.const 128 - i32.const 95 - i32.const 1 - call $~lib/builtins/abort - unreachable + return end - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 128 - i32.const 97 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - i32.const 0 - call $class-overloading/E#constructor - local.set $0 - global.get $class-overloading/a - call $~lib/rt/stub/__release + global.get $~lib/rt/tlsf/ROOT local.get $0 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $0 i32) local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__heap_base + i32.lt_u if + local.get $0 i32.const 0 - i32.const 128 - i32.const 107 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 i32.const 0 - i32.const 128 - i32.const 110 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual - drop - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if + 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 - i32.const 128 - i32.const 113 - i32.const 1 - call $~lib/builtins/abort - unreachable + drop + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free end - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 96 - call $~lib/string/String.__eq - i32.eqz - if + ) + (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 + 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 + 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 128 + i32.const 224 + 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 - i32.const 128 - i32.const 115 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.set $~lib/rt/itcms/state + br $break|0 end i32.const 0 - call $class-overloading/F#constructor + ) + (func $~lib/rt/itcms/interrupt + (local $0 i32) + (local $1 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 - global.get $class-overloading/a - call $~lib/rt/stub/__release + loop $do-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 - global.set $class-overloading/a - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release + 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 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#a@virtual - global.get $class-overloading/which - i32.const 224 - call $~lib/string/String.__eq - i32.eqz + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 128 - i32.const 137 - i32.const 1 + i32.const 64 + i32.const 400 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#b@virtual - global.get $class-overloading/which - i32.const 224 - call $~lib/string/String.__eq - i32.eqz + 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 - i32.const 128 - i32.const 140 + 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 - call $~lib/builtins/abort - unreachable + 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 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - call $class-overloading/A#get:c@virtual + i32.const 1 drop - global.get $class-overloading/which - i32.const 224 - call $~lib/string/String.__eq + 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 128 - i32.const 143 - i32.const 1 + i32.const 400 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release local.get $0 - global.set $class-overloading/which - global.get $class-overloading/a - i32.const 1 - call $class-overloading/A#set:c@virtual - global.get $class-overloading/which - i32.const 224 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 146 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + 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 - call $class-overloading/CA#constructor - global.set $class-overloading/ia - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/ia - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 256 - call $~lib/string/String.__eq + 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 128 - i32.const 162 + i32.const -1 + i32.xor + local.get $2 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 400 + i32.const 347 + 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 - call $class-overloading/CC#constructor - global.set $class-overloading/ic - i32.const 32 - local.set $0 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $0 - global.set $class-overloading/which - global.get $class-overloading/ic - call $class-overloading/IA#foo@virtual - global.get $class-overloading/which - i32.const 288 - call $~lib/string/String.__eq - i32.eqz + drop + local.get $1 + i32.const 536870910 + i32.lt_u if - i32.const 0 - i32.const 128 - i32.const 177 + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - call $class-overloading/B2#constructor - global.set $class-overloading/b2 - global.get $class-overloading/b2 - call $class-overloading/A2#foo@virtual - i32.const 3 - i32.eq + 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 128 - i32.const 209 - i32.const 1 + i32.const 400 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - ) - (func $~start - global.get $~started + 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 - return + 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 - i32.const 1 - global.set $~started - call $start:class-overloading ) - (func $class-overloading/F#a (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 224 + (local $3 i32) + local.get $1 + call $~lib/rt/tlsf/prepareSize local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release + local.get $0 local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#a@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - local.get $1 - call $class-overloading/B#a - return - end - local.get $0 - local.get $1 - call $class-overloading/C#a - return - end + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if local.get $0 - local.get $1 - call $class-overloading/F#a - return + 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 400 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - local.get $0 - local.get $1 - call $class-overloading/A#a - ) - (func $class-overloading/B#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 96 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/F#b (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 224 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 502 + 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 - global.set $class-overloading/which + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 ) - (func $class-overloading/A#b@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - local.get $1 - call $class-overloading/B#b - return - end - local.get $0 - local.get $1 - call $class-overloading/C#b - return - end - local.get $0 - local.get $1 - call $class-overloading/F#b - return + (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 - local.get $1 - call $class-overloading/A#b + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add ) - (func $class-overloading/B#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 96 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - global.set $class-overloading/which - i32.const 0 + i32.store offset=12 ) - (func $class-overloading/F#get:c (param $0 i32) (result i32) - (local $1 i32) - i32.const 224 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - global.set $class-overloading/which - i32.const 0 + i32.store offset=16 ) - (func $class-overloading/A#get:c@virtual (param $0 i32) (result i32) - (local $1 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 4 - i32.eq - br_if $case0 - local.get $1 - i32.const 6 - i32.eq - br_if $case0 - local.get $1 - i32.const 7 - i32.eq - br_if $case0 - local.get $1 - i32.const 5 - i32.eq - br_if $case1 - local.get $1 - i32.const 8 - i32.eq - br_if $case2 - br $default - end - local.get $0 - call $class-overloading/B#get:c - return - end - local.get $0 - call $class-overloading/C#get:c - return - end + (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 - call $class-overloading/F#get:c - return - end - local.get $0 - call $class-overloading/A#get:c - ) - (func $class-overloading/B#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 96 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/F#set:c (param $0 i32) (param $1 i32) - (local $2 i32) - i32.const 224 - local.set $2 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $2 - global.set $class-overloading/which - ) - (func $class-overloading/A#set:c@virtual (param $0 i32) (param $1 i32) - (local $2 i32) - block $default - block $case2 - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $2 - local.get $2 - i32.const 4 - i32.eq - br_if $case0 - local.get $2 - i32.const 6 - i32.eq - br_if $case0 - local.get $2 - i32.const 7 - i32.eq - br_if $case0 - local.get $2 - i32.const 5 - i32.eq - br_if $case1 - local.get $2 - i32.const 8 - i32.eq - br_if $case2 - br $default + 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/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 64 + i32.const 128 + i32.const 256 + 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-overloading/A#a (param $0 i32) (param $1 i32) + i32.const 464 + global.set $class-overloading/which + ) + (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-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne + if + br $do-break|0 end - local.get $0 - local.get $1 - call $class-overloading/B#set:c - return + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 end - local.get $0 - local.get $1 - call $class-overloading/C#set:c - return end - local.get $0 - local.get $1 - call $class-overloading/F#set:c - return end - local.get $0 - local.get $1 - call $class-overloading/A#set:c - ) - (func $class-overloading/CA#foo (param $0 i32) - (local $1 i32) - i32.const 256 - local.set $1 - global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 + 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 $class-overloading/A#b (param $0 i32) (param $1 i32) + i32.const 464 + global.set $class-overloading/which + ) + (func $class-overloading/A#get:c (param $0 i32) (result i32) + i32.const 464 + global.set $class-overloading/which + i32.const 0 + ) + (func $class-overloading/A#set:c (param $0 i32) (param $1 i32) + i32.const 464 + global.set $class-overloading/which + ) + (func $class-overloading/B#a (param $0 i32) (param $1 i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/C#b (param $0 i32) (param $1 i32) + i32.const 592 + global.set $class-overloading/which + ) + (func $class-overloading/C#get:c (param $0 i32) (result i32) + i32.const 592 + global.set $class-overloading/which + i32.const 0 + ) + (func $class-overloading/C#set:c (param $0 i32) (param $1 i32) + i32.const 592 + global.set $class-overloading/which + ) + (func $class-overloading/IA#foo (param $0 i32) + unreachable + ) + (func $class-overloading/A2#foo (param $0 i32) (result i32) + i32.const 720 + i32.const 528 + i32.const 198 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $class-overloading/F#a (param $0 i32) (param $1 i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/A#a@virtual (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 4 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 5 + i32.eq + br_if $case1 + local.get $2 + i32.const 8 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#a + return + end + local.get $0 + local.get $1 + call $class-overloading/C#a + return + end + local.get $0 + local.get $1 + call $class-overloading/F#a + return + end + local.get $0 + local.get $1 + call $class-overloading/A#a + ) + (func $class-overloading/B#b (param $0 i32) (param $1 i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/F#b (param $0 i32) (param $1 i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/A#b@virtual (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 4 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 5 + i32.eq + br_if $case1 + local.get $2 + i32.const 8 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#b + return + end + local.get $0 + local.get $1 + call $class-overloading/C#b + return + end + local.get $0 + local.get $1 + call $class-overloading/F#b + return + end + local.get $0 + local.get $1 + call $class-overloading/A#b + ) + (func $class-overloading/B#get:c (param $0 i32) (result i32) + i32.const 496 + global.set $class-overloading/which + i32.const 0 + ) + (func $class-overloading/F#get:c (param $0 i32) (result i32) + i32.const 624 + global.set $class-overloading/which + i32.const 0 + ) + (func $class-overloading/A#get:c@virtual (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.eq + br_if $case0 + local.get $1 + i32.const 6 + i32.eq + br_if $case0 + local.get $1 + i32.const 7 + i32.eq + br_if $case0 + local.get $1 + i32.const 5 + i32.eq + br_if $case1 + local.get $1 + i32.const 8 + i32.eq + br_if $case2 + br $default + end + local.get $0 + call $class-overloading/B#get:c + return + end + local.get $0 + call $class-overloading/C#get:c + return + end + local.get $0 + call $class-overloading/F#get:c + return + end + local.get $0 + call $class-overloading/A#get:c + ) + (func $class-overloading/B#set:c (param $0 i32) (param $1 i32) + i32.const 496 + global.set $class-overloading/which + ) + (func $class-overloading/F#set:c (param $0 i32) (param $1 i32) + i32.const 624 + global.set $class-overloading/which + ) + (func $class-overloading/A#set:c@virtual (param $0 i32) (param $1 i32) + (local $2 i32) + block $default + block $case2 + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $2 + local.get $2 + i32.const 4 + i32.eq + br_if $case0 + local.get $2 + i32.const 6 + i32.eq + br_if $case0 + local.get $2 + i32.const 7 + i32.eq + br_if $case0 + local.get $2 + i32.const 5 + i32.eq + br_if $case1 + local.get $2 + i32.const 8 + i32.eq + br_if $case2 + br $default + end + local.get $0 + local.get $1 + call $class-overloading/B#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/C#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/F#set:c + return + end + local.get $0 + local.get $1 + call $class-overloading/A#set:c + ) + (func $class-overloading/CA#foo (param $0 i32) + i32.const 656 + global.set $class-overloading/which + ) + (func $class-overloading/CC#foo (param $0 i32) + i32.const 688 + global.set $class-overloading/which + ) + (func $class-overloading/IA#foo@virtual (param $0 i32) + (local $1 i32) + block $default + block $case1 + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 10 + i32.eq + br_if $case0 + local.get $1 + i32.const 12 + i32.eq + br_if $case1 + br $default + end + local.get $0 + call $class-overloading/CA#foo + return + end + local.get $0 + call $class-overloading/CC#foo + return + end + unreachable + ) + (func $class-overloading/A1#baz (param $0 i32) (result i32) + i32.const 720 + i32.const 528 + i32.const 186 + i32.const 5 + call $~lib/builtins/abort + unreachable + ) + (func $class-overloading/A2#foo@virtual (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 14 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $class-overloading/B2#foo + return + end + local.get $0 + call $class-overloading/A2#foo + ) + (func $class-overloading/B1#baz (param $0 i32) (result i32) + i32.const 3 + ) + (func $class-overloading/A1#baz@virtual (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 15 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $class-overloading/B1#baz + return + end + local.get $0 + call $class-overloading/A1#baz + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $class-overloading/which + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ia + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/ic + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $class-overloading/b2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + 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-overloading/A1 + block $class-overloading/B1 + block $class-overloading/B2 + block $class-overloading/A2 + block $class-overloading/CC + block $class-overloading/IC + block $class-overloading/CA + block $class-overloading/IA + block $class-overloading/F + block $class-overloading/E + block $class-overloading/D + block $class-overloading/C + block $class-overloading/B + block $class-overloading/A + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class-overloading/A $class-overloading/B $class-overloading/C $class-overloading/D $class-overloading/E $class-overloading/F $class-overloading/IA $class-overloading/CA $class-overloading/IC $class-overloading/CC $class-overloading/A2 $class-overloading/B2 $class-overloading/B1 $class-overloading/A1 $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:class-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17312 + i32.const 17360 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $class-overloading/B#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/A#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $class-overloading/C#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/B#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/C#a (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + call $class-overloading/B#a + global.get $class-overloading/which + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 496 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + i32.const 592 + global.set $class-overloading/which + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $class-overloading/D#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/B#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/E#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/D#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/F#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/E#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $class-overloading/B2#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $class-overloading/A2#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $start:class-overloading + (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 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $class-overloading/B#constructor + global.set $class-overloading/a + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 41 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@virtual + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 44 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 47 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/C#constructor + global.set $class-overloading/c + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#a + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + 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 528 + i32.const 71 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#b + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + 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 528 + i32.const 74 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/C#get:c + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + 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 528 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/c + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/C#set:c + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 592 + 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 528 + i32.const 79 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/D#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 89 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@virtual + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 95 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/E#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 107 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 110 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@virtual + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 113 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 496 + 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 528 + i32.const 115 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/F#constructor + global.set $class-overloading/a + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#a@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + 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 528 + i32.const 137 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#b@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + 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 528 + i32.const 140 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/A#get:c@virtual + drop + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + 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 528 + i32.const 143 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/a + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $class-overloading/A#set:c@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 624 + 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 528 + i32.const 146 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/CA#constructor + global.set $class-overloading/ia + i32.const 32 + global.set $class-overloading/which + global.get $class-overloading/ia + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/IA#foo@virtual + global.get $class-overloading/which + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 656 + 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 528 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $class-overloading/CC#constructor + global.set $class-overloading/ic + i32.const 32 global.set $class-overloading/which - ) - (func $class-overloading/CC#foo (param $0 i32) - (local $1 i32) - i32.const 288 - local.set $1 + global.get $class-overloading/ic + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $class-overloading/IA#foo@virtual global.get $class-overloading/which - call $~lib/rt/stub/__release - local.get $1 - global.set $class-overloading/which - ) - (func $class-overloading/IA#foo@virtual (param $0 i32) - (local $1 i32) - block $default - block $case1 - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 10 - i32.eq - br_if $case0 - local.get $1 - i32.const 12 - i32.eq - br_if $case1 - br $default - end - local.get $0 - call $class-overloading/CA#foo - return - end - local.get $0 - call $class-overloading/CC#foo - return - end - unreachable - ) - (func $class-overloading/A1#constructor (param $0 i32) (result i32) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 688 + 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 16 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 528 + i32.const 177 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 0 + call $class-overloading/B2#constructor + global.set $class-overloading/b2 + global.get $class-overloading/b2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $class-overloading/A2#foo@virtual + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 209 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $class-overloading/B1#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 i32.const 15 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $class-overloading/A1#constructor - local.set $0 + local.tee $0 + i32.store local.get $0 - ) - (func $class-overloading/A1#baz (param $0 i32) (result i32) - i32.const 320 - i32.const 128 - i32.const 186 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $class-overloading/A1#bar (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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $class-overloading/A1#baz@virtual + 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-overloading/B2#foo (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 i32.const 0 call $class-overloading/B1#constructor - local.tee $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $class-overloading/A1#bar - local.set $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release - local.get $2 ) - (func $class-overloading/A2#foo@virtual (param $0 i32) (result i32) + (func $class-overloading/A#constructor (param $0 i32) (result i32) (local $1 i32) - block $default - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 14 - i32.eq - br_if $case0 - br $default - end - local.get $0 - call $class-overloading/B2#foo - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - call $class-overloading/A2#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 $class-overloading/B1#baz (param $0 i32) (result i32) - i32.const 3 + (func $class-overloading/CA#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 10 + 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-overloading/A1#baz@virtual (param $0 i32) (result i32) + (func $class-overloading/CC#constructor (param $0 i32) (result i32) (local $1 i32) - block $default - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 15 - i32.eq - br_if $case0 - br $default - end - local.get $0 - call $class-overloading/B1#baz - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $class-overloading/A1#baz + 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-overloading/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 0 + i32.const 13 + 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-overloading/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 0 + i32.const 16 + 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 ) ) diff --git a/tests/compiler/class-static-function.json b/tests/compiler/class-static-function.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/class-static-function.json +++ b/tests/compiler/class-static-function.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index d268f609eb..9f1aa2907c 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -4,16 +4,40 @@ (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1068) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "L") + (data (i32.const 1080) "\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") (table $0 2 funcref) (elem (i32.const 1) $class-static-function/Example.staticFunc) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17532)) (export "memory" (memory $0)) (start $~start) (func $class-static-function/Example.staticFunc (result i32) i32.const 42 ) (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1148 + i32.lt_s + if + i32.const 17552 + i32.const 17600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.load call_indirect (type $none_=>_i32) @@ -27,5 +51,9 @@ 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/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index 7ce8a0fc2f..9fc86ddec2 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -1,44 +1,62 @@ (module (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $class-static-function/Example.staticFunc) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 124)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16508)) + (global $~lib/memory/__heap_base i32 (i32.const 16508)) (export "memory" (memory $0)) (start $~start) (func $class-static-function/Example.staticFunc (result i32) i32.const 42 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $class-static-function/call (param $0 i32) (result 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.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 + ) + (func $~start + call $start:class-static-function + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16528 + i32.const 16576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $start:class-static-function + (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 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $class-static-function/call i32.const 42 i32.eq @@ -51,8 +69,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:class-static-function + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/class.json b/tests/compiler/class.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/class.json +++ b/tests/compiler/class.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index d7f79e3653..d0a9353e77 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1,98 +1,1329 @@ (module + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (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 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (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") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) - (export "test" (func $class/test)) + (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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1484) ",") + (data (i32.const 1496) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1536) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1564) " ") + (data (i32.const 1580) "\02\t") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17972)) (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "memory" (memory $0)) + (export "test" (func $export:class/test)) (start $~start) - (func $class/test (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.load - drop local.get $0 - i32.load16_s offset=4 - drop + i32.store offset=4 local.get $0 - i32.load8_s offset=6 - drop local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 17972 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 i32.const 1 - i32.store + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - i32.const 2 - i32.store16 offset=4 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 i32.const 3 - i32.store8 offset=6 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 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 $4 + 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 1073741804 + 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 1392 + i32.const 381 + 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.const 16 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17984 + i32.const 0 + i32.store + i32.const 19552 + 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 17984 + 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 17984 + 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 17984 + i32.const 19556 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17984 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17972 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17972 + 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 $1 + i32.const 17972 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 + i32.ge_u if + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -106,45 +1337,470 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + 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 $3 + local.get $2 i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 - i32.const 0 - i32.store offset=8 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + 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 - local.get $4 - i32.const 16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 290 + 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 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end ) (func $class/testGenericInitializer (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 $~lib/memory/__stack_pointer i32.const 4 i32.const 4 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/array/Array#set:buffer + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -152,16 +1808,18 @@ local.get $0 i32.const 0 i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 0 - call $~lib/rt/stub/__new - local.set $1 - local.get $0 - i32.load - drop + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/memory/memory.fill local.get $0 local.get $1 - i32.store + call $~lib/array/Array#set:buffer local.get $0 local.get $1 i32.store offset=4 @@ -171,11 +1829,128 @@ local.get $0 i32.const 0 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 local.get $0 - i32.store + call $~lib/array/Array#set:buffer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $class/Animal + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $class/Animal $folding-inner0 $~lib/array/Array $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end ) (func $~start - i32.const 1132 - global.set $~lib/rt/stub/offset + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1588 + i32.lt_s + if + i32.const 18000 + i32.const 18048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:class/test (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + drop + local.get $0 + i32.load16_s offset=4 + drop + local.get $0 + i32.load8_s offset=6 + drop + local.get $0 + i32.const 1 + i32.store + local.get $0 + i32.const 2 + i32.store16 offset=4 + local.get $0 + i32.const 3 + i32.store8 offset=6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 58b82853c2..c7fff347bf 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -1,26 +1,49 @@ (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_=>_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))) (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_f32_f32_=>_f32 (func (param i32 f32 f32) (result f32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (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 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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data (i32.const 460) ",\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 512) "\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\02\t\00\00\00\00\00\00") (table $0 1 funcref) (global $class/Animal.ONE (mut i32) (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) - (export "test" (func $class/test)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 16948)) (export "testGenericInitializer" (func $class/testGenericInitializer)) + (export "memory" (memory $0)) + (export "test" (func $export:class/test)) (start $~start) (func $class/Animal.add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -53,9 +76,6 @@ call $class/Animal.sub drop ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) (func $class/Animal#instanceAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 @@ -71,216 +91,2063 @@ f32.convert_i32_s f32.add ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $class/test (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + (func $class/Animal#set:one (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 - i32.const 2 - call $class/Animal#instanceAdd - drop + local.get $1 + i32.store + ) + (func $class/Animal#set:two (param $0 i32) (param $1 i32) local.get $0 - f32.const 1 - f32.const 2 - call $class/Animal#instanceSub - drop + local.get $1 + i32.store16 offset=4 + ) + (func $class/Animal#set:three (param $0 i32) (param $1 i32) local.get $0 - i32.load - drop + local.get $1 + i32.store8 offset=6 + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.load16_s offset=4 - drop + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) local.get $0 - i32.load8_s offset=6 - drop + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 0 - i32.const 1 - i32.add - i32.store local.get $0 - i32.const 1 - i32.const 1 - i32.add - i32.store16 offset=4 + call $~lib/rt/itcms/Object#set:nextWithColor local.get $0 - i32.const 1 - i32.const 1 - i32.add - i32.const 1 - i32.add - i32.store8 offset=6 local.get $0 - local.set $1 - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 - local.get $2 - local.set $3 + call $~lib/rt/itcms/Object#set:prev local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + i32.load offset=4 + i32.const 3 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 + i32.const 20 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 + local.set $2 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 + drop local.get $2 - i32.const 16 - i32.add + 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/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 + (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 - local.set $4 + global.get $~lib/memory/__heap_base + i32.lt_u + local.set $2 local.get $2 - local.set $3 - i32.const 0 - i32.const 1 + 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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 @@ -435,83 +2302,429 @@ 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.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 256 + 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 290 + 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 $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/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 $class/GenericInitializer#set:foo (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 $class/testGenericInitializer + i32.const 0 + call $class/GenericInitializer#constructor + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $class/GenericInitializer~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/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $class/GenericInitializer + block $class/Animal + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $class/Animal $class/GenericInitializer $~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 $class/GenericInitializer~visit + return end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:class + 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 16976 + i32.const 17024 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end ) + (func $class/test (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + i32.const 2 + call $class/Animal#instanceAdd + drop + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + f32.const 1 + f32.const 2 + call $class/Animal#instanceSub + drop + local.get $0 + i32.load + drop + local.get $0 + i32.load16_s offset=4 + drop + local.get $0 + i32.load8_s offset=6 + drop + local.get $0 + i32.const 0 + i32.const 1 + i32.add + call $class/Animal#set:one + local.get $0 + i32.const 1 + i32.const 1 + i32.add + call $class/Animal#set:two + local.get $0 + i32.const 1 + i32.const 1 + i32.add + i32.const 1 + i32.add + call $class/Animal#set:three + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) (func $~lib/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 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $~lib/array/Array#set:buffer local.get $0 i32.const 0 - i32.store offset=4 + call $~lib/array/Array#set:dataStart local.get $0 i32.const 0 - i32.store offset=8 + call $~lib/array/Array#set:byteLength local.get $0 i32.const 0 - i32.store offset=12 + 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 57 + i32.const 432 + i32.const 480 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable @@ -520,79 +2733,86 @@ i32.const 2 i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 - call $~lib/rt/stub/__new - local.set $3 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 i32.const 0 local.get $2 call $~lib/memory/memory.fill local.get $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/stub/__retain - local.set $5 - local.get $6 - call $~lib/rt/stub/__release - end - local.get $5 - i32.store + call $~lib/array/Array#set:buffer local.get $0 local.get $3 - i32.store offset=4 + call $~lib/array/Array#set:dataStart local.get $0 local.get $2 - i32.store offset=8 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#set:length_ 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 $class/GenericInitializer#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/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 i32.const 0 call $~lib/array/Array#constructor - i32.store + call $class/GenericInitializer#set:foo local.get $0 - ) - (func $class/testGenericInitializer - i32.const 0 - call $class/GenericInitializer#constructor - call $~lib/rt/stub/__release - ) - (func $~start - call $start:class - global.get $~lib/memory/__heap_base + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:class/test (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + 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/test + 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/closure.json b/tests/compiler/closure.json index 1a61979c47..d4aa655329 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -1,11 +1,13 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS100: Not implemented: Closures", + "$local1; // closure 1", "AS100: Not implemented: Closures", - "Cannot find name '$local0'.", + "$local0; // closure 2", + "AS100: Not implemented: Closures", + "$local0; // closure 3", "EOF" ] } \ No newline at end of file diff --git a/tests/compiler/closure.ts b/tests/compiler/closure.ts index cd1bca4d89..c542f3b1a7 100644 --- a/tests/compiler/closure.ts +++ b/tests/compiler/closure.ts @@ -1,6 +1,6 @@ function testParam($local0: i32, $local1: i32): (value: i32) => i32 { return function inner(value: i32) { - return $local1; // closure + return $local1; // closure 1 }; } testParam(1, 2); @@ -8,7 +8,7 @@ testParam(1, 2); function testVar(): (value: i32) => i32 { var $local0 = 0; return function inner(value: i32) { - return $local0; // closure + return $local0; // closure 2 }; } testVar(); @@ -16,7 +16,7 @@ testVar(); function testLet(): (value: i32) => i32 { let $local0 = 0; return function inner(value: i32) { - return $local0; // closure + return $local0; // closure 3 }; } testLet(); diff --git a/tests/compiler/comma.json b/tests/compiler/comma.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/comma.json +++ b/tests/compiler/comma.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index 6b9fbf5b10..f8743b6dde 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -3,7 +3,8 @@ (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\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s") (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 78f1d8a4e2..ee5fadb3bc 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -3,10 +3,13 @@ (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\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00c\00o\00m\00m\00a\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) (export "memory" (memory $0)) (start $~start) (func $start:comma diff --git a/tests/compiler/const-folding.json b/tests/compiler/const-folding.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/const-folding.json +++ b/tests/compiler/const-folding.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/const-folding.optimized.wat b/tests/compiler/const-folding.optimized.wat index 14b4c71317..4ceec9de33 100644 --- a/tests/compiler/const-folding.optimized.wat +++ b/tests/compiler/const-folding.optimized.wat @@ -1,8 +1,8 @@ (module (type $i64_=>_i64 (func (param i64) (result i64))) (memory $0 0) - (export "memory" (memory $0)) (export "test" (func $const-folding/test)) + (export "memory" (memory $0)) (func $const-folding/test (param $0 i64) (result i64) local.get $0 i64.const 1 diff --git a/tests/compiler/const-folding.untouched.wat b/tests/compiler/const-folding.untouched.wat index 251ac9f6a8..b94b51887c 100644 --- a/tests/compiler/const-folding.untouched.wat +++ b/tests/compiler/const-folding.untouched.wat @@ -2,8 +2,11 @@ (type $i64_=>_i64 (func (param i64) (result i64))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "test" (func $const-folding/test)) + (export "memory" (memory $0)) (func $const-folding/test (param $0 i64) (result i64) (local $1 i64) (local $2 i64) diff --git a/tests/compiler/constant-assign.json b/tests/compiler/constant-assign.json index 76d94db1ce..93add47109 100644 --- a/tests/compiler/constant-assign.json +++ b/tests/compiler/constant-assign.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2540: Cannot assign to", "b = 3;", diff --git a/tests/compiler/constructor.json b/tests/compiler/constructor.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/constructor.json +++ b/tests/compiler/constructor.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index cbd3c05ba4..11a81495b2 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1,72 +1,1390 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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) "\0d\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 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $constructor/emptyCtor (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) + (global $constructor/emptyCtorWithFieldAccess (mut i32) (i32.const 0)) + (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 $~lib/memory/__stack_pointer (mut i32) (i32.const 17932)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $constructor/emptyCtor + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorReturns + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturns + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 17932 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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.get $0 - i32.const 1073741804 - i32.gt_u + (local $8 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 $0 - i32.const 16 + local.get $1 + i32.load + local.tee $4 + 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - local.tee $4 + 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 17936 + i32.const 0 + i32.store + i32.const 19504 + 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 17936 + 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 17936 + 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 17936 + i32.const 19508 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17936 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17932 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17932 + 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 $1 + i32.const 17932 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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.ge_u + if + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -80,78 +1398,655 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + 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 $3 + local.get $2 i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 - i32.const 0 - i32.store offset=8 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + 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 - local.get $4 - i32.const 16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~start + (func $start:constructor (local $0 i32) - i32.const 1036 - global.set $~lib/rt/stub/offset + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 3 - call $~lib/rt/stub/__new - drop + 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 $constructor/emptyCtor + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 4 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldInit + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldNoInit + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 6 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/emptyCtorWithFieldAccess + global.get $~lib/memory/__stack_pointer + i32.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 7 - call $~lib/rt/stub/__new - drop + 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 $constructor/none + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 8 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $constructor/justFieldInit + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 9 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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 + 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 11 - call $~lib/rt/stub/__new - drop + call $~lib/rt/itcms/__new + i32.store + global.get $~lib/memory/__stack_pointer + 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 + 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 12 - call $~lib/rt/stub/__new - drop + 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 $constructor/ctorConditionallyReturnsThis + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:constructor + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1548 + i32.lt_s + if + i32.const 17952 + i32.const 18000 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index b2a7dcabc5..9aaf01a45a 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -1,12 +1,37 @@ (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 $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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) "\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\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $constructor/emptyCtor (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldInit (mut i32) (i32.const 0)) (global $constructor/emptyCtorWithFieldNoInit (mut i32) (i32.const 0)) @@ -18,348 +43,2818 @@ (global $constructor/b (mut i32) (i32.const 1)) (global $constructor/ctorConditionallyReturns (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyReturnsThis (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 524)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16908)) + (global $~lib/memory/__heap_base i32 (i32.const 16908)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $constructor/EmptyCtorWithFieldInit#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $constructor/EmptyCtorWithFieldNoInit#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $constructor/EmptyCtorWithFieldAccess#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $constructor/JustFieldInit#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $constructor/JustFieldNoInit#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $constructor/CtorReturns#constructor (param $0 i32) (result i32) + i32.const 0 + ) + (func $start:constructor + 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 $constructor/EmptyCtor#constructor + global.set $constructor/emptyCtor + i32.const 0 + call $constructor/EmptyCtorWithFieldInit#constructor + global.set $constructor/emptyCtorWithFieldInit + i32.const 0 + call $constructor/EmptyCtorWithFieldNoInit#constructor + global.set $constructor/emptyCtorWithFieldNoInit + i32.const 0 + call $constructor/EmptyCtorWithFieldAccess#constructor + global.set $constructor/emptyCtorWithFieldAccess + i32.const 0 + call $constructor/None#constructor + global.set $constructor/none + i32.const 0 + call $constructor/JustFieldInit#constructor + global.set $constructor/justFieldInit + i32.const 0 + call $constructor/JustFieldNoInit#constructor + global.set $constructor/justFieldNoInit + i32.const 0 + call $constructor/CtorReturns#constructor + global.set $constructor/ctorReturns + i32.const 0 + call $constructor/CtorConditionallyReturns#constructor + global.set $constructor/ctorConditionallyReturns + i32.const 0 + call $constructor/CtorConditionallyReturnsThis#constructor + global.set $constructor/ctorConditionallyReturnsThis + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $constructor/emptyCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/emptyCtorWithFieldAccess + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/none + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/justFieldNoInit + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturns + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $constructor/ctorConditionallyReturnsThis + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 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 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $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 + i32.load + local.tee $2 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 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $constructor/CtorConditionallyReturnsThis + block $constructor/CtorConditionallyReturns + block $constructor/CtorReturns + block $constructor/JustFieldNoInit + block $constructor/JustFieldInit + block $constructor/None + block $constructor/EmptyCtorWithFieldAccess + block $constructor/EmptyCtorWithFieldNoInit + block $constructor/EmptyCtorWithFieldInit + block $constructor/EmptyCtor + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $constructor/EmptyCtor $constructor/EmptyCtorWithFieldInit $constructor/EmptyCtorWithFieldNoInit $constructor/EmptyCtorWithFieldAccess $constructor/None $constructor/JustFieldInit $constructor/JustFieldNoInit $constructor/CtorReturns $constructor/CtorConditionallyReturns $constructor/CtorConditionallyReturnsThis $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 + return + end + return + end + return + end + return end + return end + return end - local.get $0 - global.set $~lib/rt/stub/offset + unreachable ) - (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 $~start + call $start:constructor ) - (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 + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if + i32.const 16928 + i32.const 16976 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort unreachable end - i32.const 16 - local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 + ) + (func $constructor/EmptyCtor#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer 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 $constructor/EmptyCtor#constructor (param $0 i32) (result i32) + i32.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 $constructor/EmptyCtorWithFieldInit#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/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 - i32.store + call $constructor/EmptyCtorWithFieldInit#set:a 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 $constructor/EmptyCtorWithFieldNoInit#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 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $constructor/EmptyCtorWithFieldNoInit#set:a 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 $constructor/EmptyCtorWithFieldAccess#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 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $constructor/EmptyCtorWithFieldAccess#set:a local.get $0 i32.const 1 - i32.store + call $constructor/EmptyCtorWithFieldAccess#set:a 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 $constructor/None#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 7 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 $constructor/JustFieldInit#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 8 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 - i32.store + call $constructor/JustFieldInit#set:a 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 $constructor/JustFieldNoInit#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 9 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $constructor/JustFieldNoInit#set:a local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $constructor/CtorReturns#constructor (param $0 i32) (result i32) - (local $1 i32) - i32.const 0 - call $~lib/rt/stub/__retain local.set $1 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) (func $constructor/CtorConditionallyReturns#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/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end global.get $constructor/b if i32.const 0 - call $~lib/rt/stub/__retain local.set $1 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 return 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 $constructor/CtorConditionallyReturnsThis#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 12 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end global.get $constructor/b if 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 return end local.get $0 - ) - (func $start:constructor - global.get $~lib/memory/__heap_base + local.set $1 + global.get $~lib/memory/__stack_pointer 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 $constructor/EmptyCtor#constructor - global.set $constructor/emptyCtor - i32.const 0 - call $constructor/EmptyCtorWithFieldInit#constructor - global.set $constructor/emptyCtorWithFieldInit - i32.const 0 - call $constructor/EmptyCtorWithFieldNoInit#constructor - global.set $constructor/emptyCtorWithFieldNoInit - i32.const 0 - call $constructor/EmptyCtorWithFieldAccess#constructor - global.set $constructor/emptyCtorWithFieldAccess - i32.const 0 - call $constructor/None#constructor - global.set $constructor/none - i32.const 0 - call $constructor/JustFieldInit#constructor - global.set $constructor/justFieldInit - i32.const 0 - call $constructor/JustFieldNoInit#constructor - global.set $constructor/justFieldNoInit - i32.const 0 - call $constructor/CtorReturns#constructor - global.set $constructor/ctorReturns - i32.const 0 - call $constructor/CtorConditionallyReturns#constructor - global.set $constructor/ctorConditionallyReturns - i32.const 0 - call $constructor/CtorConditionallyReturnsThis#constructor - global.set $constructor/ctorConditionallyReturnsThis - ) - (func $~start - call $start:constructor + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/continue.json b/tests/compiler/continue.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/continue.json +++ b/tests/compiler/continue.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/continue.optimized.wat b/tests/compiler/continue.optimized.wat index c4032c074a..a1ca0b86db 100644 --- a/tests/compiler/continue.optimized.wat +++ b/tests/compiler/continue.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_none (func (param i32))) (memory $0 0) - (export "memory" (memory $0)) (export "testInherit" (func $continue/testInherit)) + (export "memory" (memory $0)) (func $continue/testInherit (param $0 i32) (local $1 i32) loop $for-loop|0 diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.untouched.wat index 6b5f9ae38d..6b11eccd06 100644 --- a/tests/compiler/continue.untouched.wat +++ b/tests/compiler/continue.untouched.wat @@ -2,8 +2,11 @@ (type $i32_=>_none (func (param i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "testInherit" (func $continue/testInherit)) + (export "memory" (memory $0)) (func $continue/testInherit (param $0 i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/converge.json b/tests/compiler/converge.json index 47fbd0fb4f..cde60dc56e 100644 --- a/tests/compiler/converge.json +++ b/tests/compiler/converge.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--converge" ] } \ No newline at end of file diff --git a/tests/compiler/converge.optimized.wat b/tests/compiler/converge.optimized.wat index 46afa2e4ab..a79d9a2846 100644 --- a/tests/compiler/converge.optimized.wat +++ b/tests/compiler/converge.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (memory $0 0) - (export "memory" (memory $0)) (export "test" (func $converge/test)) + (export "memory" (memory $0)) (func $converge/test nop ) diff --git a/tests/compiler/converge.untouched.wat b/tests/compiler/converge.untouched.wat index ce4bd8d183..13889be0e5 100644 --- a/tests/compiler/converge.untouched.wat +++ b/tests/compiler/converge.untouched.wat @@ -2,8 +2,11 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "test" (func $converge/test)) + (export "memory" (memory $0)) (func $converge/test nop ) diff --git a/tests/compiler/declare.json b/tests/compiler/declare.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/declare.json +++ b/tests/compiler/declare.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat index ea4fe7c7d7..aa5e08296f 100644 --- a/tests/compiler/declare.optimized.wat +++ b/tests/compiler/declare.optimized.wat @@ -7,7 +7,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~start diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index e63d56a541..393787b3e8 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -7,8 +7,11 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "declare" "my.externalFunction" (func $declare/my.externalFunction)) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:declare diff --git a/tests/compiler/do.json b/tests/compiler/do.json index d8f53d9b42..5709811e4b 100644 --- a/tests/compiler/do.json +++ b/tests/compiler/do.json @@ -1,6 +1,3 @@ { - "asc_flags": [ - "--runtime half" - ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index cb44224960..8f392d173e 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,21 +1,248 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (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 $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))) (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\00d\00o\00.\00t\00s") - (data (i32.const 1068) "<\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 1132) "<\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 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/\00t\00l\00s\00f\00.\00t\00s") - (global $do/ran (mut i32) (i32.const 0)) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") + (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 1472) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1500) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17892)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17892 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -29,8 +256,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 272 + i32.const 1424 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -49,8 +276,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 274 + i32.const 1424 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,8 +319,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 287 + i32.const 1424 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -184,8 +411,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 200 + i32.const 1424 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,8 +425,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 202 + i32.const 1424 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -271,8 +498,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 223 + i32.const 1424 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -326,23 +553,23 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 238 + i32.const 1424 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1216 - i32.const 239 + i32.const 1424 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +616,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 255 + i32.const 1424 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -459,8 +686,8 @@ i32.gt_u if i32.const 0 - i32.const 1216 - i32.const 380 + i32.const 1424 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -487,8 +714,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 387 + i32.const 1424 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -515,8 +742,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 400 + i32.const 1424 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -563,74 +790,399 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 0 + end + if + unreachable + end + i32.const 17904 + i32.const 0 + i32.store + i32.const 19472 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 17904 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 17904 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + br $for-loop|0 end end + i32.const 17904 + i32.const 19476 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17904 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17892 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17892 + 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 $1 + i32.const 17892 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 @@ -679,8 +1231,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 498 + i32.const 1424 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -694,8 +1246,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 500 + i32.const 1424 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -762,177 +1314,10 @@ 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 1264 - i32.const 0 - i32.store - i32.const 2832 - 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 1264 - 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 1264 - 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 1264 - i32.const 2836 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1264 - 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 1260 - 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 1152 - 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 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1260 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) (func $start:do (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 - global.set $do/ran i32.const 10 local.set $0 loop $do-continue|0 @@ -966,10 +1351,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran i32.const 10 local.set $1 loop $do-continue|00 @@ -992,10 +1373,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran i32.const 0 local.set $0 i32.const 10 @@ -1074,10 +1451,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran i32.const 0 local.set $0 loop $do-continue|012 @@ -1100,8 +1473,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran i32.const 0 local.set $0 loop $do-continue|02 @@ -1125,20 +1496,6 @@ unreachable end i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran - i32.const 0 local.set $0 loop $do-continue|03 local.get $0 @@ -1160,10 +1517,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - i32.const 0 - global.set $do/ran i32.const 0 local.set $1 i32.const 0 @@ -1210,42 +1563,48 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 - global.set $do/ran - i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain local.set $1 - loop $do-continue|05 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.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 + call $do/Ref#constructor + i32.store + loop $do-continue|06 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 local.set $0 - local.get $1 - if - local.get $1 - call $~lib/rt/pure/__release - end else - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + call $do/Ref#constructor + local.tee $0 + i32.store end local.get $0 - local.tee $1 - br_if $do-continue|05 + br_if $do-continue|06 end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1256,7 +1615,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1265,54 +1624,42 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - global.get $do/ran - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 156 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $do/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain local.set $1 - loop $do-continue|06 + global.get $~lib/memory/__stack_pointer + i32.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 + call $do/Ref#constructor + local.tee $0 + i32.store + loop $do-continue|07 block $do-break|0 - local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if - local.get $1 - if - local.get $1 - call $~lib/rt/pure/__release - end i32.const 0 - local.set $1 + local.set $0 br $do-break|0 end - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 - br_if $do-continue|06 + call $do/Ref#constructor + br_if $do-continue|07 end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1323,7 +1670,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 if i32.const 0 i32.const 1056 @@ -1332,116 +1679,180 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release - global.get $do/ran - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1056 - i32.const 176 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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/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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $do/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/Ref $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:do + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1508 + i32.lt_s if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.eq + ) + (func $do/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 local.get $0 - i32.load offset=20 - local.tee $1 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $1 - i32.const 1260 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 + br $__inlined_func$~lib/rt/itcms/interrupt end - br $__inlined_func$~lib/rt/__visit_members + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - 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 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $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 - call $start:do + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + 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 $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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/do.ts b/tests/compiler/do.ts index c7de4222eb..a432165aad 100644 --- a/tests/compiler/do.ts +++ b/tests/compiler/do.ts @@ -174,3 +174,5 @@ function testRefAutorelease(): void { ran = false; testRefAutorelease(); assert(ran); + +__collect(); diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 851aa458b1..f392e8698e 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -3,22 +3,41 @@ (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 $none_=>_i32 (func (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_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 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00\00\00") - (data (i32.const 44) "<\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 108) "<\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 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/\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 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00\00\00") + (data (i32.const 44) "<\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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 448) "\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) (global $do/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 236)) + (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 484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16868)) + (global $~lib/memory/__heap_base i32 (i32.const 16868)) (export "memory" (memory $0)) (start $~start) (func $do/testSimple @@ -433,6 +452,324 @@ i32.const 1 global.set $do/ran ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 128 + 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 128 + 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 256 + i32.const 320 + 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 128 + 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) @@ -455,8 +792,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 272 + i32.const 400 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -482,8 +819,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 274 + i32.const 400 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -536,8 +873,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 287 + i32.const 400 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -552,13 +889,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -644,7 +981,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -668,8 +1005,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 200 + i32.const 400 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -685,8 +1022,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 202 + i32.const 400 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -739,7 +1076,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -780,8 +1117,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 223 + i32.const 400 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -814,7 +1151,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -823,7 +1160,7 @@ 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 @@ -845,8 +1182,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 238 + i32.const 400 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -863,8 +1200,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 239 + i32.const 400 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -922,8 +1259,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 255 + i32.const 400 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -947,15 +1284,15 @@ 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 @@ -983,7 +1320,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -1027,8 +1364,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 380 + i32.const 400 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -1070,8 +1407,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 387 + i32.const 400 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1103,8 +1440,8 @@ i32.eqz if i32.const 0 - i32.const 192 i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1141,13 +1478,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 @@ -1158,7 +1495,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 @@ -1185,6 +1522,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 @@ -1227,7 +1566,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 @@ -1315,6 +1654,334 @@ 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 400 + i32.const 565 + 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 + 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 + 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 128 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1341,8 +2008,8 @@ i32.ge_u if i32.const 64 - i32.const 192 - i32.const 461 + i32.const 400 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1425,8 +2092,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 333 + i32.const 400 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1490,8 +2157,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 346 + i32.const 400 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1641,8 +2308,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 360 + i32.const 400 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1667,7 +2334,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 @@ -1680,7 +2347,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 @@ -1691,7 +2358,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 @@ -1721,7 +2388,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) @@ -1750,8 +2417,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 498 + i32.const 400 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1770,8 +2437,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 500 + i32.const 400 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1799,141 +2466,300 @@ 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 64 - i32.const 128 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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.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 128 - i32.const 109 + 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 - call $~lib/builtins/abort - unreachable + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 64 i32.const 128 - i32.const 112 - i32.const 14 + i32.const 256 + i32.const 31 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - ) - (func $do/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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 - ) - (func $~lib/rt/pure/__release (param $0 i32) + 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 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end + call $~lib/memory/memory.fill + local.get $3 ) (func $do/testRef (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $do/Ref#constructor - local.set $1 + local.tee $1 + i32.store loop $do-continue|0 local.get $0 i32.const 1 @@ -1943,31 +2769,17 @@ i32.eq if i32.const 0 - 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 else + global.get $~lib/memory/__stack_pointer i32.const 0 call $do/Ref#constructor - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - local.set $1 + local.tee $1 + i32.store end local.get $1 - local.set $3 - local.get $3 + local.set $2 + local.get $2 br_if $do-continue|0 end local.get $0 @@ -1995,8 +2807,10 @@ end i32.const 1 global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $do/getRef (result i32) i32.const 0 @@ -2006,12 +2820,21 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $do/Ref#constructor - local.set $1 + local.tee $1 + i32.store block $do-break|0 loop $do-continue|0 local.get $0 @@ -2022,27 +2845,12 @@ i32.eq if i32.const 0 - 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 br $do-break|0 end call $do/getRef - local.tee $2 - local.set $3 + local.set $2 local.get $2 - call $~lib/rt/pure/__release - local.get $3 br_if $do-continue|0 end end @@ -2071,8 +2879,65 @@ end i32.const 1 global.set $do/ran - local.get $1 - call $~lib/rt/pure/__release + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop ) (func $start:do i32.const 0 @@ -2206,6 +3071,15 @@ end i32.const 0 global.set $do/ran + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $do/testRef global.get $do/ran i32.eqz @@ -2230,149 +3104,16 @@ call $~lib/builtins/abort unreachable end + call $~lib/rt/itcms/__collect ) - (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/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) + (func $~lib/rt/__visit_globals (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 128 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:do - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + i32.const 256 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 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + i32.const 64 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 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -2382,12 +3123,9 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) - (func $do/Ref~visit (param $0 i32) (param $1 i32) - nop - ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) block $invalid block $do/Ref @@ -2400,14 +3138,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $do/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 @@ -2415,11 +3147,52 @@ call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $do/Ref~visit return end unreachable ) + (func $~start + call $start:do + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16896 + i32.const 16944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $do/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 + 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 + ) ) diff --git a/tests/compiler/duplicate-identifier.json b/tests/compiler/duplicate-identifier.json index de16d18c48..522a879cd9 100644 --- a/tests/compiler/duplicate-identifier.json +++ b/tests/compiler/duplicate-identifier.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2300: Duplicate identifier 'a'", "var a: f32", "var a: i32", diff --git a/tests/compiler/runtime-full.json b/tests/compiler/empty-exportruntime.json similarity index 53% rename from tests/compiler/runtime-full.json rename to tests/compiler/empty-exportruntime.json index a499d3adfc..016a0919ff 100644 --- a/tests/compiler/runtime-full.json +++ b/tests/compiler/empty-exportruntime.json @@ -1,5 +1,5 @@ { "asc_flags": [ - "--runtime full" + "--exportRuntime" ] } diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat new file mode 100644 index 0000000000..ff25c17101 --- /dev/null +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -0,0 +1,1859 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 1500) "<") + (data (i32.const 1512) "\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 1568) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 1568)) + (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) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 17980 + 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 + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + 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 $0 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $2 + local.get $0 + local.tee $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1568 + i32.load + i32.gt_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 1572 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $0 + local.get $1 + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17984 + i32.const 0 + i32.store + i32.const 19552 + 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 17984 + 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 17984 + 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 17984 + i32.const 19556 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17984 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 17980 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17980 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + 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 $1 + i32.const 17980 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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.ge_u + if + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 + 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 $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 1392 + i32.const 500 + 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 1392 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 333 + 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.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 347 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + 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) + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/empty-exportruntime.ts b/tests/compiler/empty-exportruntime.ts new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/tests/compiler/empty-exportruntime.ts @@ -0,0 +1 @@ + diff --git a/tests/allocators/rt-full/untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat similarity index 54% rename from tests/allocators/rt-full/untouched.wat rename to tests/compiler/empty-exportruntime.untouched.wat index 6cccacf1fa..3c8703c4f4 100644 --- a/tests/allocators/rt-full/untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -1,35 +1,368 @@ (module - (type $i32_=>_none (func (param i32))) (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 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (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 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") - (data (i32.const 76) "\1e\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") - (data (i32.const 140) "\1e\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") - (data (i32.const 204) "\1e\00\00\00\01\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") - (data (i32.const 256) "\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") + (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\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 476) "<\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 544) "\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") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 256)) - (global $~lib/heap/__heap_base i32 (i32.const 284)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 16956)) + (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 "heap.alloc" (func $~lib/heap/heap.alloc)) - (export "heap.realloc" (func $~lib/heap/heap.realloc)) - (export "heap.free" (func $~lib/heap/heap.free)) - (export "heap.reset" (func $~lib/heap/heap.reset)) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -52,8 +385,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 368 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -79,8 +412,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 368 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -133,8 +466,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 368 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -149,13 +482,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -241,7 +574,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -265,8 +598,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -282,8 +615,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -336,7 +669,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -377,8 +710,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -411,7 +744,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -420,7 +753,7 @@ 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 @@ -442,8 +775,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -460,8 +793,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -519,8 +852,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -544,15 +877,15 @@ 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 @@ -580,7 +913,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -624,8 +957,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -667,8 +1000,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -700,8 +1033,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -738,13 +1071,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 @@ -755,7 +1088,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 @@ -782,7 +1115,9 @@ (local $10 i32) (local $11 i32) (local $12 i32) - global.get $~lib/heap/__heap_base + i32.const 0 + drop + global.get $~lib/memory/__heap_base i32.const 15 i32.add i32.const 15 @@ -824,7 +1159,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 @@ -912,6 +1247,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -938,8 +1601,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1022,8 +1685,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1087,8 +1750,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1238,8 +1901,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1264,7 +1927,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 @@ -1277,7 +1940,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 @@ -1288,7 +1951,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 @@ -1318,7 +1981,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) @@ -1347,8 +2010,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1367,8 +2030,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1396,1784 +2059,460 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - 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 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 160 - 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/heap/__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 + local.get $1 + i32.store offset=16 ) - (func $~lib/rt/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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.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 $9 i64) + (local $10 i32) + block $~lib/util/memory/memset|inlined.0 local.get $0 + local.set $5 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock + local.set $4 + local.get $2 + local.set $3 i32.const 0 + i32.const 1 + i32.gt_s 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 $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end local.get $5 - i32.const 4 + local.get $3 i32.add - local.get $8 + 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.xor + 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.ge_u + i32.const 8 + i32.le_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 + br $~lib/util/memory/memset|inlined.0 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/heap/__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 32 - i32.const 96 - 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 + 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 32 i32.const 96 - i32.const 109 - i32.const 3 + i32.const 256 + 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 - i32.const 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 - i32.store offset=4 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 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 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/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment - end local.get $0 + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u if local.get $0 i32.const 20 i32.sub - call $~lib/rt/pure/decrement + local.set $1 + local.get $1 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 432 + i32.const 96 + i32.const 333 + 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 - ) - (func $~lib/heap/heap.alloc (param $0 i32) (result i32) local.get $0 - call $~lib/rt/tlsf/__alloc - ) - (func $~lib/heap/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) + (func $~lib/rt/itcms/__unpin (param $0 i32) + (local $1 i32) local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - global.get $~lib/rt/tlsf/ROOT i32.eqz if - call $~lib/rt/tlsf/initialize + return end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/heap/heap.free (param $0 i32) - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $~lib/rt/tlsf/__reset - i32.const 224 - i32.const 160 - i32.const 598 - i32.const 3 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/heap/heap.reset - call $~lib/rt/tlsf/__reset - ) - (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) local.get $0 - i32.load offset=4 + i32.const 20 + i32.sub 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 + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.ne if - i32.const 0 + i32.const 496 i32.const 96 - i32.const 122 - i32.const 14 + i32.const 347 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/rt/itcms/state i32.const 1 i32.eq if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize + call $~lib/rt/itcms/Object#makeGray 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 - 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 + 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/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u + (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 - return + 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 - i32.const 1 + call $~lib/rt/itcms/step drop - i32.const 1 + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 drop - local.get $1 - i32.const 1 - i32.eq - i32.eqz - if + i32.const 0 + if (result i32) + i32.const 1 + else i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 496 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default + 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 $~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 $invalid + end + return end return end local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit return end unreachable ) + (func $~start + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) ) diff --git a/tests/compiler/runtime-stub.json b/tests/compiler/empty-new.json similarity index 54% rename from tests/compiler/runtime-stub.json rename to tests/compiler/empty-new.json index c07784ffe0..1bdd02b1be 100644 --- a/tests/compiler/runtime-stub.json +++ b/tests/compiler/empty-new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime stub" ] } diff --git a/tests/compiler/empty-new.optimized.wat b/tests/compiler/empty-new.optimized.wat new file mode 100644 index 0000000000..4bd0f4986c --- /dev/null +++ b/tests/compiler/empty-new.optimized.wat @@ -0,0 +1,1421 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (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_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))) + (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) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17852 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17856 + i32.const 0 + i32.store + i32.const 19424 + 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 17856 + 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 17856 + 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 17856 + i32.const 19428 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17856 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 17852 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17852 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17852 + 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 $1 + i32.const 17852 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 1392 + i32.const 500 + 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 502 + 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/__visit_members (param $0 i32) + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + 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 $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + ) +) diff --git a/tests/compiler/empty-new.ts b/tests/compiler/empty-new.ts new file mode 100644 index 0000000000..2898c62b8e --- /dev/null +++ b/tests/compiler/empty-new.ts @@ -0,0 +1 @@ +__new(0, 0); diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat new file mode 100644 index 0000000000..a437b48708 --- /dev/null +++ b/tests/compiler/empty-new.untouched.wat @@ -0,0 +1,2390 @@ +(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 $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))) + (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) "\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") + (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/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)) + (global $~lib/memory/__heap_base i32 (i32.const 16828)) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $start:empty-new + 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 + i32.const 0 + call $~lib/rt/itcms/__new + 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 $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + 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 $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:empty-new + ) +) diff --git a/tests/compiler/empty-use.json b/tests/compiler/empty-use.json index 38253855dc..f7ec67e6e9 100644 --- a/tests/compiler/empty-use.json +++ b/tests/compiler/empty-use.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--use Date=" ], "stderr": [ diff --git a/tests/compiler/empty.json b/tests/compiler/empty.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/empty.json +++ b/tests/compiler/empty.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/empty.untouched.wat b/tests/compiler/empty.untouched.wat index bffe105a3d..525dea1bed 100644 --- a/tests/compiler/empty.untouched.wat +++ b/tests/compiler/empty.untouched.wat @@ -1,5 +1,8 @@ (module (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) ) diff --git a/tests/compiler/enum.json b/tests/compiler/enum.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/enum.json +++ b/tests/compiler/enum.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/enum.optimized.wat b/tests/compiler/enum.optimized.wat index 2e78dc7d1e..c871b2c766 100644 --- a/tests/compiler/enum.optimized.wat +++ b/tests/compiler/enum.optimized.wat @@ -28,7 +28,6 @@ (global $enum/SelfReference.ONE i32 (i32.const 1)) (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) - (export "memory" (memory $0)) (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) (export "Implicit.ONE" (global $enum/Implicit.ONE)) (export "Implicit.TWO" (global $enum/Implicit.TWO)) @@ -57,4 +56,5 @@ (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) + (export "memory" (memory $0)) ) diff --git a/tests/compiler/enum.untouched.wat b/tests/compiler/enum.untouched.wat index 52614c23fd..33434c9321 100644 --- a/tests/compiler/enum.untouched.wat +++ b/tests/compiler/enum.untouched.wat @@ -34,7 +34,9 @@ (global $enum/SelfReferenceConst.ZERO i32 (i32.const 0)) (global $enum/SelfReferenceConst.ONE i32 (i32.const 1)) (global $enum/enumType (mut i32) (i32.const 0)) - (export "memory" (memory $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)) (export "Implicit.ZERO" (global $enum/Implicit.ZERO)) (export "Implicit.ONE" (global $enum/Implicit.ONE)) (export "Implicit.TWO" (global $enum/Implicit.TWO)) @@ -63,6 +65,7 @@ (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) + (export "memory" (memory $0)) (start $~start) (func $enum/getZero (result i32) i32.const 0 diff --git a/tests/compiler/export-default.json b/tests/compiler/export-default.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/export-default.json +++ b/tests/compiler/export-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/export-default.optimized.wat b/tests/compiler/export-default.optimized.wat index db7ec48854..3d4b1febf3 100644 --- a/tests/compiler/export-default.optimized.wat +++ b/tests/compiler/export-default.optimized.wat @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (memory $0 0) - (export "memory" (memory $0)) (export "theDefault" (func $export-default/theDefault)) (export "default" (func $export-default/theDefault)) + (export "memory" (memory $0)) (func $export-default/theDefault nop ) diff --git a/tests/compiler/export-default.untouched.wat b/tests/compiler/export-default.untouched.wat index 58b12218e0..d38d43417c 100644 --- a/tests/compiler/export-default.untouched.wat +++ b/tests/compiler/export-default.untouched.wat @@ -2,9 +2,12 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "theDefault" (func $export-default/theDefault)) (export "default" (func $export-default/theDefault)) + (export "memory" (memory $0)) (func $export-default/theDefault nop ) diff --git a/tests/compiler/export-generic.json b/tests/compiler/export-generic.json index 1b7c4aae33..98f5dfcd76 100644 --- a/tests/compiler/export-generic.json +++ b/tests/compiler/export-generic.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS232: Exported generic function or class has no concrete instances.", diff --git a/tests/compiler/export.json b/tests/compiler/export.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/export.json +++ b/tests/compiler/export.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/export.optimized.wat b/tests/compiler/export.optimized.wat index dac2708915..ccb781001d 100644 --- a/tests/compiler/export.optimized.wat +++ b/tests/compiler/export.optimized.wat @@ -5,7 +5,6 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -14,6 +13,7 @@ (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 local.get $1 diff --git a/tests/compiler/export.untouched.wat b/tests/compiler/export.untouched.wat index 2b27851289..f00e32303e 100644 --- a/tests/compiler/export.untouched.wat +++ b/tests/compiler/export.untouched.wat @@ -6,7 +6,9 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (export "memory" (memory $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)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -15,6 +17,7 @@ (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 local.get $1 diff --git a/tests/compiler/exportimport-table.json b/tests/compiler/exportimport-table.json index 99ea3c7483..673cf3c31c 100644 --- a/tests/compiler/exportimport-table.json +++ b/tests/compiler/exportimport-table.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--importTable", "--exportTable" ] diff --git a/tests/compiler/exportimport-table.optimized.wat b/tests/compiler/exportimport-table.optimized.wat index ad21bdd64f..395044c102 100644 --- a/tests/compiler/exportimport-table.optimized.wat +++ b/tests/compiler/exportimport-table.optimized.wat @@ -3,7 +3,8 @@ (import "env" "table" (table $0 2 funcref)) (elem (i32.const 1) $start:exportimport-table~anonymous|0) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") (export "memory" (memory $0)) (export "table" (table $0)) (func $start:exportimport-table~anonymous|0 diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.untouched.wat index 5e06adff68..7b31dc0ae6 100644 --- a/tests/compiler/exportimport-table.untouched.wat +++ b/tests/compiler/exportimport-table.untouched.wat @@ -3,8 +3,11 @@ (import "env" "table" (table $0 2 funcref)) (elem (i32.const 1) $start:exportimport-table~anonymous|0) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\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\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (global $exportimport-table/f (mut i32) (i32.const 32)) + (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)) (export "memory" (memory $0)) (export "table" (table $0)) (start $~start) diff --git a/tests/compiler/exports-lazy.json b/tests/compiler/exports-lazy.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/exports-lazy.json +++ b/tests/compiler/exports-lazy.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/exports-lazy.optimized.wat b/tests/compiler/exports-lazy.optimized.wat index c9407f72d8..f086b6b05d 100644 --- a/tests/compiler/exports-lazy.optimized.wat +++ b/tests/compiler/exports-lazy.optimized.wat @@ -1,14 +1,10 @@ (module - (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01") + (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) ",\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\0c\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") (global $exports-lazy/lazyGlobalUsed i32 (i32.const 1088)) - (export "memory" (memory $0)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) - (export "lazyFuncUsed" (func $exports-lazy/lazyFuncUsed)) - (func $exports-lazy/lazyFuncUsed - nop - ) + (export "memory" (memory $0)) ) diff --git a/tests/compiler/exports-lazy.untouched.wat b/tests/compiler/exports-lazy.untouched.wat index b8dfc482d8..7e225ea9b8 100644 --- a/tests/compiler/exports-lazy.untouched.wat +++ b/tests/compiler/exports-lazy.untouched.wat @@ -1,13 +1,15 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\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\01\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 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") (table $0 1 funcref) (global $exports-lazy/lazyGlobalUsed i32 (i32.const 64)) - (export "memory" (memory $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)) (export "lazyGlobalUsed" (global $exports-lazy/lazyGlobalUsed)) - (export "lazyFuncUsed" (func $exports-lazy/lazyFuncUsed)) + (export "memory" (memory $0)) (start $~start) (func $start:exports-lazy (local $0 i32) diff --git a/tests/compiler/exports.json b/tests/compiler/exports.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/exports.json +++ b/tests/compiler/exports.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index f6bd5cb29e..173cb5ca3a 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1,11 +1,26 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) - (memory $0 0) + (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) "<") + (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 ") (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)) @@ -13,11 +28,20 @@ (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/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "add" (func $exports/add)) (export "subOpt" (func $exports/subOpt@varargs)) (export "math.sub" (func $exports/subOpt)) @@ -26,85 +50,1216 @@ (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#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:doors)) - (export "Car#set:numDoors" (func $exports/Car#set:doors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) (export "Car.TIRES" (global $exports/Car.TIRES)) (export "Car.getNumTires" (func $exports/Car.getNumTires)) (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car#get:doors" (func $exports/Car#get:doors)) - (export "vehicles.Car#set:doors" (func $exports/Car#set:doors)) - (export "vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $exports/Car#get:doors)) - (export "vehicles.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "vehicles.Car#openDoors" (func $exports/Car#openDoors)) (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) + ) + (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/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - i32.sub + call $~lib/rt/tlsf/insertBlock ) - (func $exports/Car.getNumTires (result i32) - i32.const 4 - ) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $3 - i32.const 28 - i32.add - local.tee $1 memory.size - local.tee $4 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 17872 + 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 17872 + i32.const 19444 + memory.size i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -112,51 +1267,203 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - ) - (func $exports/Car#get:doors (param $0 i32) (result i32) + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 local.get $0 - i32.load - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 local.get $0 - local.get $1 - i32.store - ) - (func $exports/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 $~start - i32.const 1036 - global.set $~lib/rt/stub/offset - ) (func $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 @@ -175,7 +1482,108 @@ local.get $1 i32.sub ) - (func $exports/Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (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 $~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 + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + 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 + ) + (func $export:exports/Car#get:doors (param $0 i32) (result i32) + global.get $~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 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + i32.store + 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) + global.get $~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 block $1of1 block $0of1 block $outOfRange @@ -187,12 +1595,22 @@ i32.const 2 local.set $1 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 0 + i32.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 3 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 local.get $1 @@ -200,9 +1618,39 @@ 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 + ) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $1of1 block $0of1 block $outOfRange @@ -214,12 +1662,22 @@ i32.const 2 local.set $1 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 0 + i32.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 local.get $1 @@ -227,10 +1685,14 @@ 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 ) - (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 index 8197ffe91b..f777d383e5 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -1,11 +1,24 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (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 $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (memory $0 0) + (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))) + (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) (global $exports/Animal.CAT i32 (i32.const 0)) (global $exports/Animal.DOG i32 (i32.const 1)) @@ -17,13 +30,25 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (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 8)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $~argumentsLength (mut i32) (i32.const 0)) (global $exports/Car i32 (i32.const 3)) (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $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)) (export "add" (func $exports/add)) (export "subOpt" (func $exports/subOpt@varargs)) (export "math.sub" (func $exports/math.sub)) @@ -32,26 +57,27 @@ (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#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) (export "Car.TIRES" (global $exports/Car.TIRES)) (export "Car.getNumTires" (func $exports/Car.getNumTires)) (export "vehicles.Car" (global $exports/vehicles.Car)) - (export "vehicles.Car#get:doors" (func $exports/vehicles.Car#get:doors)) - (export "vehicles.Car#set:doors" (func $exports/vehicles.Car#set:doors)) - (export "vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "vehicles.Car#get:numDoors" (func $exports/vehicles.Car#get:numDoors)) - (export "vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors)) - (export "vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors)) (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 @@ -71,245 +97,2344 @@ (func $exports/Car.getNumTires (result i32) global.get $exports/Car.TIRES ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $exports/Car#set:doors (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return 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 + 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 - 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 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741804 + 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 - 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.const 4 i32.add - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $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 - i32.store + 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 - i32.store local.get $0 + call $~lib/rt/itcms/Object#set:prev ) - (func $exports/Car#get:doors (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) local.get $0 - i32.load - ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) + 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 - local.get $1 - i32.store - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) + call $~lib/rt/itcms/Object#unlink local.get $0 - i32.load - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) + global.get $~lib/rt/itcms/toSpace local.get $0 - local.get $1 - i32.store - ) - (func $exports/Car#openDoors (param $0 i32) - nop - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES + 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 $exports/vehicles.Car#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 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 + return end local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store - 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 $exports/vehicles.Car#get:doors (param $0 i32) (result i32) + (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 $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (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) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#openDoors (param $0 i32) - nop + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 ) - (func $export/mul (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.mul + i32.store offset=8 ) - (func $~start - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add + (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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 - i32.const 15 - i32.const -1 - i32.xor - i32.and + call $~lib/rt/tlsf/__alloc i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + 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 @@ -361,8 +2486,364 @@ 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 + 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.json b/tests/compiler/exportstar-rereexport.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/exportstar-rereexport.json +++ b/tests/compiler/exportstar-rereexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index b8f338982e..76b9c98bce 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1,20 +1,47 @@ (module - (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_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result 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 1036) ",\00\00\00\01\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") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (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 1484) ",") + (data (i32.const 1496) "\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1536) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1564) " ") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17956)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -29,55 +56,1204 @@ (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) + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 273 + 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 1440 + i32.const 275 + 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 1440 + i32.const 288 + 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 1440 + i32.const 201 + 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 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 $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 1440 + i32.const 224 + 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 1440 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 240 + 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 1440 + i32.const 256 + 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 1440 + i32.const 381 + 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 1440 + i32.const 388 + 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 1440 + i32.const 401 + 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 - i32.mul + call $~lib/rt/tlsf/insertBlock ) - (func $exports/Car#constructor (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $2 - i32.const 28 - i32.add + 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 17968 + i32.const 0 + i32.store + i32.const 19536 + 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 17968 + 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 17968 + 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 17968 + i32.const 19540 memory.size - local.tee $3 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + call $~lib/rt/tlsf/addMemory + i32.const 17968 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17956 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + 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 $1 + i32.const 17956 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.gt_u + i32.eqz if - local.get $3 - local.get $0 - local.get $1 + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.const 65535 + 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.tee $1 + local.set $1 + local.get $2 local.get $1 - local.get $3 + local.get $1 + local.get $2 i32.lt_s select memory.grow @@ -92,35 +1268,196 @@ 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 1440 + i32.const 500 + 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 502 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $0 - global.set $~lib/rt/stub/offset + 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.store - local.get $2 - i32.const 4 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/itcms/__new (result i32) + (local $0 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $2 - i32.const 16 + local.get $0 + 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 $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 2 - i32.store + i32.const 0 + i32.store8 local.get $0 - i32.const 2 - i32.store + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 local.get $0 ) (func $export-default/theDefault @@ -131,12 +1468,69 @@ local.get $1 i32.sub ) + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) (func $~start - i32.const 1132 - global.set $~lib/rt/stub/offset + (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 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 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $exports/Car#constructor global.set $reexport/car + global.get $~lib/memory/__stack_pointer global.get $reexport/car + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne @@ -148,15 +1542,23 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer call $exports/Car#constructor global.set $rereexport/car + global.get $~lib/memory/__stack_pointer global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1504 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -164,17 +1566,64 @@ end call $exports/Car#constructor global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1504 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + 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 ) ) diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index 0d698f462b..ae3703e1a5 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -1,13 +1,26 @@ (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 (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_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\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\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (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 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data (i32.const 512) "\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) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -15,13 +28,25 @@ (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/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 548)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16932)) + (global $~lib/memory/__heap_base i32 (i32.const 16932)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -36,6 +61,7 @@ (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) local.get $0 @@ -52,167 +78,2413 @@ local.get $1 i32.add ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $exports/Car#set:doors (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 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 $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 416 + i32.const 224 + 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 416 + i32.const 239 + 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 416 + i32.const 240 + 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 416 + i32.const 256 + 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 416 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 80 + i32.const 416 + i32.const 462 + 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 416 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const 3 i32.and - i32.const 16 - i32.shr_u + 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 $1 - local.tee $4 local.get $3 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 80 + i32.const 144 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) local.get $0 + i32.load ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + (func $start:exportstar-rereexport + call $start:rereexport + ) + (func $export-default/theDefault + nop + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.store + 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 local.get $0 - local.get $1 - i32.store + call $~lib/rt/itcms/__visit + i32.const 80 local.get $0 + call $~lib/rt/itcms/__visit + global.get $rereexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) + (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:exportstar-rereexport + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16960 + i32.const 17008 + 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 @@ -249,25 +2521,25 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 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 @@ -280,8 +2552,21 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:rereexport + (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 call $start:reexport i32.const 2 i32.const 2 @@ -291,7 +2576,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -305,7 +2590,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -316,13 +2601,18 @@ call $exports/Car#constructor global.set $rereexport/car global.get $rereexport/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 80 + i32.const 480 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -336,7 +2626,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -350,7 +2640,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -361,37 +2651,60 @@ call $exports/Car#constructor global.set $rereexport/exportsNamespaceCar global.get $rereexport/exportsNamespaceCar + 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 80 + i32.const 480 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:exportstar-rereexport - call $start:rereexport - ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) + (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 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $~start - call $start:exportstar-rereexport + 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/exportstar.json b/tests/compiler/exportstar.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/exportstar.json +++ b/tests/compiler/exportstar.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/exportstar.optimized.wat b/tests/compiler/exportstar.optimized.wat index dac2708915..ccb781001d 100644 --- a/tests/compiler/exportstar.optimized.wat +++ b/tests/compiler/exportstar.optimized.wat @@ -5,7 +5,6 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (export "memory" (memory $0)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -14,6 +13,7 @@ (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 local.get $1 diff --git a/tests/compiler/exportstar.untouched.wat b/tests/compiler/exportstar.untouched.wat index 2b27851289..f00e32303e 100644 --- a/tests/compiler/exportstar.untouched.wat +++ b/tests/compiler/exportstar.untouched.wat @@ -6,7 +6,9 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (export "memory" (memory $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)) (export "add" (func $export/add)) (export "sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -15,6 +17,7 @@ (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 local.get $1 diff --git a/tests/compiler/extends-baseaggregate.json b/tests/compiler/extends-baseaggregate.json index 8e2a32c1e2..1bdd02b1be 100644 --- a/tests/compiler/extends-baseaggregate.json +++ b/tests/compiler/extends-baseaggregate.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime half" ] } diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 0dc7218963..9aeb87a1ba 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1,33 +1,263 @@ (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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result 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))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\10\00\00\00 \04\00\00 \04") - (data (i32.const 1116) "\1c\00\00\00\01") - (data (i32.const 1148) ",\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\10\00\00\00p\04\00\00p\04") - (data (i32.const 1196) "<\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 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/\00p\00u\00r\00e\00.\00t\00s") - (data (i32.const 1324) "<\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 1388) ",\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 1436) ",\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 1484) "<\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 1548) ",\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 1600) "\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 ") - (data (i32.const 1656) "\04\00\00\00\"A\00\00\00\00\00\00\"A") + (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") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/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/memory/__stack_pointer (mut i32) (i32.const 18156)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 1408 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1216 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1696 + i32.load + i32.gt_u + if + i32.const 1408 + i32.const 1472 + i32.const 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 + 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) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -41,8 +271,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 272 + i32.const 1552 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -61,8 +291,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 274 + i32.const 1552 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -104,8 +334,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 287 + i32.const 1552 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -196,8 +426,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 200 + i32.const 1552 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -210,8 +440,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 202 + i32.const 1552 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -283,8 +513,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 223 + i32.const 1552 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -338,23 +568,23 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 238 + i32.const 1552 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 239 + i32.const 1552 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -401,8 +631,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 255 + i32.const 1552 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -471,8 +701,8 @@ i32.gt_u if i32.const 0 - i32.const 1344 - i32.const 380 + i32.const 1552 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -499,8 +729,8 @@ i32.lt_u if i32.const 0 - i32.const 1344 - i32.const 387 + i32.const 1552 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -527,8 +757,8 @@ i32.lt_u if i32.const 0 - i32.const 1344 - i32.const 400 + i32.const 1552 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -595,10 +825,10 @@ if unreachable end - i32.const 1680 + i32.const 18160 i32.const 0 i32.store - i32.const 3248 + i32.const 19728 i32.const 0 i32.store loop $for-loop|0 @@ -609,7 +839,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1680 + i32.const 18160 i32.add i32.const 0 i32.store offset=4 @@ -627,7 +857,7 @@ i32.add i32.const 2 i32.shl - i32.const 1680 + i32.const 18160 i32.add i32.const 0 i32.store offset=96 @@ -645,101 +875,322 @@ br $for-loop|0 end end - i32.const 1680 - i32.const 3252 + i32.const 18160 + i32.const 19732 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1680 + i32.const 18160 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 1216 - i32.const 1344 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 1344 - i32.const 333 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18156 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1280 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1552 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $2 i32.const 2 @@ -786,8 +1237,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 346 + i32.const 1552 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -808,93 +1259,38 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1344 - i32.const 360 - i32.const 14 + i32.const 1216 + i32.const 1552 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 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 + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if i32.const 4 memory.size @@ -963,8 +1359,8 @@ i32.eqz if i32.const 0 - i32.const 1344 - i32.const 498 + i32.const 1552 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -978,8 +1374,8 @@ i32.gt_u if i32.const 0 - i32.const 1344 - i32.const 500 + i32.const 1552 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -987,149 +1383,420 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 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) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 36 - call $~lib/rt/tlsf/__alloc - local.tee $2 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 20 - i32.store offset=16 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1552 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 + i32.sub + local.tee $4 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 1676 - i32.gt_u + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 + local.get $1 + local.get $2 + local.get $3 + i32.const 2 i32.and + i32.or + i32.store local.get $2 - i32.const 1 + local.get $1 + i32.const 4 i32.add - i32.const -268435456 + 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 $3 + i32.const -2 i32.and - i32.ne - if - i32.const 0 - i32.const 1280 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $1 - local.get $2 - i32.const 1 + i32.const 4 i32.add - i32.store offset=4 + local.tee $0 local.get $1 i32.load - i32.const 1 + i32.const -4 i32.and - if - i32.const 0 - i32.const 1280 - 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) + i32.add + local.get $0 local.get $1 i32.load - i32.const 1 + i32.const -4 i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.add + i32.load + i32.const -3 + i32.and + i32.store 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 + (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 - local.set $4 + 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.eq - br_if $~lib/util/memory/memmove|inlined.0 + 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 - i32.lt_u - if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1216 + i32.const 1280 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1280 + i32.const 290 + 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 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + 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 $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 @@ -1284,874 +1951,298 @@ 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 1676 - 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 1216 - i32.const 1280 - 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 1676 - 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/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/__release (param $0 i32) - local.get $0 - i32.const 1676 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $start:extends-baseaggregate - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - 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 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 1180 - i32.load - local.tee $6 - i32.const 1 - i32.add - local.tee $4 - local.set $1 - local.get $4 - i32.const 1176 - i32.load - local.tee $5 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 1408 - i32.const 1456 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1168 - i32.load - local.tee $7 - local.get $1 - i32.const 2 - i32.shl - local.tee $1 - call $~lib/rt/pure/__renew - local.tee $2 - i32.add - local.get $1 - local.get $5 - i32.sub - call $~lib/memory/memory.fill - local.get $2 - local.get $7 - i32.ne - if - i32.const 1168 - local.get $2 - i32.store - i32.const 1172 - local.get $2 - i32.store - end - i32.const 1176 - local.get $1 - i32.store - end - i32.const 1172 - i32.load - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $3 - call $~lib/rt/pure/__retain - i32.store - i32.const 1180 - local.get $4 - i32.store - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (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 1280 - 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 1280 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1600 - i32.load - i32.gt_u - if - i32.const 1504 - i32.const 1568 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1604 - 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 1676 - i32.ge_u - 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 $~start - call $start:extends-baseaggregate - ) - (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/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1676 - 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 1280 - 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 - 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 - br $break|0 - end - 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 - 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 1280 - 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 - 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 - br $break|0 - end - i32.const 0 - i32.const 1280 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - ) - (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=16 - local.tee $0 - if - local.get $0 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) block $folding-inner2 block $folding-inner1 block $folding-inner0 block $invalid - block $extends-baseaggregate/A2 - block $extends-baseaggregate/A1 + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 i32.const 8 i32.sub i32.load - br_table $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $extends-baseaggregate/A1 $folding-inner1 $extends-baseaggregate/A2 $folding-inner2 $folding-inner2 $invalid + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $folding-inner2 $folding-inner0 $folding-inner2 $folding-inner1 $folding-inner1 $invalid end - local.get $0 - local.get $1 - call $extends-baseaggregate/A1~visit return end - local.get $0 - local.get $1 - call $extends-baseaggregate/A1~visit return end unreachable end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end return end local.get $0 - i32.load - local.tee $0 - if - local.get $0 + 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 - call $~lib/rt/pure/__visit + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit return end local.get $0 - i32.load offset=4 + i32.load offset=16 + local.tee $0 + if + local.get $0 + call $~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) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 1328 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1360 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1504 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $9 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store + end + local.get $9 + f64.const 0 + f64.store + local.get $9 + f64.const 0 + f64.store offset=8 + local.get $9 + i32.const 0 + i32.store offset=16 + local.get $9 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + i32.const 1180 + i32.load local.tee $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + i32.const 1 i32.add - local.set $3 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u + local.tee $6 + local.set $0 + local.get $6 + i32.const 1176 + i32.load + local.tee $5 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $0 + i32.const 268435455 + i32.gt_u if - local.get $2 + i32.const 1616 + i32.const 1664 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + i32.const 1168 + i32.load + local.tee $4 + local.set $1 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + local.tee $8 + local.get $4 + i32.const 20 + i32.sub + local.tee $7 i32.load - local.tee $4 + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if - local.get $4 - local.get $1 - call $~lib/rt/pure/__visit + local.get $7 + local.get $8 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 + local.get $8 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 + local.get $8 + local.get $7 + i32.load offset=16 + local.tee $1 + local.get $1 + local.get $8 + i32.gt_u + select + call $~lib/memory/memory.copy + local.get $0 + local.set $1 + end + local.get $1 + local.get $5 + i32.add + local.get $3 + local.get $5 + i32.sub + call $~lib/memory/memory.fill + local.get $1 + local.get $4 + i32.ne + if + i32.const 1168 + local.get $1 + i32.store + i32.const 1172 + local.get $1 + i32.store + i32.const 1168 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link end + i32.const 1176 + local.get $3 + i32.store end - local.get $0 + i32.const 1172 i32.load - local.get $1 - call $~lib/rt/pure/__visit + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + i32.const 1168 + local.get $9 + i32.const 1 + call $~lib/rt/itcms/__link + i32.const 1180 + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) ) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 5b1d0d8d7c..43970331ea 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -1,165 +1,496 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (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_=>_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 (func (param i32 i32) (result i32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) ",\00\00\00\01\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\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") - (data (i32.const 124) ",\00\00\00\01\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\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 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/\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 300) "<\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 364) ",\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 412) ",\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 460) "<\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 524) ",\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 576) "\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\04\00\00\00\"A\00\00\00\00\00\00\"A\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) (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 1024)) + (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/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 576)) - (global $~lib/memory/__heap_base i32 (i32.const 652)) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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/visitRoots (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.load + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 320 - i32.const 272 - i32.const 14 + i32.const 256 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 + 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 - drop - local.get $3 - i32.const 12 - i32.ge_u + i32.le_u if (result i32) - local.get $3 - i32.const 1073741820 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - 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 - i32.const 256 - i32.lt_u + 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 - 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 + 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 - i32.const 1 - drop - local.get $4 - i32.const 23 - i32.lt_u + 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) - local.get $5 - i32.const 16 - i32.lt_u + global.get $~lib/rt/itcms/white + i32.eqz else - i32.const 0 + 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 - i32.const 0 - i32.const 320 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.load offset=4 - local.set $6 - local.get $1 + 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 273 + 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 528 + i32.const 275 + 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 528 + i32.const 288 + 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 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -245,7 +576,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -269,8 +600,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 200 + i32.const 528 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -286,8 +617,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 202 + i32.const 528 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -340,7 +671,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -381,8 +712,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 223 + i32.const 528 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -415,7 +746,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -424,7 +755,7 @@ 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 @@ -446,8 +777,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 238 + i32.const 528 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -464,8 +795,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 239 + i32.const 528 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -523,8 +854,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 255 + i32.const 528 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -548,15 +879,15 @@ 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 @@ -584,7 +915,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -628,8 +959,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 380 + i32.const 528 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -671,8 +1002,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 387 + i32.const 528 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -704,8 +1035,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 400 + i32.const 528 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -742,13 +1073,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 @@ -759,7 +1090,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 @@ -786,6 +1117,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 @@ -828,7 +1161,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 @@ -916,60 +1249,388 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne 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 + i32.eqz + else + i32.const 0 end - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u + 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 192 - i32.const 320 - i32.const 461 - i32.const 30 + i32.const 0 + i32.const 528 + i32.const 565 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/tlsf/computeSize + local.get $1 ) - (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) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop 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 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 192 + i32.const 528 + i32.const 462 + 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 @@ -1026,8 +1687,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 333 + i32.const 528 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1091,8 +1752,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 346 + i32.const 528 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1242,8 +1903,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 360 + i32.const 528 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1268,7 +1929,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 @@ -1281,7 +1942,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 @@ -1292,7 +1953,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 @@ -1322,7 +1983,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) @@ -1351,8 +2012,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 498 + i32.const 528 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1371,8 +2032,8 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 500 + i32.const 528 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1400,2455 +2061,1795 @@ 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/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 192 - i32.const 256 - 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) - (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 256 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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.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 256 - 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 $extends-baseaggregate/A1#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - 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 - local.get $0 - ) - (func $extends-baseaggregate/A2#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 20 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - call $extends-baseaggregate/A1#constructor - local.set $0 - 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 320 - 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) + (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) - loop $while-continue|0 + (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 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 + 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.set $5 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 - 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 + br $~lib/util/memory/memset|inlined.0 end - local.get $2 + 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.and + i32.le_u 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 + br $~lib/util/memory/memset|inlined.0 end - local.get $2 - i32.const 4 + 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 - 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 + br $~lib/util/memory/memset|inlined.0 end - local.get $2 - i32.const 2 - i32.and + 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 - 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 + br $~lib/util/memory/memset|inlined.0 end - local.get $2 - i32.const 1 + 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 - 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.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 - return end - local.get $2 - i32.const 32 + ) + (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 - 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 + i32.const 192 + i32.const 256 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $2 - i32.const 4 - 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 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - 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/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 - i32.const 2 - i32.and + 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 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + return end - local.get $2 i32.const 1 - i32.and + drop + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 256 + i32.const 290 + 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 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 + i32.const 20 + i32.sub + local.set $4 + local.get $4 + call $~lib/rt/itcms/Object#get:color + local.set $5 local.get $5 - i32.load8_u - i32.store8 + 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/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (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) - (local $7 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 - local.get $1 - local.set $4 + loop $while-continue|0 local.get $2 - local.set $3 - local.get $5 - local.get $4 - i32.eq - if - br $~lib/util/memory/memmove|inlined.0 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 end - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $4 + local.set $5 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 $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 - local.get $4 - local.get $3 - call $~lib/util/memory/memcpy - br $~lib/util/memory/memmove|inlined.0 + 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 $5 - local.get $4 - i32.lt_u + local.get $2 + i32.const 8 + i32.and if - i32.const 0 + 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.lt_s - drop - local.get $4 - i32.const 7 - i32.and + 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 - 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.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 $7 - local.get $4 - local.tee $7 + local.get $5 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 + i32.eq + br_if $case0|2 local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 + i32.const 2 + i32.eq + br_if $case1|2 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 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 end - end - end - loop $while-continue|2 - local.get $3 - local.set $6 - local.get $6 - if + 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.tee $7 + local.get $1 + local.tee $5 i32.const 1 i32.add - local.set $5 - local.get $7 - local.get $4 - local.tee $7 + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 i32.const 1 i32.add - local.set $4 - local.get $7 + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - local.get $3 + local.get $0 + local.tee $5 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 + i32.add + local.set $0 local.get $5 - local.get $3 + local.get $1 + local.tee $5 + i32.const 1 i32.add - i32.const 7 - i32.and - local.set $6 - local.get $6 + 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.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.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.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.load + local.set $4 + local.get $0 i32.const 8 - i32.sub - local.set $3 - local.get $5 + 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 - i64.load - i64.store + 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 $3 - local.set $6 - local.get $6 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 if - local.get $5 + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 local.get $3 - i32.const 1 - i32.sub - local.tee $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.load8_u - i32.store8 + 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 - ) - (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.const 16 i32.and - local.set $5 - local.get $3 - local.get $5 - i32.le_u if local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 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.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - i32.const 4 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 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.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 local.get $1 - call $~lib/rt/tlsf/moveBlock - else - global.get $~lib/rt/tlsf/ROOT + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 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 192 - i32.const 256 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 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/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 + i32.const 8 + i32.and + if local.get $0 - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 0 + local.tee $5 i32.const 1 - i32.gt_s - drop - local.get $3 - i32.eqz - if - br $~lib/util/memory/memset|inlined.0 - end + i32.add + local.set $0 local.get $5 - local.get $3 + local.get $1 + local.tee $5 + i32.const 1 i32.add - i32.const 4 - i32.sub - local.set $6 + local.set $1 local.get $5 - local.get $4 + i32.load8_u 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 $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 + i32.load8_u 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 $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 local.get $5 - local.get $7 + local.get $1 + local.tee $5 + i32.const 1 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.set $1 local.get $5 - local.get $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - i32.const 28 - i32.sub - local.set $6 + local.set $0 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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - local.get $8 - i32.store offset=4 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - local.get $8 - i32.store offset=12 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 local.get $5 - local.get $8 - i32.store offset=16 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - local.get $8 - i32.store offset=20 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - i32.const 4 - i32.and + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - local.set $7 + local.set $0 local.get $5 - local.get $7 + local.get $1 + local.tee $5 + i32.const 1 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 + local.set $1 + local.get $5 + i32.load8_u + i32.store8 end - ) - (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 + i32.const 4 + i32.and if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 384 - i32.const 432 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.load - local.set $4 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 local.get $1 - local.get $2 - i32.shl - local.set $5 - local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $1 local.get $5 - call $~lib/rt/pure/__renew - local.set $6 - local.get $6 - local.get $3 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - i32.const 0 + local.set $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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.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.store offset=8 - end - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - 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 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/array/Array#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 $start:extends-baseaggregate - (local $0 i32) - (local $1 i32) - global.get $extends-baseaggregate/poolA - i32.const 0 - call $extends-baseaggregate/A2#constructor - local.tee $0 - call $~lib/array/Array#push - drop - local.get $0 - call $~lib/rt/pure/__release - ) - (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 480 - i32.const 544 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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 $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 + local.get $2 + i32.const 2 + i32.and if - return + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + local.get $2 + i32.const 1 + i32.and if - call $~lib/rt/tlsf/initialize + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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 - 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) + (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) - global.get $~lib/rt/pure/ROOTS - local.set $0 - global.get $~lib/rt/pure/CUR local.get $0 + i32.const 20 i32.sub - local.set $1 + local.set $2 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 + 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 - 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 + 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 - i32.store local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR + 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/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + (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=4 - local.set $1 + i32.load offset=8 + local.set $3 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 256 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + local.get $3 local.get $2 - i32.const 1 - i32.eq + i32.shr_u + i32.gt_u 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 + i32.const 1073741820 local.get $2 - i32.const 0 + i32.shr_u i32.gt_u - i32.eqz if - i32.const 0 - i32.const 256 - i32.const 136 - i32.const 16 + i32.const 592 + i32.const 640 + i32.const 14 + i32.const 48 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 $~start - call $start:extends-baseaggregate - ) - (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 $0 + i32.load + local.set $4 local.get $1 - i32.const 268435455 - i32.and + local.get $2 + i32.shl + local.set $5 + local.get $4 + local.get $5 + call $~lib/rt/itcms/__renew + local.set $6 + local.get $6 + local.get $3 + i32.add i32.const 0 - i32.gt_u + 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 - call $~lib/rt/pure/scanBlack - else + local.get $6 + i32.store local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or + local.get $6 i32.store offset=4 local.get $0 - i32.const 20 - i32.add - i32.const 3 - call $~lib/rt/__visit_members + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link end + local.get $0 + local.get $5 + i32.store offset=8 end ) - (func $~lib/rt/pure/collectWhite (param $0 i32) - (local $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#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 1 + drop local.get $0 i32.load offset=4 - local.set $1 + local.get $2 + i32.const 2 + i32.shl + i32.add local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) + 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 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end + global.get $extends-baseaggregate/poolA + local.tee $1 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 + call $~lib/rt/itcms/__visit end - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) + i32.const 384 local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 0 - drop + call $~lib/rt/itcms/__visit + i32.const 592 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 256 - 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 256 - 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 256 - 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 + 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) @@ -3858,7 +3859,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $extends-baseaggregate/B1~visit (param $0 i32) (param $1 i32) @@ -3869,7 +3870,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $extends-baseaggregate/A1~visit (param $0 i32) (param $1 i32) @@ -3880,7 +3881,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $extends-baseaggregate/C1~visit (param $0 i32) (param $1 i32) @@ -3891,7 +3892,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $extends-baseaggregate/A2~visit (param $0 i32) (param $1 i32) @@ -3930,7 +3931,7 @@ if local.get $5 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end local.get $2 i32.const 4 @@ -3942,7 +3943,7 @@ local.get $0 i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit ) (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 @@ -3980,7 +3981,7 @@ if local.get $5 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end local.get $2 i32.const 4 @@ -3992,7 +3993,7 @@ local.get $0 i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit ) (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 @@ -4016,14 +4017,8 @@ 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 - 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 @@ -4063,4 +4058,136 @@ 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 $extends-baseaggregate/A2#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 20 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $extends-baseaggregate/A1#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 + 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 + ) ) diff --git a/tests/compiler/extends-recursive.json b/tests/compiler/extends-recursive.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/extends-recursive.json +++ b/tests/compiler/extends-recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 0493622a51..42c1386383 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1,61 +1,1218 @@ (module + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "Child" (global $extends-recursive/Child)) - (export "Child#get:child" (func $extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $extends-recursive/Parent#set:child)) - (export "Child#constructor" (func $extends-recursive/Child#constructor)) + (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/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (local $6 i32) + (local $7 i32) + (local $8 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 $4 + 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - local.tee $3 - i32.const 28 i32.add - local.tee $1 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 17872 + 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 17872 + i32.const 19444 memory.size - local.tee $4 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -63,64 +1220,417 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $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.store8 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 ) - (func $extends-recursive/Child#constructor (param $0 i32) (result i32) + (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + local.get $1 + i32.store + local.get $1 if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 290 + 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 - call $~lib/rt/stub/__new - local.set $0 + 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 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $extends-recursive/Child + 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 $extends-recursive/Child $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable end local.get $0 - i32.eqz + i32.load + local.tee $0 if - i32.const 4 - call $~lib/rt/stub/__new - local.set $0 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + 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 + ) + (func $export:extends-recursive/Parent#get:child (param $0 i32) (result i32) + global.get $~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 - ) - (func $extends-recursive/Parent#get:child (param $0 i32) (result i32) - local.get $0 i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) + (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.load - drop + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 - i32.store + call $extends-recursive/Parent#set:child + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset + (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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $extends-recursive/Parent#set:child + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 91170a9428..6885afc783 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -1,230 +1,2637 @@ (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_=>_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))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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) - (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 8)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $extends-recursive/Child i32 (i32.const 3)) - (export "memory" (memory $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)) (export "Child" (global $extends-recursive/Child)) - (export "Child#get:child" (func $extends-recursive/Parent#get:child)) - (export "Child#set:child" (func $extends-recursive/Parent#set:child)) - (export "Child#constructor" (func $extends-recursive/Child#constructor)) + (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/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 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 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/Object#set:prev 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) + call $~lib/rt/itcms/Object#set:next + local.get $1 local.get $0 + call $~lib/rt/itcms/Object#set:prev ) - (func $extends-recursive/Parent#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) local.get $0 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 4 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 - i32.const 0 - call $~lib/rt/stub/__retain - i32.store + 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 $extends-recursive/Child#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + return end local.get $0 - call $extends-recursive/Parent#constructor - local.set $0 - 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 $extends-recursive/Parent#get:child (param $0 i32) (result i32) + (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 - call $~lib/rt/stub/__retain + 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/stub/__release (param $0 i32) - nop + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store ) - (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) - (local $2 i32) + (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.tee $2 - i32.ne + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz if - local.get $1 - call $~lib/rt/stub/__retain - drop - local.get $2 - call $~lib/rt/stub/__release + i32.const 0 + i32.const 368 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.store - ) - (func $~start - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + local.get $2 + i32.const 3 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 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 290 + 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 + 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/Child#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 4 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $extends-recursive/Parent#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 $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/extends-self.json b/tests/compiler/extends-self.json index a6b4e4b4ae..a3cf85015e 100644 --- a/tests/compiler/extends-self.json +++ b/tests/compiler/extends-self.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2506", diff --git a/tests/compiler/external.json b/tests/compiler/external.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/external.json +++ b/tests/compiler/external.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/external.optimized.wat b/tests/compiler/external.optimized.wat index ba9388aa48..1c1024e481 100644 --- a/tests/compiler/external.optimized.wat +++ b/tests/compiler/external.optimized.wat @@ -6,10 +6,10 @@ (import "external" "bar" (func $external/two)) (import "foo" "baz" (func $external/three)) (memory $0 0) - (export "memory" (memory $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_)) + (export "memory" (memory $0)) ) diff --git a/tests/compiler/external.untouched.wat b/tests/compiler/external.untouched.wat index bf285b5d40..e2517cd18a 100644 --- a/tests/compiler/external.untouched.wat +++ b/tests/compiler/external.untouched.wat @@ -7,10 +7,13 @@ (import "foo" "baz" (func $external/three)) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (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_)) + (export "memory" (memory $0)) ) diff --git a/tests/compiler/features/js-bigint-integration.json b/tests/compiler/features/js-bigint-integration.json index 1f50c442e6..e8e76ac898 100644 --- a/tests/compiler/features/js-bigint-integration.json +++ b/tests/compiler/features/js-bigint-integration.json @@ -3,7 +3,6 @@ "bigint-integration" ], "asc_flags": [ - "--runtime none", "--explicitStart" ] } diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat index b3f9d9fc1e..fe9c603300 100644 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ b/tests/compiler/features/js-bigint-integration.optimized.wat @@ -6,13 +6,14 @@ (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))) (memory $0 1) - (data (i32.const 1036) "\\\00\00\00\01\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") + (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") (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) (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 ) diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat index 51dcfc375b..71d742ea46 100644 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ b/tests/compiler/features/js-bigint-integration.untouched.wat @@ -6,14 +6,17 @@ (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))) (memory $0 1) - (data (i32.const 12) "\\\00\00\00\01\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") + (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) (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)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) (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 diff --git a/tests/compiler/features/mutable-globals.json b/tests/compiler/features/mutable-globals.json index a8edac7a10..b227d5c3d9 100644 --- a/tests/compiler/features/mutable-globals.json +++ b/tests/compiler/features/mutable-globals.json @@ -3,7 +3,6 @@ "mutable-globals" ], "asc_flags": [ - "--runtime none", "--explicitStart" ] } diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat index cda319bf99..b126bee2fa 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/features/mutable-globals.optimized.wat @@ -4,13 +4,14 @@ (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "L\00\00\00\01\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") + (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") (global $features/mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) (export "external" (global $features/mutable-globals/external)) (export "internal" (global $features/mutable-globals/internal)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~start global.get $~started if diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat index 870fa6a997..cd8051d1ca 100644 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ b/tests/compiler/features/mutable-globals.untouched.wat @@ -4,14 +4,17 @@ (import "mutable-globals" "external" (global $features/mutable-globals/external (mut i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "L\00\00\00\01\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") + (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) (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)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) (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 diff --git a/tests/compiler/features/not-supported.json b/tests/compiler/features/not-supported.json index 99f1dac543..0c149610ab 100644 --- a/tests/compiler/features/not-supported.json +++ b/tests/compiler/features/not-supported.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS103: Feature 'simd' is not enabled.", diff --git a/tests/compiler/features/reference-types.json b/tests/compiler/features/reference-types.json index e63bf2973f..93bb76dff8 100644 --- a/tests/compiler/features/reference-types.json +++ b/tests/compiler/features/reference-types.json @@ -5,6 +5,5 @@ "gc" ], "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index c08470b74a..4c85c5303c 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -1,8 +1,8 @@ (module (type $externref_=>_externref (func (param externref) (result externref))) (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_=>_none (func (param externref))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) (type $externref_externref_=>_externref (func (param externref externref) (result externref))) (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) @@ -13,11 +13,12 @@ (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) (memory $0 1) - (data (i32.const 1036) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data (i32.const 1036) "L") + (data (i32.const 1048) "\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s") (global $features/reference-types/funcGlobal (mut funcref) (ref.null func)) - (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) (export "internal" (func $features/reference-types/internal)) + (export "memory" (memory $0)) (start $~start) (func $features/reference-types/internal (param $0 externref) (result externref) local.get $0 diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index eba45f17a4..b2fe65ab3b 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $externref_=>_externref (func (param externref) (result externref))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_=>_none (func (param externref))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $externref_externref_=>_i32 (func (param externref externref) (result i32))) (type $externref_externref_=>_externref (func (param externref externref) (result externref))) (import "reference-types" "someObject" (global $features/reference-types/someObject externref)) @@ -13,7 +13,7 @@ (import "Reflect" "get" (func $~lib/bindings/Reflect/get (param externref externref) (result externref))) (import "reference-types" "external" (func $features/reference-types/external (param externref) (result externref))) (memory $0 1) - (data (i32.const 12) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data (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/\00r\00e\00f\00e\00r\00e\00n\00c\00e\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00") (table $0 1 funcref) (global $features/reference-types/funcGlobal (mut funcref) (ref.null func)) (global $features/reference-types/funcGlobalInit (mut funcref) (ref.null func)) @@ -24,9 +24,12 @@ (global $features/reference-types/anyGlobal (mut anyref) (ref.null any)) (global $features/reference-types/anyGlobalInit (mut anyref) (ref.null any)) (global $features/reference-types/otherFuncGlobal (mut funcref) (ref.null func)) - (export "memory" (memory $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)) (export "external" (func $features/reference-types/external)) (export "internal" (func $features/reference-types/internal)) + (export "memory" (memory $0)) (start $~start) (func $features/reference-types/testLocal (local $0 funcref) diff --git a/tests/compiler/features/simd.json b/tests/compiler/features/simd.json index 314c29279f..cd4e868be3 100644 --- a/tests/compiler/features/simd.json +++ b/tests/compiler/features/simd.json @@ -3,7 +3,6 @@ "simd" ], "asc_flags": [ - "--runtime none" ], "skipInstantiate": true } diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index 7287c4f596..daf784b7f3 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -1,43 +1,741 @@ (module (type $none_=>_none (func)) + (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_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\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") + (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 \00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00s\00i\00m\00d\00.\00t\00s") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) - (func $~start - (local $0 i32) - (local $1 i32) - memory.size - local.tee $1 + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1056 + 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 1056 + 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 1056 + 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.const 15 i32.add - i32.const -16 + 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 1056 + 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 1056 + 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 1056 + 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 1056 + i32.const 238 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1056 + 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 1056 + 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 - i32.const 1244 + 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 1056 + 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 1056 + 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 1056 + 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 1232 + i32.const 0 + i32.store + i32.const 2800 + i32.const 0 + i32.store + loop $for-loop|0 local.get $1 - i32.const 66779 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 1232 + 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 1232 + 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 1232 + i32.const 2804 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 1232 + global.set $~lib/rt/tlsf/ROOT + ) + (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 -16 + 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 1056 + 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 65614 + i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.tee $0 - local.get $0 + 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 $0 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -45,16 +743,167 @@ 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 1056 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - i32.const 1164 + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 76 - i32.store - i32.const 1200 - i32.const 1184 - v128.load - v128.store - i32.const 1164 + i32.lt_u + if + i32.const 0 + i32.const 1056 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 i32.load - drop + local.tee $2 + i32.const -4 + i32.and + i32.const 76 + 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 76 + i32.or + i32.store + local.get $1 + i32.const 80 + 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 $~start + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + local.get $0 + v128.load offset=16 + v128.store offset=32 + local.get $0 + i32.const 1228 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.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.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 1056 + i32.const 564 + 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 + end ) ) diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 4fe15b666d..20a6df39c2 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1,129 +1,1425 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_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))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_v128 (func (result v128))) (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\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 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") (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (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/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/__heap_base i32 (i32.const 140)) + (global $~lib/memory/__heap_base i32 (i32.const 204)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (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 - i32.const 4 - i32.add - i32.const 15 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 15 + i32.load offset=4 + i32.const 0 i32.const -1 i32.xor + local.get $3 + i32.shl i32.and - i32.const 4 - i32.sub + 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/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) + (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 $1 + local.set $2 local.get $1 + i32.const 4 + local.get $2 i32.const 16 i32.shl - i32.const 15 + i32.const 4 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl i32.add - i32.const 15 + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 i32.const -1 i32.xor i32.and - local.set $2 - local.get $0 + i32.const 16 + i32.shr_u + local.set $4 local.get $2 - i32.gt_u + 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 $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 + unreachable end end + memory.size + local.set $7 local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u + (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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + 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 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $0 local.get $3 - i32.store 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/stub/__free (param $0 i32) + (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) @@ -134,29 +1430,55 @@ 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 89 + i32.const 564 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 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + i32.const 0 + drop + local.get $1 local.get $1 i32.load - i32.add - global.get $~lib/rt/stub/offset - i32.eq + 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 - local.get $1 - global.set $~lib/rt/stub/offset + 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 $features/simd/test_v128 (local $0 i32) @@ -220,14 +1542,14 @@ i32.ne drop i32.const 64 - call $~lib/rt/stub/__alloc + call $~lib/rt/tlsf/__alloc local.set $0 local.get $0 local.get $0 v128.load offset=16 v128.store offset=32 local.get $0 - call $~lib/rt/stub/__free + call $~lib/rt/tlsf/__free ) (func $features/simd/test_i8x16 (local $0 v128) @@ -248,7 +1570,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 61 i32.const 3 call $~lib/builtins/abort @@ -266,7 +1588,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -285,7 +1607,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -302,7 +1624,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -319,7 +1641,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -380,7 +1702,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 108 i32.const 3 call $~lib/builtins/abort @@ -397,7 +1719,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 113 i32.const 3 call $~lib/builtins/abort @@ -414,7 +1736,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 114 i32.const 3 call $~lib/builtins/abort @@ -429,7 +1751,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 115 i32.const 3 call $~lib/builtins/abort @@ -446,7 +1768,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 116 i32.const 3 call $~lib/builtins/abort @@ -463,7 +1785,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 121 i32.const 3 call $~lib/builtins/abort @@ -587,7 +1909,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 159 i32.const 3 call $~lib/builtins/abort @@ -604,7 +1926,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 160 i32.const 3 call $~lib/builtins/abort @@ -621,7 +1943,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 161 i32.const 3 call $~lib/builtins/abort @@ -638,7 +1960,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 162 i32.const 3 call $~lib/builtins/abort @@ -655,7 +1977,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 163 i32.const 3 call $~lib/builtins/abort @@ -672,7 +1994,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 164 i32.const 3 call $~lib/builtins/abort @@ -689,7 +2011,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -706,7 +2028,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 166 i32.const 3 call $~lib/builtins/abort @@ -723,7 +2045,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 167 i32.const 3 call $~lib/builtins/abort @@ -740,7 +2062,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 168 i32.const 3 call $~lib/builtins/abort @@ -790,7 +2112,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 175 i32.const 3 call $~lib/builtins/abort @@ -808,7 +2130,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 177 i32.const 3 call $~lib/builtins/abort @@ -827,7 +2149,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 179 i32.const 3 call $~lib/builtins/abort @@ -844,7 +2166,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 180 i32.const 3 call $~lib/builtins/abort @@ -861,7 +2183,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 181 i32.const 3 call $~lib/builtins/abort @@ -922,7 +2244,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 222 i32.const 3 call $~lib/builtins/abort @@ -939,7 +2261,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 227 i32.const 3 call $~lib/builtins/abort @@ -956,7 +2278,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 228 i32.const 3 call $~lib/builtins/abort @@ -971,7 +2293,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 229 i32.const 3 call $~lib/builtins/abort @@ -988,7 +2310,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 230 i32.const 3 call $~lib/builtins/abort @@ -1005,7 +2327,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 235 i32.const 3 call $~lib/builtins/abort @@ -1129,7 +2451,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 273 i32.const 3 call $~lib/builtins/abort @@ -1146,7 +2468,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 274 i32.const 3 call $~lib/builtins/abort @@ -1163,7 +2485,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 275 i32.const 3 call $~lib/builtins/abort @@ -1180,7 +2502,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 276 i32.const 3 call $~lib/builtins/abort @@ -1197,7 +2519,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 277 i32.const 3 call $~lib/builtins/abort @@ -1214,7 +2536,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 278 i32.const 3 call $~lib/builtins/abort @@ -1231,7 +2553,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 279 i32.const 3 call $~lib/builtins/abort @@ -1248,7 +2570,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 280 i32.const 3 call $~lib/builtins/abort @@ -1265,7 +2587,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 281 i32.const 3 call $~lib/builtins/abort @@ -1282,7 +2604,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 282 i32.const 3 call $~lib/builtins/abort @@ -1380,7 +2702,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 316 i32.const 3 call $~lib/builtins/abort @@ -1398,7 +2720,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 318 i32.const 3 call $~lib/builtins/abort @@ -1417,7 +2739,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 320 i32.const 3 call $~lib/builtins/abort @@ -1434,7 +2756,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 321 i32.const 3 call $~lib/builtins/abort @@ -1451,7 +2773,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 322 i32.const 3 call $~lib/builtins/abort @@ -1512,7 +2834,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 363 i32.const 3 call $~lib/builtins/abort @@ -1525,7 +2847,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 368 i32.const 3 call $~lib/builtins/abort @@ -1538,7 +2860,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 369 i32.const 3 call $~lib/builtins/abort @@ -1555,7 +2877,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 370 i32.const 3 call $~lib/builtins/abort @@ -1572,7 +2894,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 375 i32.const 3 call $~lib/builtins/abort @@ -1652,7 +2974,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 389 i32.const 3 call $~lib/builtins/abort @@ -1669,7 +2991,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 390 i32.const 3 call $~lib/builtins/abort @@ -1686,7 +3008,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 391 i32.const 3 call $~lib/builtins/abort @@ -1703,7 +3025,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 392 i32.const 3 call $~lib/builtins/abort @@ -1720,7 +3042,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 393 i32.const 3 call $~lib/builtins/abort @@ -1737,7 +3059,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 394 i32.const 3 call $~lib/builtins/abort @@ -1754,7 +3076,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 395 i32.const 3 call $~lib/builtins/abort @@ -1771,7 +3093,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 396 i32.const 3 call $~lib/builtins/abort @@ -1788,7 +3110,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 397 i32.const 3 call $~lib/builtins/abort @@ -1805,7 +3127,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 398 i32.const 3 call $~lib/builtins/abort @@ -1895,7 +3217,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 436 i32.const 3 call $~lib/builtins/abort @@ -1913,7 +3235,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 438 i32.const 3 call $~lib/builtins/abort @@ -1932,7 +3254,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 440 i32.const 3 call $~lib/builtins/abort @@ -1949,7 +3271,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 441 i32.const 3 call $~lib/builtins/abort @@ -1965,7 +3287,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 442 i32.const 3 call $~lib/builtins/abort @@ -1978,7 +3300,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 447 i32.const 3 call $~lib/builtins/abort @@ -1991,7 +3313,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 448 i32.const 3 call $~lib/builtins/abort @@ -2008,7 +3330,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 449 i32.const 3 call $~lib/builtins/abort @@ -2025,7 +3347,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 454 i32.const 3 call $~lib/builtins/abort @@ -2120,7 +3442,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 495 i32.const 3 call $~lib/builtins/abort @@ -2138,7 +3460,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 497 i32.const 3 call $~lib/builtins/abort @@ -2157,7 +3479,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 499 i32.const 3 call $~lib/builtins/abort @@ -2174,7 +3496,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 500 i32.const 3 call $~lib/builtins/abort @@ -2191,7 +3513,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 501 i32.const 3 call $~lib/builtins/abort @@ -2212,7 +3534,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 503 i32.const 3 call $~lib/builtins/abort @@ -2229,7 +3551,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 504 i32.const 3 call $~lib/builtins/abort @@ -2245,7 +3567,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 505 i32.const 3 call $~lib/builtins/abort @@ -2258,7 +3580,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 506 i32.const 3 call $~lib/builtins/abort @@ -2271,7 +3593,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 507 i32.const 3 call $~lib/builtins/abort @@ -2288,7 +3610,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 508 i32.const 3 call $~lib/builtins/abort @@ -2305,7 +3627,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 513 i32.const 3 call $~lib/builtins/abort @@ -2336,7 +3658,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 522 i32.const 3 call $~lib/builtins/abort @@ -2353,7 +3675,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 523 i32.const 3 call $~lib/builtins/abort @@ -2370,7 +3692,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 524 i32.const 3 call $~lib/builtins/abort @@ -2387,7 +3709,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 525 i32.const 3 call $~lib/builtins/abort @@ -2404,7 +3726,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 526 i32.const 3 call $~lib/builtins/abort @@ -2421,7 +3743,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 527 i32.const 3 call $~lib/builtins/abort @@ -2438,7 +3760,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 528 i32.const 3 call $~lib/builtins/abort @@ -2455,7 +3777,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 529 i32.const 3 call $~lib/builtins/abort @@ -2471,7 +3793,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 530 i32.const 3 call $~lib/builtins/abort @@ -2526,7 +3848,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 557 i32.const 3 call $~lib/builtins/abort @@ -2544,7 +3866,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 559 i32.const 3 call $~lib/builtins/abort @@ -2563,7 +3885,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 561 i32.const 3 call $~lib/builtins/abort @@ -2580,7 +3902,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 562 i32.const 3 call $~lib/builtins/abort @@ -2597,7 +3919,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 563 i32.const 3 call $~lib/builtins/abort @@ -2618,7 +3940,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 565 i32.const 3 call $~lib/builtins/abort @@ -2635,7 +3957,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 566 i32.const 3 call $~lib/builtins/abort @@ -2651,7 +3973,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 567 i32.const 3 call $~lib/builtins/abort @@ -2664,7 +3986,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 568 i32.const 3 call $~lib/builtins/abort @@ -2677,7 +3999,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 569 i32.const 3 call $~lib/builtins/abort @@ -2694,7 +4016,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 570 i32.const 3 call $~lib/builtins/abort @@ -2711,7 +4033,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 575 i32.const 3 call $~lib/builtins/abort @@ -2742,7 +4064,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 584 i32.const 3 call $~lib/builtins/abort @@ -2759,7 +4081,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 585 i32.const 3 call $~lib/builtins/abort @@ -2776,7 +4098,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 586 i32.const 3 call $~lib/builtins/abort @@ -2793,7 +4115,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 587 i32.const 3 call $~lib/builtins/abort @@ -2810,7 +4132,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 588 i32.const 3 call $~lib/builtins/abort @@ -2827,7 +4149,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 589 i32.const 3 call $~lib/builtins/abort @@ -2844,7 +4166,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 590 i32.const 3 call $~lib/builtins/abort @@ -2861,7 +4183,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 591 i32.const 3 call $~lib/builtins/abort @@ -2877,7 +4199,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 592 i32.const 3 call $~lib/builtins/abort @@ -2931,7 +4253,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 620 i32.const 3 call $~lib/builtins/abort @@ -2950,7 +4272,7 @@ i32.eqz if i32.const 0 - i32.const 96 + i32.const 160 i32.const 626 i32.const 3 call $~lib/builtins/abort @@ -2973,20 +4295,6 @@ local.get $0 ) (func $start:features/simd - 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 1 drop call $features/simd/test_v128 diff --git a/tests/compiler/features/threads.json b/tests/compiler/features/threads.json index 20ea38f00b..106712bc6e 100644 --- a/tests/compiler/features/threads.json +++ b/tests/compiler/features/threads.json @@ -3,7 +3,6 @@ "threads" ], "asc_flags": [ - "--runtime none", "--memoryBase 8", "--maximumMemory 10", "--sharedMemory" diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat index 62ce310643..653e7fd3e7 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.untouched.wat @@ -3,6 +3,9 @@ (memory $0 (shared 1 10)) (table $0 1 funcref) (global $~lib/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)) (export "memory" (memory $0)) (start $~start) (func $features/threads/testAtomic diff --git a/tests/compiler/field-initialization-errors.json b/tests/compiler/field-initialization-errors.json index c4c505491c..5eabd4e467 100644 --- a/tests/compiler/field-initialization-errors.json +++ b/tests/compiler/field-initialization-errors.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2564: Property 'field-initialization-errors/Ref.a' has no initializer", diff --git a/tests/compiler/field-initialization-warnings.json b/tests/compiler/field-initialization-warnings.json index 1d20f3ea5e..ccbf9265ff 100644 --- a/tests/compiler/field-initialization-warnings.json +++ b/tests/compiler/field-initialization-warnings.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "AS906: Unnecessary definite assignment.", diff --git a/tests/compiler/field-initialization.json b/tests/compiler/field-initialization.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/field-initialization.json +++ b/tests/compiler/field-initialization.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 6f8e5c72d5..0c5ef0c0f7 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1,84 +1,1342 @@ (module + (type $i32_i32_=>_none (func (param 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_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) + (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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") - (data (i32.const 1116) ",\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 1164) "<\00\00\00\01\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 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00b") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00b\00b") - (data (i32.const 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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) "L") + (data (i32.const 1448) "\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s") + (data (i32.const 1516) ",") + (data (i32.const 1528) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1564) "<") + (data (i32.const 1576) "\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 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\02\00\00\00b") + (data (i32.const 1660) "\1c") + (data (i32.const 1672) "\01\00\00\00\04\00\00\00b\00b") + (data (i32.const 1692) "\1c") + (data (i32.const 1704) "\01\00\00\00\02\00\00\00c") + (data (i32.const 1724) "\1c") + (data (i32.const 1736) "\01\00\00\00\06\00\00\00b\00b\00b") + (data (i32.const 1756) "\1c") + (data (i32.const 1768) "\01\00\00\00\04\00\00\00c\00c") + (data (i32.const 1792) "\19\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1820) " \00\00\00\00\00\00\00 ") + (data (i32.const 1860) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1936) "\12") + (data (i32.const 1952) "\12") + (data (i32.const 1968) "\14") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18380)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 18380 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 18384 + i32.const 0 + i32.store + i32.const 19952 + 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 18384 + 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 18384 + 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 18384 + i32.const 19956 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18384 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18380 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18380 + 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 $1 + i32.const 18380 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 $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 + local.get $1 i32.const 1073741820 - i32.gt_u + i32.ge_u if + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -92,71 +1350,570 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + 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 $3 + local.get $2 i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 - i32.const 0 - i32.store offset=8 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + 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 - local.get $4 - i32.const 16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 i32.eqz if - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__new - local.set $0 + return end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - i32.store - local.get $0 - ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) local.get $0 i32.eqz if - i32.const 8 + i32.const 0 + i32.const 1120 + i32.const 290 + 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 - call $~lib/rt/stub/__new - local.set $0 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end + ) + (func $field-initialization/Ref_Init#set:a (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store local.get $0 - i32.const 0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/SomeObject#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/SomeOtherObject#set:c (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $field-initialization/Value_Init $field-initialization/Value $folding-inner0 $folding-inner0 $folding-inner0 $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $field-initialization/SomeObject $field-initialization/SomeOtherObject $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=8 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:field-initialization + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1996 + i32.lt_s + if + i32.const 18400 + i32.const 18448 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -167,13 +1924,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -182,6 +1946,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -194,7 +1964,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -214,10 +1983,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -225,23 +1994,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -258,625 +2027,1150 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $field-initialization/SomeOtherObject#constructor (result i32) (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 21 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $field-initialization/SomeObject#constructor local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.store offset=8 + call $field-initialization/SomeOtherObject#set:c + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) (func $start:field-initialization (local $0 i32) (local $1 i32) - i32.const 1388 - global.set $~lib/rt/stub/offset + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 8 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.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 4 i32.const 4 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 16 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.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 4 i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 24 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.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 4 i32.const 6 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 32 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.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 4 i32.const 7 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 40 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.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 4 i32.const 8 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 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 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 4 i32.const 9 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 62 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.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 4 i32.const 10 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 i32.const 1 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 73 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.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 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 11 - call $~lib/rt/stub/__new - local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 83 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.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 4 i32.const 12 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store + local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - local.set $1 + call $field-initialization/Ref_Init#set:a local.get $0 - i32.load - drop + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 94 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - local.set $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 i32.const 13 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $1 - local.get $0 i32.store + local.get $1 + local.get $0 + call $field-initialization/Ref_Init#set:a + 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 $0 local.get $1 i32.load i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 104 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.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 4 i32.const 14 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 + i32.const 0 + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 114 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.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 4 i32.const 15 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new i32.store local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 124 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.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 4 i32.const 16 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store + local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - local.set $1 + call $field-initialization/Ref_Init#set:a local.get $0 - i32.load - drop + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + 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 + i32.store offset=8 local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 135 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 17 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $field-initialization/Inherit_Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 19 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $field-initialization/Inherit_Base#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 call $field-initialization/SomeObject#constructor local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 i32.store local.get $0 i32.const 0 - i32.store offset=4 + call $field-initialization/SomeObject#set:b + local.get $0 + i32.store local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 + local.tee $0 + i32.store offset=12 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 call $field-initialization/SomeObject#constructor local.tee $0 + i32.store offset=16 + local.get $0 i32.const 1 i32.store local.get $0 i32.const 0 - i32.store offset=4 + call $field-initialization/SomeObject#set:b + local.get $0 + i32.store offset=20 local.get $0 i32.load i32.const 1 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 167 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 + local.tee $0 + i32.store offset=12 + local.get $0 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 call $field-initialization/SomeObject#constructor local.tee $0 - i32.const 1248 - i32.store offset=4 + i32.store offset=24 + local.get $0 + i32.const 1648 + call $field-initialization/SomeObject#set:b local.get $0 i32.const 0 i32.store local.get $0 + i32.store offset=28 + local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 170 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.const 1248 + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 171 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 call $field-initialization/SomeObject#constructor local.tee $0 + i32.store offset=32 + local.get $0 i32.const 2 i32.store local.get $0 - i32.const 1280 - i32.store offset=4 + i32.const 1680 + call $field-initialization/SomeObject#set:b + local.get $0 + i32.store offset=36 local.get $0 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 173 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.const 1280 + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=4 + local.get $0 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 174 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer call $field-initialization/SomeOtherObject#constructor local.tee $0 - i32.const 1312 - i32.store offset=8 + i32.store offset=36 + local.get $0 + i32.const 1712 + call $field-initialization/SomeOtherObject#set:c local.get $0 i32.const 0 i32.store local.get $0 i32.const 0 - i32.store offset=4 + call $field-initialization/SomeObject#set:b + local.get $0 + i32.store offset=28 local.get $0 i32.load if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 + local.tee $1 + i32.store offset=12 + local.get $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 183 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - i32.const 1312 + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=4 + local.get $0 + i32.const 1712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer call $field-initialization/SomeOtherObject#constructor local.tee $0 + i32.store offset=20 + local.get $0 i32.const 3 i32.store local.get $0 - i32.const 1344 - i32.store offset=4 + i32.const 1744 + call $field-initialization/SomeObject#set:b local.get $0 - i32.const 1376 - i32.store offset=8 + i32.const 1776 + call $field-initialization/SomeOtherObject#set:c + local.get $0 + i32.store local.get $0 i32.load i32.const 3 i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 186 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.const 1344 + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1744 + i32.store offset=4 + local.get $1 + i32.const 1744 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 187 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - i32.const 1376 + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 188 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.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 4 i32.const 22 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store + local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - local.set $1 + call $field-initialization/Ref_Init#set:a local.get $0 - i32.load - drop + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 205 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 23 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - i32.store + i32.store offset=28 + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + local.get $0 + i32.store offset=28 local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 218 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 24 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store + local.get $0 i32.const 0 - i32.const 0 - call $~lib/rt/stub/__new - local.set $1 + call $field-initialization/Ref_Init#set:a local.get $0 - i32.load - drop + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a local.get $0 - local.get $1 i32.store local.get $0 i32.load i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:field-initialization + (func $~lib/arraybuffer/ArrayBuffer#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 8 + i32.const 20 + 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 + call $field-initialization/SomeObject#set:b + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index afb1720d8e..7410456353 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -1,1695 +1,4639 @@ (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 $none_=>_none (func)) - (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))) + (type $none_=>_i32 (func (result 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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 92) ",\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 140) "<\00\00\00\01\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 204) "\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 236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00b\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\01\00\00\00\02\00\00\00c\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\01\00\00\00\06\00\00\00b\00b\00b\00\00\00\00\00\00\00") - (data (i32.const 332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") + (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) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00f\00i\00e\00l\00d\00-\00i\00n\00i\00t\00i\00a\00l\00i\00z\00a\00t\00i\00o\00n\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 492) ",\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 540) "<\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 604) "\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 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c\00\00\00\00\00\00\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\06\00\00\00b\00b\00b\00\00\00\00\00\00\00") + (data (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") + (data (i32.const 768) "\19\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 364)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 17356)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 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 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/Object#set:prev 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) + call $~lib/rt/itcms/Object#set:next + local.get $1 local.get $0 + call $~lib/rt/itcms/Object#set:prev ) - (func $field-initialization/Value_Init#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) local.get $0 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 - i32.const 1 - i32.store + 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/stub/__release (param $0 i32) - nop - ) - (func $field-initialization/Value#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 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 + 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/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) + (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 i64) + (local $9 i32) (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 + (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 1 - i32.gt_s - drop + i32.const 368 + i32.const 273 + 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.eqz - if - br $~lib/util/memory/memset|inlined.0 - end - local.get $5 + i32.const 1073741820 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 275 + 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.add i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz i32.sub - local.set $6 - local.get $5 - local.get $4 - i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 + local.set $4 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 + 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.store8 offset=2 + 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 288 + 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 $4 - i32.store8 offset=2 + 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 - i32.store8 offset=1 - local.get $3 - i32.const 6 - i32.le_u - if - br $~lib/util/memory/memset|inlined.0 - end + local.set $10 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 + 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 - br $~lib/util/memory/memset|inlined.0 + 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 - local.get $5 - i32.sub + 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 $2 i32.const 3 + i32.const -1 + i32.xor i32.and - local.set $7 + i32.const 4 + i32.add local.get $5 - local.get $7 + i32.const 3 + i32.const -1 + i32.xor + i32.and 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.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 $5 - local.get $8 - i32.store local.get $6 - local.get $8 - i32.store offset=24 + i32.load + local.set $3 + i32.const 1 + drop local.get $3 - i32.const 8 - i32.le_u + i32.const 1 + i32.and + i32.eqz if - br $~lib/util/memory/memset|inlined.0 + i32.const 0 + i32.const 368 + i32.const 224 + i32.const 16 + call $~lib/builtins/abort + unreachable 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 + 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 - br $~lib/util/memory/memset|inlined.0 + 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 - 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 + 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.store - local.get $6 + i32.const 1073741820 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 239 + 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 368 + i32.const 240 + 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.store offset=4 - local.get $6 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 local.get $8 - i32.store offset=8 - local.get $6 + i32.clz + i32.sub + local.set $9 local.get $8 - i32.store offset=12 - i32.const 24 - local.get $5 + local.get $9 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 + 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 - 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 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $field-initialization/Value_Init#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $field-initialization/Value#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (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 290 + 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-initialization/Ref_Init#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 $field-initialization/Nullable_Init#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 $field-initialization/Nullable#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 $field-initialization/Value_Ctor#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $field-initialization/Value_Init_Ctor#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $field-initialization/Value_Ctor_Init#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $field-initialization/Ref_Init_Ctor#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 $field-initialization/Ref_Ctor_Init#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 $field-initialization/Ref_Ctor_Param#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 $field-initialization/Nullable_Ctor#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 $field-initialization/Nullable_Init_Ctor#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 $field-initialization/Nullable_Ctor_Init#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 $field-initialization/Inherit_Base#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 $field-initialization/SomeObject#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $field-initialization/SomeObject#set:b (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (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-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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 $field-initialization/SomeOtherObject#set:c (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $field-initialization/Flow_Balanced#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 $field-initialization/Ref_Init_InlineCtor#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 $field-initialization/Ref_InlineCtor_Init#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/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $field-initialization/Ref_Init~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-initialization/Nullable_Init~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-initialization/Nullable~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-initialization/Ref_Init_Ctor~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-initialization/Ref_Ctor_Init~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-initialization/Ref_Ctor_Param~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-initialization/Nullable_Ctor~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-initialization/Nullable_Init_Ctor~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-initialization/Nullable_Ctor_Init~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-initialization/Inherit~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/Inherit_Base~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $field-initialization/Inherit_Ctor~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + ) + (func $field-initialization/SomeObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $field-initialization/SomeOtherObject~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + local.get $0 + i32.load offset=8 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $field-initialization/Flow_Balanced~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-initialization/Ref_Init_InlineCtor~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-initialization/Ref_InlineCtor_Init~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 $field-initialization/Ref_InlineCtor_Init + block $field-initialization/Ref_Init_InlineCtor + block $field-initialization/Flow_Balanced + block $field-initialization/SomeOtherObject + block $field-initialization/SomeObject + block $field-initialization/Inherit_Ctor + block $field-initialization/Inherit_Base + block $field-initialization/Inherit + block $field-initialization/Nullable_Ctor_Init + block $field-initialization/Nullable_Init_Ctor + block $field-initialization/Nullable_Ctor + block $field-initialization/Ref_Ctor_Param + block $field-initialization/Ref_Ctor_Init + block $field-initialization/Ref_Init_Ctor + block $field-initialization/Value_Ctor_Init + block $field-initialization/Value_Init_Ctor + block $field-initialization/Value_Ctor + block $field-initialization/Nullable + block $field-initialization/Nullable_Init + block $field-initialization/Ref_Init + block $field-initialization/Value + block $field-initialization/Value_Init + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $field-initialization/Value_Init $field-initialization/Value $field-initialization/Ref_Init $field-initialization/Nullable_Init $field-initialization/Nullable $field-initialization/Value_Ctor $field-initialization/Value_Init_Ctor $field-initialization/Value_Ctor_Init $field-initialization/Ref_Init_Ctor $field-initialization/Ref_Ctor_Init $field-initialization/Ref_Ctor_Param $field-initialization/Nullable_Ctor $field-initialization/Nullable_Init_Ctor $field-initialization/Nullable_Ctor_Init $field-initialization/Inherit $field-initialization/Inherit_Base $field-initialization/Inherit_Ctor $field-initialization/SomeObject $field-initialization/SomeOtherObject $field-initialization/Flow_Balanced $field-initialization/Ref_Init_InlineCtor $field-initialization/Ref_InlineCtor_Init $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable~visit + return + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Param~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Init_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Nullable_Ctor_Init~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Base~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Inherit_Ctor~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/SomeOtherObject~visit + return + end + local.get $0 + local.get $1 + call $field-initialization/Flow_Balanced~visit + return end + local.get $0 + local.get $1 + call $field-initialization/Ref_Init_InlineCtor~visit + return end + local.get $0 + local.get $1 + call $field-initialization/Ref_InlineCtor_Init~visit + return end + unreachable ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + (func $~start + call $start:field-initialization + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 112 - i32.const 160 - i32.const 49 - i32.const 43 + i32.const 17376 + i32.const 17424 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - call $~lib/rt/stub/__new - local.set $2 - local.get $2 - i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/stub/__retain - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) - (func $field-initialization/Ref_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 ) - (func $field-initialization/Nullable_Init#constructor (param $0 i32) (result i32) + (func $field-initialization/Inherit#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 4 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $0 i32.store local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $field-initialization/Nullable#constructor (param $0 i32) (result i32) + (func $field-initialization/Inherit_Ctor#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 4 - i32.const 7 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/Inherit_Base#constructor + local.tee $0 i32.store local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $field-initialization/Value_Ctor#constructor (param $0 i32) (result i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.eqz + local.get $1 + i32.eq if - i32.const 4 + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 8 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 i32.const 0 - i32.store - local.get $0 - ) - (func $field-initialization/Value_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 9 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq end - local.get $0 - i32.const 1 - i32.store - local.get $0 - ) - (func $field-initialization/Value_Ctor_Init#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz if - i32.const 4 - i32.const 10 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 - i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $0 - i32.const 1 + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $0 - ) - (func $field-initialization/Ref_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + local.get $3 + call $~lib/string/String#get:length + i32.ne if - i32.const 4 - i32.const 11 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $field-initialization/Ref_Ctor_Init#constructor (param $0 i32) (result i32) + (func $field-initialization/SomeOtherObject#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.eqz if - i32.const 4 + global.get $~lib/memory/__stack_pointer i32.const 12 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $field-initialization/SomeObject#constructor + local.tee $0 i32.store local.get $0 - local.tee $1 - i32.const 0 i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store + call $field-initialization/SomeOtherObject#set:c local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $field-initialization/Ref_Ctor_Param#constructor (param $0 i32) (param $1 i32) (result i32) + (func $start:field-initialization + (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 40 + 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 + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Init#constructor + local.tee $0 + i32.store local.get $0 + i32.load + i32.const 1 + i32.eq i32.eqz if - i32.const 4 - i32.const 13 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - call $~lib/rt/stub/__retain + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value#constructor + local.tee $0 i32.store - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $field-initialization/Nullable_Ctor#constructor (param $0 i32) (result i32) local.get $0 + i32.load + i32.const 0 + i32.eq i32.eqz if - i32.const 4 - i32.const 14 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/Ref_Init#constructor + local.tee $0 i32.store local.get $0 - ) - (func $field-initialization/Nullable_Init_Ctor#constructor (param $0 i32) (result i32) - local.get $0 + i32.load + i32.const 0 + i32.ne i32.eqz if - i32.const 4 - i32.const 15 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 24 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Nullable_Init#constructor + local.tee $0 i32.store local.get $0 - ) - (func $field-initialization/Nullable_Ctor_Init#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 + i32.load + i32.const 0 + i32.ne i32.eqz if - i32.const 4 - i32.const 16 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 32 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/Nullable#constructor + local.tee $0 i32.store local.get $0 - local.tee $1 + i32.load i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/stub/__release - local.get $2 + call $field-initialization/Value_Ctor#constructor + local.tee $0 i32.store local.get $0 - ) - (func $field-initialization/Inherit_Base#constructor (param $0 i32) (result i32) - local.get $0 + i32.load + i32.const 0 + i32.eq i32.eqz if - i32.const 4 - i32.const 18 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 52 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Value_Init_Ctor#constructor + local.tee $0 i32.store local.get $0 - ) - (func $field-initialization/Inherit#constructor (param $0 i32) (result i32) - local.get $0 + i32.load + i32.const 1 + i32.eq i32.eqz if - i32.const 4 - i32.const 17 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Value_Ctor_Init#constructor + local.tee $0 + i32.store local.get $0 - call $field-initialization/Inherit_Base#constructor - local.set $0 - local.get $0 - ) - (func $field-initialization/Inherit_Ctor#constructor (param $0 i32) (result i32) - local.get $0 + i32.load + i32.const 1 + i32.eq i32.eqz if - i32.const 4 - i32.const 19 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Ref_Init_Ctor#constructor + local.tee $0 + i32.store local.get $0 - call $field-initialization/Inherit_Base#constructor - local.set $0 - local.get $0 - ) - (func $field-initialization/SomeObject#constructor (param $0 i32) (result i32) - local.get $0 + i32.load + i32.const 0 + i32.ne i32.eqz if - i32.const 8 - i32.const 20 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/Ref_Ctor_Init#constructor + local.tee $0 i32.store local.get $0 + i32.load i32.const 0 - i32.store offset=4 - local.get $0 - ) - (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 $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - 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-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|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 - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - 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 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 94 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $field-initialization/Ref_Ctor_Param#constructor + local.tee $1 + i32.store offset=8 local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + i32.load local.get $0 - local.get $1 i32.eq + i32.eqz if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 0 + i32.const 432 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Ctor#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load i32.const 0 i32.eq - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 0 - i32.eq - end + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 432 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $field-initialization/Nullable_Init_Ctor#constructor + local.tee $1 + i32.store offset=8 local.get $1 - call $~lib/string/String#get:length + i32.load + i32.const 0 i32.ne + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 432 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/Nullable_Ctor_Init#constructor + local.tee $1 + i32.store offset=8 local.get $1 + i32.load i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $field-initialization/SomeOtherObject#constructor (param $0 i32) (result i32) - local.get $0 + i32.ne i32.eqz if - i32.const 12 - i32.const 21 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $field-initialization/SomeObject#constructor - local.set $0 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/Inherit#constructor + local.tee $1 i32.store offset=8 - local.get $0 - ) - (func $field-initialization/Flow_Balanced#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 + local.get $1 + i32.load + i32.const 0 + i32.ne i32.eqz if - i32.const 4 - i32.const 22 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 0 + i32.const 432 + i32.const 147 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + call $field-initialization/Inherit_Ctor#constructor + local.tee $1 + i32.store offset=8 local.get $1 + i32.load + i32.const 0 + i32.ne + i32.eqz if - local.get $0 - local.tee $2 - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 - i32.store - else - local.get $0 - local.tee $3 i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $3 - i32.load - call $~lib/rt/stub/__release - local.get $2 - i32.store + i32.const 432 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - ) - (func $start:field-initialization - (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/__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 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Value_Init#constructor - local.set $0 + call $field-initialization/SomeObject#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $field-initialization/SomeObject#set:a + local.get $1 + i32.const 0 + call $field-initialization/SomeObject#set:b + local.get $1 + local.tee $0 + i32.store local.get $0 i32.load - i32.const 1 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 8 + i32.const 432 + i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value#constructor - local.set $0 - local.get $0 - i32.load + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 i32.const 0 - i32.eq + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 16 + i32.const 432 + i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Ref_Init#constructor - local.set $0 - local.get $0 + call $field-initialization/SomeObject#constructor + local.tee $2 + i32.store offset=16 + local.get $2 + i32.const 1 + call $field-initialization/SomeObject#set:a + local.get $2 + i32.const 0 + call $field-initialization/SomeObject#set:b + local.get $2 + local.tee $3 + i32.store offset=20 + local.get $3 i32.load + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 432 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 i32.const 0 - i32.ne + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 24 + i32.const 432 + i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Nullable_Init#constructor - local.set $0 - local.get $0 + call $field-initialization/SomeObject#constructor + local.tee $4 + i32.store offset=24 + local.get $4 + i32.const 624 + call $field-initialization/SomeObject#set:b + local.get $4 + i32.const 0 + call $field-initialization/SomeObject#set:a + local.get $4 + local.tee $5 + i32.store offset=28 + local.get $5 i32.load i32.const 0 - i32.ne + i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 32 + i32.const 432 + i32.const 170 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.eq + local.get $5 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 624 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 40 + i32.const 432 + i32.const 171 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Value_Ctor#constructor - local.set $0 - local.get $0 + call $field-initialization/SomeObject#constructor + local.tee $6 + i32.store offset=32 + local.get $6 + i32.const 2 + call $field-initialization/SomeObject#set:a + local.get $6 + i32.const 656 + call $field-initialization/SomeObject#set:b + local.get $6 + local.tee $7 + i32.store offset=36 + local.get $7 i32.load - i32.const 0 + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 52 + i32.const 432 + i32.const 173 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Value_Init_Ctor#constructor - local.set $0 - local.get $0 - i32.load - i32.const 1 - i32.eq + local.get $7 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 656 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 62 + i32.const 432 + i32.const 174 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Value_Ctor_Init#constructor - local.set $0 - local.get $0 + call $field-initialization/SomeOtherObject#constructor + local.tee $7 + i32.store offset=36 + local.get $7 + i32.const 688 + call $field-initialization/SomeOtherObject#set:c + local.get $7 + i32.const 0 + call $field-initialization/SomeObject#set:a + local.get $7 + i32.const 0 + call $field-initialization/SomeObject#set:b + local.get $7 + local.tee $5 + i32.store offset=28 + local.get $5 i32.load - i32.const 1 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 73 + i32.const 432 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Ref_Init_Ctor#constructor - local.set $0 - local.get $0 - i32.load + local.get $5 + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 i32.const 0 - i32.ne + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 83 + i32.const 432 + i32.const 183 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Ref_Ctor_Init#constructor - local.set $0 - local.get $0 - i32.load - i32.const 0 - i32.ne + local.get $5 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 688 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 94 + i32.const 432 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - i32.const 0 - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 + call $field-initialization/SomeOtherObject#constructor + local.tee $3 + i32.store offset=20 + local.get $3 + i32.const 3 + call $field-initialization/SomeObject#set:a + local.get $3 + i32.const 720 + call $field-initialization/SomeObject#set:b + local.get $3 + i32.const 752 + call $field-initialization/SomeOtherObject#set:c + local.get $3 + local.tee $0 + i32.store local.get $0 - call $field-initialization/Ref_Ctor_Param#constructor - local.set $1 - local.get $1 i32.load - local.get $0 + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 104 + i32.const 432 + i32.const 186 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Ctor#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.eq + i32.load offset=4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 720 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 114 + i32.const 432 + i32.const 187 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release - i32.const 0 - call $field-initialization/Nullable_Init_Ctor#constructor - local.set $1 - local.get $1 - i32.load - i32.const 0 - i32.ne + local.get $0 + i32.load offset=8 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 752 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 32 - i32.const 124 + i32.const 432 + i32.const 188 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Nullable_Ctor_Init#constructor - local.set $1 - local.get $1 + i32.const 1 + call $field-initialization/Flow_Balanced#constructor + local.tee $0 + i32.store + local.get $0 i32.load i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 32 - i32.const 135 + i32.const 432 + i32.const 205 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Inherit#constructor - local.set $1 - local.get $1 + local.set $5 + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=28 + end + local.get $5 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init_InlineCtor#set:a + local.get $5 + local.tee $5 + i32.store offset=28 + local.get $5 i32.load i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 32 - i32.const 147 + i32.const 432 + i32.const 218 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 0 - call $field-initialization/Inherit_Ctor#constructor - local.set $1 - local.get $1 + local.set $0 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $field-initialization/Ref_InlineCtor_Init#set:a + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_InlineCtor_Init#set:a + local.get $0 + local.tee $0 + i32.store + local.get $0 i32.load i32.const 0 i32.ne i32.eqz if i32.const 0 - i32.const 32 - i32.const 153 + i32.const 432 + i32.const 230 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $field-initialization/Value_Init#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 - call $field-initialization/SomeObject#constructor + 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 1 + call $field-initialization/Value_Init#set:a + 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 $field-initialization/Value#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 $1 - i32.const 0 - i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 - i32.load - i32.const 0 - i32.eq i32.eqz if - i32.const 0 - i32.const 32 - i32.const 164 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.load offset=4 i32.const 0 - call $~lib/string/String.__eq - i32.eqz + call $field-initialization/Value#set:a + 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/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 0 - i32.const 32 - i32.const 165 - i32.const 3 + i32.const 512 + i32.const 560 + i32.const 49 + i32.const 43 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $2 - local.get $2 - i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 i32.store local.get $2 i32.const 0 - i32.store offset=4 + local.get $1 + call $~lib/memory/memory.fill local.get $2 - call $~lib/rt/stub/__retain local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.load - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + ) + (func $field-initialization/Ref_Init#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 - call $~lib/string/String.__eq + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 i32.const 0 - call $field-initialization/SomeObject#constructor - local.set $4 - local.get $4 - i32.const 224 - i32.store offset=4 - local.get $4 i32.const 0 - i32.store - local.get $4 - call $~lib/rt/stub/__retain - local.set $5 - local.get $5 - i32.load + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init#set:a + 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 $field-initialization/Nullable_Init#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.eq - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=4 - i32.const 224 - call $~lib/string/String.__eq + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 171 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Nullable_Init#set:a + 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 $field-initialization/Nullable#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 - call $field-initialization/SomeObject#constructor - local.set $6 - local.get $6 - i32.const 2 i32.store - local.get $6 - i32.const 256 - i32.store offset=4 - local.get $6 - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 - i32.load - i32.const 2 - i32.eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 173 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $7 - i32.load offset=4 - i32.const 256 - call $~lib/string/String.__eq + local.get $0 + i32.const 0 + call $field-initialization/Nullable#set:a + 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 $field-initialization/Value_Ctor#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 - i32.const 0 - i32.const 32 - i32.const 174 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $1 - call $~lib/rt/stub/__release local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release i32.const 0 - call $field-initialization/SomeOtherObject#constructor - local.set $7 - local.get $7 - i32.const 288 - i32.store offset=8 - local.get $7 + call $field-initialization/Value_Ctor#set:a + 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 $field-initialization/Value_Init_Ctor#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 $7 - i32.const 0 - i32.store offset=4 - local.get $7 - call $~lib/rt/stub/__retain - local.set $6 - local.get $6 - i32.load - i32.const 0 - i32.eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 182 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $6 - i32.load offset=4 + local.get $0 + i32.const 1 + call $field-initialization/Value_Init_Ctor#set:a + 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 $field-initialization/Value_Ctor_Init#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 - call $~lib/string/String.__eq + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 183 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $6 - i32.load offset=8 - i32.const 288 - call $~lib/string/String.__eq + local.get $0 + i32.const 0 + call $field-initialization/Value_Ctor_Init#set:a + local.get $0 + i32.const 1 + call $field-initialization/Value_Ctor_Init#set:a + 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 $field-initialization/Ref_Init_Ctor#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 - i32.const 0 - i32.const 32 - i32.const 184 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Init_Ctor#set:a + 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 $field-initialization/Ref_Ctor_Init#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 - call $field-initialization/SomeOtherObject#constructor - local.set $5 - local.get $5 - i32.const 3 i32.store - local.get $5 - i32.const 320 - i32.store offset=4 - local.get $5 - i32.const 352 - i32.store offset=8 - local.get $5 - call $~lib/rt/stub/__retain - local.set $4 - local.get $4 - i32.load - i32.const 3 - i32.eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 186 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $4 - i32.load offset=4 - i32.const 320 - call $~lib/string/String.__eq + local.get $0 + i32.const 0 + call $field-initialization/Ref_Ctor_Init#set:a + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Ref_Ctor_Init#set:a + 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 $field-initialization/Ref_Ctor_Param#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 - i32.const 0 - i32.const 32 - i32.const 187 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $4 - i32.load offset=8 - i32.const 352 - call $~lib/string/String.__eq + local.get $0 + local.get $1 + call $field-initialization/Ref_Ctor_Param#set:a + 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 $field-initialization/Nullable_Ctor#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 - i32.const 0 - i32.const 32 - i32.const 188 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $7 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + local.get $0 i32.const 0 - i32.const 1 - call $field-initialization/Flow_Balanced#constructor - local.set $4 - local.get $4 - i32.load + call $field-initialization/Nullable_Ctor#set:a + 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 $field-initialization/Nullable_Init_Ctor#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.ne + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 205 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $4 - call $~lib/rt/stub/__release + local.get $0 + i32.const 0 i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Nullable_Init_Ctor#set:a + 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 $field-initialization/Nullable_Ctor_Init#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 23 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $1 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $1 + local.get $0 + i32.const 0 + call $field-initialization/Nullable_Ctor_Init#set:a + local.get $0 i32.const 0 i32.const 0 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 + call $field-initialization/Nullable_Ctor_Init#set:a + 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 - i32.load + ) + (func $field-initialization/Inherit_Base#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.ne + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 32 - i32.const 218 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Inherit_Base#set:a + 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 - call $~lib/rt/stub/__release + ) + (func $field-initialization/SomeObject#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 - local.set $0 + i32.store local.get $0 i32.eqz if - i32.const 4 - i32.const 24 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $field-initialization/SomeObject#set:a local.get $0 - local.tee $2 i32.const 0 + call $field-initialization/SomeObject#set:b + 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 $field-initialization/Flow_Balanced#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 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.load - call $~lib/rt/stub/__release - local.get $3 i32.store local.get $0 - local.set $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load i32.const 0 - i32.ne - i32.eqz + call $field-initialization/Flow_Balanced#set:a + local.get $1 if + local.get $0 i32.const 0 - i32.const 32 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Flow_Balanced#set:a + else + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $field-initialization/Flow_Balanced#set:a end local.get $0 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:field-initialization + 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/for.json b/tests/compiler/for.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/for.json +++ b/tests/compiler/for.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index d3bcc2be57..5a06999e35 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,21 +1,248 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (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 $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))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") - (data (i32.const 1068) "<\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 1132) "<\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 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/\00t\00l\00s\00f\00.\00t\00s") - (global $for/ran (mut i32) (i32.const 0)) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") + (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 1472) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1500) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17892)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17892 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -29,8 +256,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 272 + i32.const 1424 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -49,8 +276,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 274 + i32.const 1424 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -92,8 +319,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 287 + i32.const 1424 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -184,8 +411,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 200 + i32.const 1424 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -198,8 +425,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 202 + i32.const 1424 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -271,8 +498,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 223 + i32.const 1424 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -326,23 +553,23 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 238 + i32.const 1424 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1216 - i32.const 239 + i32.const 1424 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -389,8 +616,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 255 + i32.const 1424 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -459,8 +686,8 @@ i32.gt_u if i32.const 0 - i32.const 1216 - i32.const 380 + i32.const 1424 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -487,8 +714,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 387 + i32.const 1424 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -515,8 +742,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 400 + i32.const 1424 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -563,70 +790,395 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 0 + end + if + unreachable + end + i32.const 17904 + i32.const 0 + i32.store + i32.const 19472 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 17904 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1216 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 17904 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + br $for-loop|0 end end + i32.const 17904 + i32.const 19476 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17904 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock - local.tee $1 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17892 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17892 + 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 $1 + i32.const 17892 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 @@ -679,8 +1231,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 498 + i32.const 1424 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -694,8 +1246,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 500 + i32.const 1424 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -762,177 +1314,10 @@ 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 1264 - i32.const 0 - i32.store - i32.const 2832 - 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 1264 - 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 1264 - 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 1264 - i32.const 2836 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1264 - 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 1260 - 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 1152 - 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 1152 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1260 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) (func $start:for (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 - global.set $for/ran loop $for-loop|0 local.get $0 i32.const 10 @@ -956,10 +1341,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 0 local.set $0 loop $for-loop|00 @@ -985,10 +1366,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 10 local.set $0 loop $for-loop|01 @@ -1012,10 +1389,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 0 local.set $0 loop $for-loop|02 @@ -1041,10 +1414,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 10 local.set $0 loop $for-loop|03 @@ -1063,10 +1432,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 0 local.set $0 loop $for-loop|04 @@ -1089,14 +1454,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 0 local.set $0 loop $for-loop|05 @@ -1122,18 +1479,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran - i32.const 1 - global.set $for/ran - i32.const 0 - global.set $for/ran i32.const 0 local.set $0 loop $for-loop|06 @@ -1209,45 +1554,51 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 - global.set $for/ran + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.store + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store loop $for-loop|07 local.get $0 if - local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $1 - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end + local.set $0 else - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $0 + i32.store end - local.get $1 - local.set $0 br $for-loop|07 end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1267,64 +1618,51 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $for/ran - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 143 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - global.set $for/ran + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain local.set $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.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 + call $for/Ref#constructor + i32.store + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $1 + i32.store loop $for-loop|08 - block $for-break0 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/rt/pure/__release - local.get $1 - if - local.get $2 + call $for/Ref#constructor + if + block $for-break0 + local.get $0 i32.const 1 i32.add - local.tee $2 + local.tee $0 i32.const 10 i32.eq if - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end i32.const 0 - local.set $0 + local.set $1 br $for-break0 end - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.set $0 + global.get $~lib/memory/__stack_pointer + call $for/Ref#constructor + local.tee $1 + i32.store br $for-loop|08 end end end - local.get $2 + local.get $0 i32.const 10 i32.ne if @@ -1335,7 +1673,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1344,116 +1682,180 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $for/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $for/ran - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - i32.const 0 - i32.const 1056 - i32.const 163 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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/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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $for/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/Ref $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:for + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1508 + i32.lt_s if - i32.const 0 - i32.const 1152 - i32.const 122 - i32.const 14 + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.eq + ) + (func $for/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 local.get $0 - i32.load offset=20 - local.tee $1 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $1 - i32.const 1260 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 + br $__inlined_func$~lib/rt/itcms/interrupt end - br $__inlined_func$~lib/rt/__visit_members + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1152 - 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 1152 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $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 - call $start:for + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + 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 $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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/for.ts b/tests/compiler/for.ts index 565bbd564f..f58eff9f2d 100644 --- a/tests/compiler/for.ts +++ b/tests/compiler/for.ts @@ -161,3 +161,5 @@ function testRefAutorelease(): void { ran = false; testRefAutorelease(); assert(ran); + +__collect(); diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index c4a98f4545..12b2e12398 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -3,22 +3,41 @@ (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 (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 (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 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") - (data (i32.const 44) "<\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 108) "<\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 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/\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 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") + (data (i32.const 44) "<\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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 448) "\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) (global $for/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 236)) + (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 484)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16868)) + (global $~lib/memory/__heap_base i32 (i32.const 16868)) (export "memory" (memory $0)) (start $~start) (func $for/testInitExpression @@ -446,6 +465,324 @@ i32.const 1 global.set $for/ran ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 128 + 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 128 + 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 256 + i32.const 320 + 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 128 + 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) @@ -468,8 +805,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 272 + i32.const 400 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -495,8 +832,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 274 + i32.const 400 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -549,8 +886,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 287 + i32.const 400 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -565,13 +902,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -657,7 +994,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -681,8 +1018,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 200 + i32.const 400 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -698,8 +1035,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 202 + i32.const 400 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -752,7 +1089,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -793,8 +1130,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 223 + i32.const 400 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -827,7 +1164,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -836,7 +1173,7 @@ 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 @@ -858,8 +1195,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 238 + i32.const 400 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -876,8 +1213,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 239 + i32.const 400 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -935,8 +1272,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 255 + i32.const 400 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -960,15 +1297,15 @@ 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 @@ -996,7 +1333,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -1040,8 +1377,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 380 + i32.const 400 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -1083,8 +1420,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 387 + i32.const 400 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1116,8 +1453,8 @@ i32.eqz if i32.const 0 - i32.const 192 i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1154,13 +1491,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 @@ -1171,7 +1508,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 @@ -1198,6 +1535,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 @@ -1240,7 +1579,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 @@ -1328,6 +1667,334 @@ 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 400 + i32.const 565 + 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 + 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 + 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 128 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1354,8 +2021,8 @@ i32.ge_u if i32.const 64 - i32.const 192 - i32.const 461 + i32.const 400 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1438,8 +2105,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 333 + i32.const 400 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1503,8 +2170,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 346 + i32.const 400 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1654,8 +2321,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 360 + i32.const 400 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1680,7 +2347,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 @@ -1693,7 +2360,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 @@ -1704,7 +2371,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 @@ -1734,7 +2401,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) @@ -1763,8 +2430,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 498 + i32.const 400 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1783,8 +2450,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 500 + i32.const 400 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1812,142 +2479,300 @@ 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 64 - i32.const 128 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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.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 128 - i32.const 109 + 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 - call $~lib/builtins/abort - unreachable + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 64 i32.const 128 - i32.const 112 - i32.const 14 + i32.const 256 + i32.const 31 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - ) - (func $for/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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 - ) - (func $~lib/rt/pure/__release (param $0 i32) + 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 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end + call $~lib/memory/memory.fill + local.get $3 ) (func $for/testRef (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $for/Ref#constructor - local.set $1 + local.tee $1 + i32.store loop $for-loop|0 local.get $1 local.set $2 @@ -1961,27 +2786,13 @@ i32.eq if i32.const 0 - local.tee $3 - local.get $1 - 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 $3 local.set $1 else + global.get $~lib/memory/__stack_pointer i32.const 0 call $for/Ref#constructor - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 + local.tee $1 + i32.store end br $for-loop|0 end @@ -2011,8 +2822,10 @@ end i32.const 1 global.set $for/ran - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $for/getRef (result i32) i32.const 0 @@ -2022,27 +2835,30 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $for/Ref#constructor - local.set $1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer call $for/getRef - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + local.tee $1 + i32.store block $for-break0 loop $for-loop|0 call $for/getRef - local.tee $2 - local.set $3 + local.set $2 local.get $2 - call $~lib/rt/pure/__release - local.get $3 if local.get $0 i32.const 1 @@ -2052,27 +2868,13 @@ i32.eq if i32.const 0 - local.tee $2 - local.get $1 - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 local.set $1 br $for-break0 end + global.get $~lib/memory/__stack_pointer call $for/getRef - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 + local.tee $1 + i32.store br $for-loop|0 end end @@ -2102,8 +2904,65 @@ end i32.const 1 global.set $for/ran - local.get $1 - call $~lib/rt/pure/__release + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop ) (func $start:for i32.const 0 @@ -2251,6 +3110,15 @@ end i32.const 0 global.set $for/ran + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $for/testRef global.get $for/ran i32.eqz @@ -2275,149 +3143,16 @@ call $~lib/builtins/abort unreachable end + call $~lib/rt/itcms/__collect ) - (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/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) + (func $~lib/rt/__visit_globals (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 128 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:for - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + i32.const 256 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 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + i32.const 64 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 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -2427,12 +3162,9 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) - (func $for/Ref~visit (param $0 i32) (param $1 i32) - nop - ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) block $invalid block $for/Ref @@ -2445,14 +3177,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $for/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 @@ -2460,11 +3186,52 @@ call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $for/Ref~visit return end unreachable ) + (func $~start + call $start:for + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16896 + i32.const 16944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $for/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 + 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 + ) ) diff --git a/tests/compiler/function-call.json b/tests/compiler/function-call.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/function-call.json +++ b/tests/compiler/function-call.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/function-call.optimized.wat b/tests/compiler/function-call.optimized.wat index c49a97c4eb..8b2f52ea26 100644 --- a/tests/compiler/function-call.optimized.wat +++ b/tests/compiler/function-call.optimized.wat @@ -1,24 +1,59 @@ (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_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (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))) (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\03\00\00\00\08\00\00\00\01") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1100) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1132) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04") - (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07") - (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\08") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\03\00\00\00\08\00\00\00\02") + (data (i32.const 1100) "\1c") + (data (i32.const 1112) "\04\00\00\00\08\00\00\00\03") + (data (i32.const 1132) "<") + (data (i32.const 1144) "\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s") + (data (i32.const 1196) "\1c") + (data (i32.const 1208) "\04\00\00\00\08\00\00\00\04") + (data (i32.const 1228) "\1c") + (data (i32.const 1240) "\05\00\00\00\08\00\00\00\05") + (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) "\1c") + (data (i32.const 1672) "\07\00\00\00\08\00\00\00\06") + (data (i32.const 1692) "\1c") + (data (i32.const 1704) "\05\00\00\00\08\00\00\00\07") + (data (i32.const 1724) "\1c") + (data (i32.const 1736) "\08\00\00\00\08\00\00\00\08") + (data (i32.const 1760) "\t\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1812) " ") (table $0 9 funcref) (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|0 $start:function-call~anonymous|2 $start:function-call~anonymous|2 $start:function-call~fn2 $function-call/Foo#fnVoid $start:function-call~fn2 $function-call/Foo#fnRet) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $function-call/foo (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18220)) (export "memory" (memory $0)) (start $~start) (func $start:function-call~anonymous|0 @@ -29,8 +64,1293 @@ local.get $1 i32.add ) - (func $start:function-call~fn2 (param $0 i32) (result i32) + (func $start:function-call~fn2 (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $function-call/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18220 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 273 + 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 1616 + i32.const 275 + 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 1616 + i32.const 288 + 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 1616 + i32.const 201 + 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 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1616 + i32.const 224 + 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 1616 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 240 + 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 1616 + i32.const 256 + 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 1616 + i32.const 381 + 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 1616 + i32.const 388 + 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 1616 + i32.const 401 + 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 18224 + i32.const 0 + i32.store + i32.const 19792 + 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 18224 + 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 18224 + 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 18224 + i32.const 19796 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18224 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18220 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + 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 $1 + i32.const 18220 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 1616 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1616 + i32.const 502 + 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 $function-call/Foo#fnVoid (param $0 i32) nop @@ -40,9 +1360,67 @@ local.get $2 i32.add ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $function-call/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $function-call/Foo $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:function-call + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $start:function-call (local $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 i32.const 1056 i32.load call_indirect (type $none_=>_none) @@ -93,67 +1471,115 @@ call $~lib/builtins/abort unreachable end - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 1388 - i32.lt_u + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 66923 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|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-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end - i32.const 1356 - i32.const 28 - i32.store - i32.const 1360 - i32.const 0 - i32.store - i32.const 1364 - i32.const 0 - i32.store - i32.const 1368 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 6 - i32.store - i32.const 1372 + i32.store offset=12 + local.get $0 i32.const 0 + i32.store offset=16 + local.get $0 + 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 $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.store - i32.const 1376 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $function-call/foo - i32.const 1376 - i32.const 1280 + global.get $~lib/memory/__stack_pointer + global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 + i32.const 1680 i32.load call_indirect (type $i32_=>_none) i32.const 1 - i32.const 1312 + i32.const 1712 i32.load call_indirect (type $i32_=>_i32) i32.const 1 @@ -166,10 +1592,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $function-call/foo + local.tee $0 + i32.store + local.get $0 i32.const 1 i32.const 2 - i32.const 1344 + i32.const 1744 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 3 @@ -182,8 +1612,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:function-call + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 09bd477f35..4ef626ac1d 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -1,21 +1,33 @@ (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 $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))) (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\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "\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 108) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 172) "\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 204) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 236) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 268) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 300) "\1c\00\00\00\01\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\08\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\03\00\00\00\08\00\00\00\01\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\03\00\00\00\08\00\00\00\02\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\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00c\00a\00l\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 236) "<\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 300) "<\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 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\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$\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\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 544) "\00\00\00\00\00\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\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 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 736) "\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") (table $0 9 funcref) (elem (i32.const 1) $start:function-call~anonymous|0 $start:function-call~anonymous|1 $start:function-call~anonymous|2 $start:function-call~anonymous|3 $start:function-call~fn2 $function-call/Foo#fnVoid $function-call/Foo#fnThis $function-call/Foo#fnRet) (global $function-call/fnVoid (mut i32) (i32.const 32)) @@ -24,10 +36,23 @@ (global $function-call/fnRet (mut i32) (i32.const 96)) (global $function-call/faRet (mut i32) (i32.const 192)) (global $function-call/fnThis (mut i32) (i32.const 224)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $function-call/foo (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 332)) + (global $~lib/rt/__rtti_base i32 (i32.const 736)) + (global $~lib/memory/__data_end i32 (i32.const 812)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) + (global $~lib/memory/__heap_base i32 (i32.const 17196)) (export "memory" (memory $0)) (start $~start) (func $start:function-call~anonymous|0 @@ -49,168 +74,2469 @@ (func $start:function-call~fn2 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 320 + 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 320 + 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 512 + 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 320 + 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/stub/maybeGrowMemory (param $0 i32) + (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) - memory.size - local.set $1 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + 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 592 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 i32.const -1 i32.xor i32.and - local.set $2 + 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 592 + i32.const 275 + 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 592 + i32.const 288 + 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 592 + 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 592 + 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 $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 592 + i32.const 224 + 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 592 + i32.const 239 + 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 592 + i32.const 240 + 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 592 + i32.const 256 + 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 592 + i32.const 381 + 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 592 + i32.const 388 + 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 592 + i32.const 401 + 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 592 + i32.const 565 + 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 + 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 + 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 320 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 256 + i32.const 592 + i32.const 462 + 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 592 + i32.const 334 + 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 592 + i32.const 347 + 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 592 + i32.const 361 + 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 592 + i32.const 500 + 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 592 + i32.const 502 + 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 $2 - i32.gt_u - if + 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 - 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 + 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 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 256 + i32.const 320 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 $0 + call $~lib/memory/memory.fill local.get $3 + ) + (func $function-call/Foo#fnVoid (param $0 i32) + nop + ) + (func $function-call/Foo#fnThis (param $0 i32) (result i32) local.get $0 - i32.store offset=16 + ) + (func $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 local.get $2 - i32.const 16 i32.add ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $function-call/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 448 local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $function-call/Foo#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end + ) + (func $~lib/function/Function<%28%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 $function-call/Foo#fnVoid (param $0 i32) - nop + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit ) - (func $function-call/Foo#fnThis (param $0 i32) (result i32) + (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 $function-call/Foo#fnRet (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - local.get $2 - i32.add + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:i32%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<%28this:i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%29=>void>#__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<%28this:function-call/Foo%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>#__visit + ) + (func $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__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<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> + block $~lib/function/Function<%28this:function-call/Foo%29=>void> + block $function-call/Foo + block $~lib/function/Function<%28this:i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28this:i32%29=>i32> $function-call/Foo $~lib/function/Function<%28this:function-call/Foo%29=>void> $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32> $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:i32%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28this:function-call/Foo%2Ci32%2Ci32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:function-call + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17216 + i32.const 17264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $start:function-call + (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 0 global.set $~argumentsLength global.get $function-call/fnVoid @@ -274,33 +2600,33 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $function-call/Foo#constructor global.set $function-call/foo global.get $function-call/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 global.set $~argumentsLength - i32.const 256 + i32.const 656 i32.load call_indirect (type $i32_=>_none) i32.const 1 i32.const 0 global.set $~argumentsLength - i32.const 288 + i32.const 688 i32.load call_indirect (type $i32_=>_i32) i32.const 1 @@ -315,11 +2641,16 @@ unreachable end global.get $function-call/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 1 i32.const 2 i32.const 2 global.set $~argumentsLength - i32.const 320 + i32.const 720 i32.load call_indirect (type $i32_i32_i32_=>_i32) i32.const 3 @@ -333,8 +2664,37 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:function-call + (func $function-call/Foo#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 ) ) diff --git a/tests/compiler/function-expression.json b/tests/compiler/function-expression.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/function-expression.json +++ b/tests/compiler/function-expression.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 72beb292ca..ce7e816def 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1,31 +1,74 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_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_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) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1068) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1132) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1164) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04") - (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07") - (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08") - (data (i32.const 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\t") - (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n") - (data (i32.const 1420) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b") - (data (i32.const 1452) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0c") - (data (i32.const 1484) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0d") - (data (i32.const 1516) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0e") - (data (i32.const 1548) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0f") - (data (i32.const 1580) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\10") - (data (i32.const 1612) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\11") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "<") + (data (i32.const 1080) "\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data (i32.const 1132) "\1c") + (data (i32.const 1144) "\03\00\00\00\08\00\00\00\02") + (data (i32.const 1164) "\1c") + (data (i32.const 1176) "\04\00\00\00\08\00\00\00\03") + (data (i32.const 1196) "\1c") + (data (i32.const 1208) "\05\00\00\00\08\00\00\00\04") + (data (i32.const 1228) "\1c") + (data (i32.const 1240) "\06\00\00\00\08\00\00\00\05") + (data (i32.const 1260) "\1c") + (data (i32.const 1272) "\06\00\00\00\08\00\00\00\06") + (data (i32.const 1292) "\1c") + (data (i32.const 1304) "\06\00\00\00\08\00\00\00\07") + (data (i32.const 1324) "\1c") + (data (i32.const 1336) "\06\00\00\00\08\00\00\00\08") + (data (i32.const 1356) "\1c") + (data (i32.const 1368) "\06\00\00\00\08\00\00\00\t") + (data (i32.const 1388) "\1c") + (data (i32.const 1400) "\06\00\00\00\08\00\00\00\n") + (data (i32.const 1420) "\1c") + (data (i32.const 1432) "\05\00\00\00\08\00\00\00\0b") + (data (i32.const 1452) "\1c") + (data (i32.const 1464) "\03\00\00\00\08\00\00\00\0c") + (data (i32.const 1484) "\1c") + (data (i32.const 1496) "\07\00\00\00\08\00\00\00\0d") + (data (i32.const 1516) "\1c") + (data (i32.const 1528) "\03\00\00\00\08\00\00\00\0e") + (data (i32.const 1548) "\1c") + (data (i32.const 1560) "\07\00\00\00\08\00\00\00\0f") + (data (i32.const 1580) "<") + (data (i32.const 1592) "\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 1644) "<") + (data (i32.const 1656) "\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 1772) "<") + (data (i32.const 1784) "\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 1836) ",") + (data (i32.const 1848) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1916) "<") + (data (i32.const 1928) "\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 1980) "\1c") + (data (i32.const 1992) "\03\00\00\00\08\00\00\00\10") + (data (i32.const 2012) "\1c") + (data (i32.const 2024) "\07\00\00\00\08\00\00\00\11") + (data (i32.const 2048) "\t\00\00\00 \00\00\00\00\00\00\00 ") (table $0 18 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|2 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18508)) (export "memory" (memory $0)) (start $~start) (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) @@ -37,34 +80,1456 @@ (func $start:function-expression~anonymous|2 (result i32) i32.const 1 ) - (func $start:function-expression~anonymous|3 (param $0 i32) (param $1 i32) (result i32) + (func $start:function-expression~anonymous|3 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + ) + (func $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) + i32.const 42 + ) + (func $function-expression/testGlobal~anonymous|0~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 24 + i32.add + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1792 + call $~lib/rt/itcms/__visit + i32.const 1600 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 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 18508 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1664 + 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 1664 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2048 + i32.load + i32.gt_u + if + i32.const 1792 + i32.const 1856 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 2052 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 273 + 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 1936 + i32.const 275 + 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 1936 + i32.const 288 + 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 1936 + i32.const 201 + 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 1936 + 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 $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 1936 + i32.const 224 + 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 1936 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1936 + i32.const 240 + 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 1936 + i32.const 256 + 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 1936 + i32.const 381 + 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 1936 + i32.const 388 + 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 1936 + i32.const 401 + 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 18512 + i32.const 0 + i32.store + i32.const 20080 + 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 18512 + 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 18512 + 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 18512 + i32.const 20084 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18512 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18508 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1664 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18508 + 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 $1 + i32.const 18508 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1936 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1936 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 1936 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end local.get $1 - i32.add - ) - (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) + i32.load + i32.const -4 + i32.and + i32.const 28 + i32.lt_u + if + i32.const 0 + i32.const 1936 + i32.const 502 + 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 $start:function-expression~anonymous|5 (param $0 i32) (param $1 i32) (result i32) - i32.const 42 - ) - (func $function-expression/testGlobal~anonymous|0~anonymous|0 (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (result i32) + (local $0 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 8 + i32.store offset=12 local.get $0 - i32.const 24 + i32.const 4 + i32.store offset=16 + local.get $0 + 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 $0 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 ) - (func $function-expression/testGlobal~anonymous|0 (result i32) - i32.const 1472 + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit ) - (func $function-expression/testLocal~anonymous|0 (result i32) - i32.const 1536 + (func $~start + call $start:function-expression ) - (func $function-expression/testField~anonymous|0 (result i32) - i32.const 1600 + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2124 + i32.lt_s + if + i32.const 18528 + i32.const 18576 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $start:function-expression (local $0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.const 1056 i32.load @@ -109,6 +1574,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store i32.const 1 i32.const 2 i32.const 1248 @@ -124,6 +1592,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1 i32.const 2 i32.const 1280 @@ -139,6 +1610,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1312 + i32.store i32.const 1 i32.const 2 i32.const 1312 @@ -199,10 +1673,22 @@ call $~lib/builtins/abort unreachable end - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.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 1504 i32.load call_indirect (type $none_=>_i32) + local.tee $0 + i32.store + i32.const 1 + local.get $0 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -215,10 +1701,29 @@ call $~lib/builtins/abort unreachable end - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 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 1568 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1568 i32.load call_indirect (type $none_=>_i32) + local.tee $0 + i32.store offset=4 + i32.const 1 + local.get $0 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -231,67 +1736,111 @@ call $~lib/builtins/abort unreachable end - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const -16 - i32.and + global.set $~lib/memory/__stack_pointer + i32.const 1712 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1744 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1888 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + 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 2032 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new local.tee $0 - i32.const 1676 - i32.lt_u + i32.store + local.get $0 + i32.const 2032 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1664 + i32.const 290 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + i32.const 2016 + i32.load + i32.const 3 + i32.and + i32.eq if - local.get $1 - i32.const 67211 local.get $0 + i32.const 20 i32.sub - i32.const -65536 + i32.load offset=4 + i32.const 3 i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s + local.tee $2 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if - local.get $0 - memory.grow + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq i32.const 0 - i32.lt_s + local.get $3 + i32.const 3 + i32.eq + select if - unreachable + i32.const 2012 + call $~lib/rt/itcms/Object#makeGray end end end - i32.const 1644 - i32.const 28 - i32.store - i32.const 1648 - i32.const 0 - i32.store - i32.const 1652 - i32.const 0 - i32.store - i32.const 1656 - i32.const 8 - i32.store - i32.const 1660 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store - i32.const 1664 - i32.const 1632 - i32.store - i32.const 1 - i32.const 1664 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load i32.load call_indirect (type $none_=>_i32) + local.tee $0 + i32.store offset=8 + i32.const 1 + local.get $0 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -304,8 +1853,67 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:function-expression + (func $function-expression/testGlobal~anonymous|0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 1472 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1472 + ) + (func $function-expression/testLocal~anonymous|0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 1536 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1536 + ) + (func $function-expression/testField~anonymous|0 (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 2000 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2000 ) ) diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 306b5835e5..4a665205d9 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -1,30 +1,42 @@ (module + (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 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (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_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 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 108) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 140) "\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 172) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 236) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 268) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 300) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 332) "\1c\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\t\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\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 396) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 428) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 460) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 492) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 524) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 556) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 588) "\1c\00\00\00\01\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\11\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\03\00\00\00\08\00\00\00\01\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,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\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\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 204) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 236) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 300) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 332) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 364) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\0d\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\03\00\00\00\08\00\00\00\0e\00\00\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\07\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 556) "<\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 620) "<\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 688) "\00\00\00\00\00\00\00\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 748) "<\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 812) ",\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 864) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 892) "<\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 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1024) "\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") (table $0 18 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0 $function-expression/testGlobal~anonymous|0~anonymous|0 $function-expression/testGlobal~anonymous|0 $function-expression/testLocal~anonymous|0~anonymous|0 $function-expression/testLocal~anonymous|0 $function-expression/testField~anonymous|0~anonymous|0 $function-expression/testField~anonymous|0) (global $function-expression/f1 (mut i32) (i32.const 32)) @@ -33,9 +45,22 @@ (global $function-expression/f3 (mut i32) (i32.const 160)) (global $function-expression/f4 (mut i32) (i32.const 192)) (global $function-expression/globalFunc (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 620)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 1024)) + (global $~lib/memory/__data_end i32 (i32.const 1100)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17484)) + (global $~lib/memory/__heap_base i32 (i32.const 17484)) (export "memory" (memory $0)) (start $~start) (func $start:function-expression~anonymous|0 (param $0 i32) (result i32) @@ -55,17 +80,7 @@ local.get $1 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 $function-expression/testOmitted (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 i32.const 1 i32.const 2 i32.const 2 @@ -73,10 +88,6 @@ local.get $0 i32.load call_indirect (type $i32_i32_=>_i32) - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 ) (func $start:function-expression~anonymous|4 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -91,21 +102,18 @@ ) (func $function-expression/testOmittedReturn1 (result i32) i32.const 320 - call $~lib/rt/stub/__retain ) (func $function-expression/testOmittedReturn2~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 ) (func $function-expression/testOmittedReturn2 (result i32) i32.const 352 - call $~lib/rt/stub/__retain ) (func $function-expression/testOmittedReturn3~anonymous|0 (param $0 i32) (param $1 i32) (result i32) i32.const 42 ) (func $function-expression/testOmittedReturn3 (result i32) i32.const 384 - call $~lib/rt/stub/__retain ) (func $function-expression/testNullable~anonymous|0 (result i32) i32.const 1 @@ -114,11 +122,9 @@ local.get $0 if i32.const 416 - call $~lib/rt/stub/__retain return else i32.const 0 - call $~lib/rt/stub/__retain return end unreachable @@ -128,41 +134,30 @@ local.get $0 i32.add ) - (func $function-expression/testGlobal~anonymous|0 (result i32) - (local $0 i32) - i32.const 448 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) (func $function-expression/testGlobal (local $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 i32.const 480 - local.tee $0 - global.get $function-expression/globalFunc - 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 $function-expression/globalFunc i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/globalFunc i32.load call_indirect (type $none_=>_i32) local.tee $0 - local.set $1 + i32.store i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $0 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -176,39 +171,43 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $function-expression/testLocal~anonymous|0~anonymous|0 (param $0 i32) (result i32) i32.const 24 local.get $0 i32.add ) - (func $function-expression/testLocal~anonymous|0 (result i32) - (local $0 i32) - i32.const 512 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) (func $function-expression/testLocal (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 + global.get $~lib/memory/__stack_pointer i32.const 544 - call $~lib/rt/stub/__retain - local.set $0 + local.tee $0 + i32.store i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $0 i32.load call_indirect (type $none_=>_i32) local.tee $1 - local.set $2 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -222,188 +221,2570 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release + i32.store offset=4 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 16 - i32.shl - i32.const 15 + 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 640 + 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 640 + 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 768 + i32.const 832 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 i32.add - i32.const 15 + 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 640 + 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 - local.set $2 + 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.gt_u + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 912 + i32.const 273 + 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 912 + i32.const 275 + 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 912 + i32.const 288 + 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 912 + 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 912 + 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 $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 912 + i32.const 224 + 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 912 + i32.const 239 + 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 912 + i32.const 240 + 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 912 + i32.const 256 + 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 912 + i32.const 381 + 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 912 + i32.const 388 + 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 912 + i32.const 401 + 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 912 + i32.const 565 + 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 + 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 + 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 640 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 576 + i32.const 912 + i32.const 462 + 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 912 + i32.const 334 + 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 912 + i32.const 347 + 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 912 + i32.const 361 + 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 912 + i32.const 500 + 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 912 + i32.const 502 + 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 + 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/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 576 + i32.const 640 + i32.const 256 + 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 640 + i32.const 290 + 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 - local.get $2 + i32.const 20 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 + 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 $3 - memory.grow - i32.const 0 - i32.lt_s + local.get $2 if - unreachable + 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 $function-expression/FieldClass#set:fieldFunc (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 $function-expression/testField~anonymous|0~anonymous|0 (param $0 i32) (result i32) + i32.const 24 local.get $0 - global.set $~lib/rt/stub/offset + i32.add ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) + i32.const 768 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 576 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.load + local.tee $2 if - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.set $2 + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/computeSize - local.set $3 - local.get $2 - local.get $3 - i32.add - call $~lib/rt/stub/maybeGrowMemory + i32.load offset=4 local.get $1 - local.get $3 - i32.store - local.get $2 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - i32.const 16 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $0 i32) (param $1 i32) 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 + i32.load offset=4 local.get $1 - i32.store offset=12 - local.get $3 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit ) - (func $function-expression/FieldClass#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 4 - i32.const 8 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/rt/stub/__retain - i32.store + call $~lib/function/Function<%28%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/stub/__retain - local.set $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/rt/stub/__release + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>%28i32%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 $function-expression/testField~anonymous|0~anonymous|0 (param $0 i32) (result i32) - i32.const 24 + (func $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.add + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>#__visit ) - (func $function-expression/testField~anonymous|0 (result i32) - (local $0 i32) - i32.const 576 - call $~lib/rt/stub/__retain - local.set $0 + (func $function-expression/FieldClass~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 $function-expression/FieldClass + block $~lib/function/Function<%28%29=>%28i32%29=>i32> + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $~lib/function/Function<%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28i32%2Ci32%29=>i32> $~lib/function/Function<%28%29=>%28i32%29=>i32> $function-expression/FieldClass $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $function-expression/FieldClass~visit + return + end + unreachable + ) + (func $~start + call $start:function-expression + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17504 + i32.const 17552 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $function-expression/testField (local $0 i32) (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 608 + i32.const 1008 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $function-expression/FieldClass#constructor - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $0 @@ -411,10 +2792,10 @@ i32.load call_indirect (type $none_=>_i32) local.tee $1 - local.set $2 + i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $2 + local.get $1 i32.load call_indirect (type $i32_=>_i32) i32.const 25 @@ -428,16 +2809,21 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:function-expression (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 1 i32.const 1 global.set $~argumentsLength @@ -494,6 +2880,11 @@ unreachable end i32.const 224 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 3 i32.eq @@ -507,6 +2898,11 @@ unreachable end i32.const 256 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 1 i32.eq @@ -520,6 +2916,11 @@ unreachable end i32.const 288 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 42 i32.eq @@ -537,7 +2938,6 @@ i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn1 - local.tee $0 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 3 @@ -556,7 +2956,6 @@ i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn2 - local.tee $1 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 1 @@ -575,7 +2974,6 @@ i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn3 - local.tee $2 i32.load call_indirect (type $i32_i32_=>_i32) i32.const 42 @@ -591,7 +2989,6 @@ end i32.const 0 call $function-expression/testNullable - local.tee $3 i32.const 0 i32.eq i32.eqz @@ -605,31 +3002,119 @@ end call $function-expression/testGlobal call $function-expression/testLocal - global.get $~lib/memory/__heap_base + i32.const 688 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 720 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 864 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $function-expression/testField + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add - i32.const 15 + global.set $~lib/memory/__stack_pointer + ) + (func $function-expression/testGlobal~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 448 + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $function-expression/testLocal~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset - call $function-expression/testField + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 512 + local.tee $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 $function-expression/FieldClass#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 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release + call $function-expression/FieldClass#set:fieldFunc + 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 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release ) - (func $~start - call $start:function-expression + (func $function-expression/testField~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 976 + local.tee $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/function-types.json b/tests/compiler/function-types.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/function-types.json +++ b/tests/compiler/function-types.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index 48131f7cfd..0f5d8a8c8b 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -4,16 +4,24 @@ (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1068) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") - (data (i32.const 1132) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02") - (data (i32.const 1164) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\04") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "<") + (data (i32.const 1080) "\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s") + (data (i32.const 1132) "\1c") + (data (i32.const 1144) "\04\00\00\00\08\00\00\00\02") + (data (i32.const 1164) "\1c") + (data (i32.const 1176) "\05\00\00\00\08\00\00\00\03") + (data (i32.const 1196) "\1c") + (data (i32.const 1208) "\03\00\00\00\08\00\00\00\04") (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) (global $function-types/i32Adder (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17612)) (export "memory" (memory $0)) (start $~start) (func $function-types/makeAdder~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -31,9 +39,45 @@ local.get $1 f64.add ) + (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 2 + global.set $~argumentsLength + local.get $0 + local.get $1 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + ) + (func $~start + call $start:function-types + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + if + i32.const 17632 + i32.const 17680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $start:function-types + (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 1056 global.set $function-types/i32Adder + i32.const 2 + global.set $~argumentsLength i32.const 1 i32.const 2 i32.const 1056 @@ -49,6 +93,8 @@ call $~lib/builtins/abort unreachable end + i32.const 2 + global.set $~argumentsLength i64.const 10 i64.const 20 i32.const 1152 @@ -64,6 +110,8 @@ call $~lib/builtins/abort unreachable end + i32.const 2 + global.set $~argumentsLength f64.const 1.5 f64.const 2.5 i32.const 1184 @@ -79,11 +127,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $function-types/i32Adder + local.tee $0 + i32.store i32.const 2 i32.const 3 - global.get $function-types/i32Adder - i32.load - call_indirect (type $i32_i32_=>_i32) + local.get $0 + call $function-types/doAddWithFn i32.const 5 i32.ne if @@ -94,6 +145,8 @@ call $~lib/builtins/abort unreachable end + i32.const 2 + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 1056 @@ -109,11 +162,13 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store i32.const 4 i32.const 5 i32.const 1216 - i32.load - call_indirect (type $i32_i32_=>_i32) + call $function-types/doAddWithFn i32.const 9 i32.ne if @@ -124,11 +179,42 @@ call $~lib/builtins/abort unreachable end + i32.const 2 + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1056 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + end i32.const 1 i32.const 2 - i32.const 1056 - i32.load - call_indirect (type $i32_i32_=>_i32) + local.get $0 + call $function-types/doAddWithFn + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 3 i32.ne if @@ -139,11 +225,13 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1 i32.const 2 i32.const 1056 - i32.load - call_indirect (type $i32_i32_=>_i32) + call $function-types/doAddWithFn i32.const 3 i32.ne if @@ -154,8 +242,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:function-types + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index 8995a92f00..f26ce47c8b 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -1,25 +1,26 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (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))) (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\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 108) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 140) "\1c\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 172) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\04\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\03\00\00\00\08\00\00\00\01\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\"\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00t\00y\00p\00e\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 140) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 204)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16588)) + (global $~lib/memory/__heap_base i32 (i32.const 16588)) (export "memory" (memory $0)) (start $~start) (func $function-types/makeAdder~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -27,12 +28,8 @@ local.get $1 i32.add ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) (func $function-types/makeAdder (result i32) i32.const 32 - call $~lib/rt/stub/__retain ) (func $function-types/makeAdder~anonymous|0 (param $0 i64) (param $1 i64) (result i64) local.get $0 @@ -41,7 +38,6 @@ ) (func $function-types/makeAdder (result i32) i32.const 128 - call $~lib/rt/stub/__retain ) (func $function-types/makeAdder~anonymous|0 (param $0 f64) (param $1 f64) (result f64) local.get $0 @@ -50,16 +46,8 @@ ) (func $function-types/makeAdder (result i32) i32.const 160 - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop ) (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 2 @@ -67,26 +55,15 @@ local.get $2 i32.load call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 ) (func $function-types/doAdd (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) local.get $0 local.get $1 i32.const 2 global.set $~argumentsLength call $function-types/makeAdder - local.tee $2 i32.load call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 ) (func $function-types/addI32 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -94,10 +71,6 @@ i32.add ) (func $function-types/makeAndAdd (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 2 @@ -105,40 +78,33 @@ local.get $2 i32.load call_indirect (type $i32_i32_=>_i32) - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 ) - (func $function-types/makeAndAdd@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 2 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - call $function-types/makeAdder - local.tee $3 - local.set $2 + (func $~start + call $start:function-types + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16608 + i32.const 16656 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $function-types/makeAndAdd - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 ) (func $start:function-types (local $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 call $function-types/makeAdder global.set $function-types/i32Adder i32.const 1 @@ -184,7 +150,6 @@ i32.const 2 global.set $~argumentsLength call $function-types/makeAdder - local.tee $0 i32.load call_indirect (type $f64_f64_=>_f64) f64.const 4 @@ -201,6 +166,11 @@ i32.const 2 i32.const 3 global.get $function-types/i32Adder + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-types/doAddWithFn i32.const 5 i32.eq @@ -230,6 +200,11 @@ i32.const 4 i32.const 5 i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-types/doAddWithFn i32.const 9 i32.eq @@ -262,7 +237,11 @@ i32.const 1 i32.const 2 call $function-types/makeAdder - local.tee $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $function-types/makeAndAdd i32.const 3 i32.eq @@ -275,12 +254,45 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $function-types/makeAndAdd@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 + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 2 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + call $function-types/makeAdder + local.tee $2 + i32.store + end local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - ) - (func $~start - call $start:function-types + local.get $2 + call $function-types/makeAndAdd + 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/function.json b/tests/compiler/function.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/function.json +++ b/tests/compiler/function.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat index c887809623..95a1c40381 100644 --- a/tests/compiler/function.untouched.wat +++ b/tests/compiler/function.untouched.wat @@ -16,6 +16,9 @@ (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $function/_ diff --git a/tests/compiler/getter-call.json b/tests/compiler/getter-call.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/getter-call.json +++ b/tests/compiler/getter-call.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 7130cf5999..7ea3f826fb 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -1,53 +1,1209 @@ (module - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (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_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) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") + (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 1448) "\04\00\00\00\08\00\00\00\01") + (data (i32.const 1472) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1500) " ") (table $0 2 funcref) (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17900)) (export "test" (func $getter-call/test)) + (export "memory" (memory $0)) (start $~start) - (func $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 ) - (func $getter-call/test (result i32) + (func $~lib/rt/itcms/visitRoots (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 17900 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1472 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1476 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (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 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load local.tee $4 - i32.const 28 + 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.tee $0 - memory.size + 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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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.const 15 + 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 1392 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $1 - i32.gt_u + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17904 + i32.const 0 + i32.store + i32.const 19472 + 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 17904 + 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 17904 + 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 17904 + i32.const 19476 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17904 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17900 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17900 + 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 $1 + i32.const 17900 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $1 + local.set $1 + local.get $2 + local.get $1 local.get $1 local.get $2 i32.lt_s @@ -64,32 +1220,277 @@ 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 1392 + i32.const 500 + 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 502 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $0 - global.set $~lib/rt/stub/offset + 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.store - local.get $4 + 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 $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1516 + i32.lt_s + if + i32.const 17920 + i32.const 17968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $getter-call/test (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.tee $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 0 i32.store offset=16 - i32.const 1056 + local.get $0 + 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 $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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1456 i32.load call_indirect (type $none_=>_i32) - ) - (func $~start - i32.const 1068 - global.set $~lib/rt/stub/offset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index d91d8e3447..41e1675548 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -1,215 +1,2488 @@ (module + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (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 (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))) + (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\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (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\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 448) "\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") (table $0 2 funcref) (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 44)) - (export "memory" (memory $0)) + (global $~lib/rt/__rtti_base i32 (i32.const 448)) + (global $~lib/memory/__data_end i32 (i32.const 492)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16876)) + (global $~lib/memory/__heap_base i32 (i32.const 16876)) (export "test" (func $getter-call/test)) + (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - i32.const 0 - i32.store offset=8 + call $~lib/rt/itcms/Object#set:prev local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + call $~lib/rt/itcms/Object#set:prev ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (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 $getter-call/C#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 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 + 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 $getter-call/C#get:x~anonymous|0 (result i32) - i32.const 42 - ) - (func $getter-call/C#get:x (param $0 i32) (result i32) - i32.const 32 - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $getter-call/test (result i32) - (local $0 i32) + (func $~lib/rt/itcms/visitStack (param $0 i32) (local $1 i32) (local $2 i32) - i32.const 0 - call $getter-call/C#constructor - local.set $0 - i32.const 0 - global.set $~argumentsLength + 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 - call $getter-call/C#get:x - local.tee $1 i32.load - call_indirect (type $none_=>_i32) - local.set $2 + 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 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store ) - (func $~start - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + (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 273 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 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 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $getter-call/C#get:x~anonymous|0 (result i32) + i32.const 42 + ) + (func $getter-call/C#get:x (param $0 i32) (result i32) + i32.const 432 + ) + (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/function/Function<%28%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%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28%29=>i32> + block $getter-call/C + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $getter-call/C $~lib/function/Function<%28%29=>i32> $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/function/Function<%28%29=>i32>~visit + return + end + unreachable + ) + (func $~start + 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 16896 + i32.const 16944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $getter-call/test (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $getter-call/C#constructor + local.tee $0 + i32.store + i32.const 0 + global.set $~argumentsLength + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $getter-call/C#get:x + i32.load + call_indirect (type $none_=>_i32) + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $getter-call/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 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 ) ) diff --git a/tests/compiler/getter-setter.json b/tests/compiler/getter-setter.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/getter-setter.json +++ b/tests/compiler/getter-setter.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 56022475f8..3f63cb95c3 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -3,7 +3,8 @@ (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\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index f0d2b15005..21eece382c 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -5,9 +5,12 @@ (type $none_=>_i32 (func (result 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\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 76)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16460)) + (global $~lib/memory/__heap_base i32 (i32.const 16460)) (export "memory" (memory $0)) (start $~start) (func $getter-setter/Foo.get:bar (result i32) diff --git a/tests/compiler/heap.json b/tests/compiler/heap.json index 11b43d4296..73d40f91f2 100644 --- a/tests/compiler/heap.json +++ b/tests/compiler/heap.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime half" ] } \ No newline at end of file diff --git a/tests/compiler/heap.optimized.wat b/tests/compiler/heap.optimized.wat index 2d19627608..4adfcfccc3 100644 --- a/tests/compiler/heap.optimized.wat +++ b/tests/compiler/heap.optimized.wat @@ -9,16 +9,21 @@ (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\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1100) "<\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 1164) "<\00\00\00\01\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") + (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") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $heap/ptr (mut i32) (i32.const 0)) - (export "memory" (memory $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/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -34,7 +39,7 @@ if i32.const 0 i32.const 1056 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -54,7 +59,7 @@ if i32.const 0 i32.const 1056 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -97,7 +102,7 @@ if i32.const 0 i32.const 1056 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -189,7 +194,7 @@ if i32.const 0 i32.const 1056 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -203,7 +208,7 @@ if i32.const 0 i32.const 1056 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -276,7 +281,7 @@ if i32.const 0 i32.const 1056 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -331,22 +336,22 @@ if i32.const 0 i32.const 1056 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 i32.const 1056 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -394,7 +399,7 @@ if i32.const 0 i32.const 1056 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -464,7 +469,7 @@ if i32.const 0 i32.const 1056 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -492,7 +497,7 @@ if i32.const 0 i32.const 1056 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -520,7 +525,7 @@ if i32.const 0 i32.const 1056 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -587,10 +592,10 @@ if unreachable end - i32.const 1232 + i32.const 17664 i32.const 0 i32.store - i32.const 2800 + i32.const 19232 i32.const 0 i32.store loop $for-loop|0 @@ -601,7 +606,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1232 + i32.const 17664 i32.add i32.const 0 i32.store offset=4 @@ -619,7 +624,7 @@ i32.add i32.const 2 i32.shl - i32.const 1232 + i32.const 17664 i32.add i32.const 0 i32.store offset=96 @@ -637,13 +642,13 @@ br $for-loop|0 end end - i32.const 1232 - i32.const 2804 + i32.const 17664 + i32.const 19236 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1232 + i32.const 17664 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) @@ -653,7 +658,7 @@ if i32.const 1120 i32.const 1056 - i32.const 461 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -727,7 +732,7 @@ if i32.const 0 i32.const 1056 - i32.const 333 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -779,7 +784,7 @@ if i32.const 0 i32.const 1056 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -814,7 +819,7 @@ if i32.const 0 i32.const 1056 - i32.const 360 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -956,7 +961,7 @@ if i32.const 0 i32.const 1056 - i32.const 498 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -971,7 +976,7 @@ if i32.const 0 i32.const 1056 - i32.const 500 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1023,7 +1028,7 @@ if i32.const 0 i32.const 1056 - i32.const 563 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -1230,7 +1235,7 @@ i32.and call $~lib/memory/memory.copy local.get $1 - i32.const 1228 + i32.const 17660 i32.ge_u if local.get $0 @@ -1252,7 +1257,7 @@ call $~lib/rt/tlsf/initialize end local.get $0 - i32.const 1228 + i32.const 17660 i32.lt_u if global.get $~lib/rt/tlsf/ROOT @@ -1337,7 +1342,7 @@ ) (func $~lib/memory/heap.free (param $0 i32) local.get $0 - i32.const 1228 + i32.const 17660 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1353,9 +1358,9 @@ ) (func $~lib/memory/heap.reset i32.const 1184 - i32.const 1056 - i32.const 598 - i32.const 3 + i32.const 1248 + i32.const 109 + i32.const 7 call $~lib/builtins/abort unreachable ) diff --git a/tests/compiler/heap.untouched.wat b/tests/compiler/heap.untouched.wat index e655d78ab3..b205d12a8e 100644 --- a/tests/compiler/heap.untouched.wat +++ b/tests/compiler/heap.untouched.wat @@ -1,7 +1,7 @@ (module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) (type $i32_i32_=>_i32 (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))) @@ -9,21 +9,44 @@ (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/\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\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 140) "<\00\00\00\01\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 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 $heap/ptr (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 204)) - (export "memory" (memory $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)) (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) @@ -47,7 +70,7 @@ if i32.const 0 i32.const 32 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -74,7 +97,7 @@ if i32.const 0 i32.const 32 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -128,7 +151,7 @@ if i32.const 0 i32.const 32 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -143,13 +166,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -235,7 +258,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -260,7 +283,7 @@ if i32.const 0 i32.const 32 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -277,7 +300,7 @@ if i32.const 0 i32.const 32 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -330,7 +353,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -372,7 +395,7 @@ if i32.const 0 i32.const 32 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -405,7 +428,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -414,7 +437,7 @@ 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 @@ -437,7 +460,7 @@ if i32.const 0 i32.const 32 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -455,7 +478,7 @@ if i32.const 0 i32.const 32 - i32.const 239 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -514,7 +537,7 @@ if i32.const 0 i32.const 32 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -538,15 +561,15 @@ 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 @@ -574,7 +597,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -619,7 +642,7 @@ if i32.const 0 i32.const 32 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -662,7 +685,7 @@ if i32.const 0 i32.const 32 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -695,7 +718,7 @@ if i32.const 0 i32.const 32 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -732,13 +755,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 @@ -749,7 +772,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 @@ -776,6 +799,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 @@ -818,7 +843,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 @@ -933,7 +958,7 @@ if i32.const 96 i32.const 32 - i32.const 461 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1017,7 +1042,7 @@ if i32.const 0 i32.const 32 - i32.const 333 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1082,7 +1107,7 @@ if i32.const 0 i32.const 32 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1233,7 +1258,7 @@ if i32.const 0 i32.const 32 - i32.const 360 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1258,7 +1283,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 @@ -1271,7 +1296,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 @@ -1282,7 +1307,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 @@ -1312,7 +1337,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) @@ -1342,7 +1367,7 @@ if i32.const 0 i32.const 32 - i32.const 498 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1362,7 +1387,7 @@ if i32.const 0 i32.const 32 - i32.const 500 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1424,7 +1449,7 @@ if i32.const 0 i32.const 32 - i32.const 563 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable @@ -2685,14 +2710,14 @@ 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 - i32.store - i32.const 0 - drop + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock @@ -2803,7 +2828,7 @@ i32.and local.get $6 i32.or - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 local.get $1 local.get $3 @@ -2881,17 +2906,16 @@ global.get $heap/ptr call $~lib/memory/heap.free ) - (func $~lib/rt/tlsf/__reset + (func $~lib/memory/heap.reset + i32.const 0 + drop i32.const 160 - i32.const 32 - i32.const 598 - i32.const 3 + i32.const 224 + i32.const 109 + i32.const 7 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/heap.reset - call $~lib/rt/tlsf/__reset - ) (func $~start call $start:heap ) diff --git a/tests/compiler/if.json b/tests/compiler/if.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/if.json +++ b/tests/compiler/if.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 84c3eb514a..4f5d7d31d9 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -3,13 +3,15 @@ (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") - (export "memory" (memory $0)) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\n\00\00\00i\00f\00.\00t\00s") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\n\00\00\00e\00r\00r\00o\00r") (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElse)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) + (export "memory" (memory $0)) (func $if/ifThenElse (param $0 i32) (result i32) local.get $0 i32.eqz diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index 7d10ed8646..18492ba141 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -4,14 +4,17 @@ (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\00\00\00") - (data (i32.const 44) "\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 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00i\00f\00.\00t\00s\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\00e\00r\00r\00o\00r\00\00\00") (table $0 1 funcref) - (export "memory" (memory $0)) + (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)) (export "ifThenElse" (func $if/ifThenElse)) (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElseBlock)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) + (export "memory" (memory $0)) (start $~start) (func $if/ifThenElse (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/implicit-getter-setter.js b/tests/compiler/implicit-getter-setter.js index 4431ff7ba5..ad1b0d4f42 100644 --- a/tests/compiler/implicit-getter-setter.js +++ b/tests/compiler/implicit-getter-setter.js @@ -2,7 +2,7 @@ exports.postInstantiate = function(instance) { const exports = instance.exports; // using an integer value - var basic = exports["Basic#constructor"](0, 123); // retain $0 + var basic = exports["Basic#constructor"](0, 123); (() => { var val = exports["Basic#get:val"](basic); if (val != 123) throw Error("invalid value"); @@ -12,30 +12,23 @@ exports.postInstantiate = function(instance) { })(); // using a managed value - var managed = exports["Managed#constructor"](0, basic); // retain $1 + var managed = exports["Managed#constructor"](0, basic); (() => { - var foo = exports["Managed#get:foo"](managed); // retain $2 + var foo = exports["Managed#get:foo"](managed); if (foo != basic) throw Error("invalid value"); - exports.__release(foo); // release $2 })(); (() => { - var foo = exports["Basic#constructor"](0, 321); // retain $3 + var foo = exports["Basic#constructor"](0, 321); exports["Managed#set:foo"](managed, foo); - exports.__release(foo); // release $3 var expectedFoo = foo; - foo = exports["Managed#get:foo"](managed); // retain $4 + foo = exports["Managed#get:foo"](managed); if (foo != expectedFoo) throw Error("invalid value"); - exports.__release(foo); // releae $4 })(); // combining both (() => { - var foo = exports["Managed#get:foo"](managed); // retain $5 + var foo = exports["Managed#get:foo"](managed); var val = exports["Basic#get:val"](foo); if (val != 321) throw Error("invalid value"); - exports.__release(foo); // release $5 })(); - - exports.__release(basic); // release $0 - exports.__release(managed); // release $1 }; diff --git a/tests/compiler/implicit-getter-setter.json b/tests/compiler/implicit-getter-setter.json index b2ec062017..7a73a41bfd 100644 --- a/tests/compiler/implicit-getter-setter.json +++ b/tests/compiler/implicit-getter-setter.json @@ -1,6 +1,2 @@ { - "asc_flags": [ - "--runtime full" - ], - "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 4ea0d3141f..6070b9f63a 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1,36 +1,257 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (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_=>_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_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))) (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 1232) "\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 ") + (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) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 1232)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $implicit-getter-setter/Basic#constructor)) (export "Managed" (global $implicit-getter-setter/Managed)) - (export "Managed#get:foo" (func $implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $implicit-getter-setter/Managed#constructor)) + (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/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -44,8 +265,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -64,8 +285,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -107,8 +328,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -199,8 +420,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -213,8 +434,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -286,8 +507,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -341,23 +562,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -404,8 +625,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -474,8 +695,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -502,8 +723,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -530,8 +751,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -598,10 +819,10 @@ if unreachable end - i32.const 1280 + i32.const 17872 i32.const 0 i32.store - i32.const 2848 + i32.const 19440 i32.const 0 i32.store loop $for-loop|0 @@ -612,7 +833,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1280 + i32.const 17872 i32.add i32.const 0 i32.store offset=4 @@ -630,7 +851,7 @@ i32.add i32.const 2 i32.shl - i32.const 1280 + i32.const 17872 i32.add i32.const 0 i32.store offset=96 @@ -648,120 +869,273 @@ br $for-loop|0 end end - i32.const 1280 - i32.const 2852 + i32.const 17872 + i32.const 19444 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1280 + i32.const 17872 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 1056 - i32.const 1184 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 1184 - 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 $1 - i32.ctz local.get $2 - i32.const 4 - i32.shl - i32.add + i32.ctz i32.const 2 i32.shl i32.add @@ -769,11 +1143,7 @@ else local.get $0 i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl + i32.const -2 i32.and local.tee $1 if (result i32) @@ -789,8 +1159,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 346 + i32.const 1392 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -811,97 +1181,18 @@ 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 1184 - 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) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (local $1 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 + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -910,40 +1201,24 @@ 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.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.set $1 + local.get $2 local.get $1 - local.get $3 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + 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 @@ -952,7 +1227,7 @@ end end local.get $0 - local.get $1 + local.get $2 i32.const 16 i32.shl memory.size @@ -960,29 +1235,28 @@ 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 1184 - i32.const 498 + i32.const 1392 + i32.const 500 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 + i32.const 28 + i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -990,633 +1264,419 @@ 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/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 1056 - i32.const 1120 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.load + local.tee $2 + i32.const -4 + i32.and + i32.const 28 + i32.sub + local.tee $3 i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.ge_u if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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/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 + local.get $2 + i32.const 2 i32.and - i32.eqz + 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 - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1184 - 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 $1 local.get $2 - local.set $4 - local.get $0 + i32.const -2 + i32.and + i32.store local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + 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.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 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store 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 1276 + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold 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 1056 - i32.const 1120 - 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 1276 - 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 + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $5 - local.get $4 - i32.const 4 + 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 - 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 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt 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 + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - local.get $3 - local.get $0 - local.get $5 - call $~lib/rt/tlsf/prepareBlock + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 + i32.store offset=12 + local.get $1 i32.const 4 - i32.add - local.tee $0 + i32.store offset=16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and i32.const 4 - i32.sub + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $1 - i32.store offset=16 - local.get $0 - i32.const 16 + i32.const 20 i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) + (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.const 1276 - i32.gt_u + local.get $1 + i32.store + local.get $1 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 + i32.eqz if i32.const 0 i32.const 1120 - i32.const 109 - i32.const 3 + i32.const 290 + i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end end - local.get $0 ) - (func $~lib/rt/pure/__release (param $0 i32) + (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 + end + return + end + return + end + unreachable + end local.get $0 - i32.const 1276 - i32.gt_u + i32.load + local.tee $0 if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + call $~lib/rt/itcms/__visit end ) - (func $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1484 + i32.lt_s if - i32.const 4 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end + ) + (func $export:implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) + global.get $~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 - local.get $1 i32.store local.get $0 - ) - (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - local.get $0 i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) + (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 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) + (func $export:implicit-getter-setter/Basic#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.eqz if - i32.const 4 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + 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 - call $~lib/rt/pure/__retain 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 ) - (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) + (func $export:implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) + global.get $~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 i32.load - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) - 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.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 - i32.store + 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 $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $export:implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.load - i32.const 1 - i32.and + i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable + 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.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $invalid - local.get $0 - i32.const 12 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner1 $__inlined_func$~lib/rt/__visit_members $folding-inner1 $invalid - end - unreachable - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - i32.const 1276 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - end - 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 - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - 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 + call $implicit-getter-setter/Managed#set:foo + 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 ) ) diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index f863ec9092..605cd10006 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -1,40 +1,371 @@ (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 $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 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_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 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 208) "\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") + (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") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 208)) - (global $~lib/memory/__heap_base i32 (i32.const 252)) (global $implicit-getter-setter/Basic i32 (i32.const 3)) (global $implicit-getter-setter/Managed i32 (i32.const 4)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (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)) (export "Basic" (global $implicit-getter-setter/Basic)) - (export "Basic#get:val" (func $implicit-getter-setter/Basic#get:val)) - (export "Basic#set:val" (func $implicit-getter-setter/Basic#set:val)) - (export "Basic#constructor" (func $implicit-getter-setter/Basic#constructor)) (export "Managed" (global $implicit-getter-setter/Managed)) - (export "Managed#get:foo" (func $implicit-getter-setter/Managed#get:foo)) - (export "Managed#set:foo" (func $implicit-getter-setter/Managed#set:foo)) - (export "Managed#constructor" (func $implicit-getter-setter/Managed#constructor)) + (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 + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -57,8 +388,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 368 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -84,8 +415,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 368 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -138,8 +469,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 368 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -154,13 +485,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -246,7 +577,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -270,8 +601,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -287,8 +618,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -341,7 +672,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -382,8 +713,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -416,7 +747,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -425,7 +756,7 @@ 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 @@ -447,8 +778,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -465,8 +796,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -524,8 +855,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -549,15 +880,15 @@ 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 @@ -585,7 +916,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -629,8 +960,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -672,8 +1003,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -705,8 +1036,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -743,13 +1074,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 +1091,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 +1118,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 +1162,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 @@ -917,6 +1250,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -943,8 +1604,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1027,8 +1688,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1092,8 +1753,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1243,8 +1904,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1269,7 +1930,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 +1943,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 +1954,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 +1984,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 +2013,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1372,8 +2033,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1401,1793 +2062,379 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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/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 160 - 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) + (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) - block $~lib/util/memory/memmove|inlined.0 + (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 - 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 + i32.gt_s drop - local.get $4 + local.get $3 + i32.eqz + if + br $~lib/util/memory/memset|inlined.0 + end local.get $5 - i32.sub local.get $3 + i32.add + i32.const 4 i32.sub - i32.const 0 + 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 1 - i32.shl - i32.sub + i32.const 2 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 + br $~lib/util/memory/memset|inlined.0 end local.get $5 local.get $4 - i32.lt_u + 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 - 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 + br $~lib/util/memory/memset|inlined.0 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 $5 + local.get $4 + i32.store8 offset=3 + local.get $6 + local.get $4 + i32.store8 local.get $3 - call $~lib/rt/tlsf/prepareBlock + i32.const 8 + i32.le_u + if + br $~lib/util/memory/memset|inlined.0 + end 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.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.xor + 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.ge_u + i32.const 8 + i32.le_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 + 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 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop - local.get $1 - return + 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 - 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) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 + (local $3 i32) + local.get $0 i32.const 1073741804 - i32.gt_u + i32.ge_u if i32.const 32 i32.const 96 - i32.const 288 - i32.const 30 + i32.const 256 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.sub + 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 $1 + local.get $0 i32.add - call $~lib/rt/tlsf/__realloc - local.set $2 - local.get $2 + call $~lib/rt/tlsf/__alloc i32.const 4 i32.sub + local.set $2 + local.get $2 local.get $1 - i32.store offset=16 + call $~lib/rt/itcms/Object#set:rtId local.get $2 - i32.const 16 - i32.add - ) - (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 + 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 - 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 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add - i32.store offset=4 + local.set $3 + local.get $3 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 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 - end - local.get $0 - ) - (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 $implicit-getter-setter/Basic#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.store - local.get $0 - ) - (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) - local.get $0 - i32.load - ) - (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - i32.store - ) - (func $implicit-getter-setter/Managed#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end + call $~lib/memory/memory.fill + local.get $3 + ) + (func $implicit-getter-setter/Basic#set:val (param $0 i32) (param $1 i32) + local.get $0 local.get $1 i32.store ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT + (func $implicit-getter-setter/Basic#get:val (param $0 i32) (result i32) local.get $0 - call $~lib/rt/tlsf/freeBlock + i32.load ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 + (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.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop + i32.eqz + if + return + end i32.const 1 drop local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 122 + i32.const 290 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 + 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.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u + 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 - i32.const 0 - i32.const 96 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 - i32.const 1 - drop - 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 ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 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 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/arraybuffer/ArrayBuffer~visit (param $0 i32) (param $1 i32) - nop + (func $implicit-getter-setter/Managed#get:foo (param $0 i32) (result i32) + local.get $0 + i32.load ) - (func $~lib/string/String~visit (param $0 i32) (param $1 i32) - nop + (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) @@ -3197,12 +2444,9 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) - (func $implicit-getter-setter/Basic~visit (param $0 i32) (param $1 i32) - nop - ) (func $implicit-getter-setter/Managed~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 @@ -3211,7 +2455,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) @@ -3227,14 +2471,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $implicit-getter-setter/Basic $implicit-getter-setter/Managed $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 @@ -3242,9 +2480,6 @@ call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $implicit-getter-setter/Basic~visit return end local.get $0 @@ -3254,4 +2489,208 @@ end unreachable ) + (func $~start + 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 $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 + 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 $implicit-getter-setter/Basic#set:val + 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 $implicit-getter-setter/Managed#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 $implicit-getter-setter/Managed#set:foo + 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 + local.get $0 + i32.store + local.get $0 + call $implicit-getter-setter/Basic#get:val + 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: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) + global.get $~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#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 + global.get $~lib/memory/__stack_pointer + local.get $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 + i32.add + 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/import.json b/tests/compiler/import.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/import.json +++ b/tests/compiler/import.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/import.untouched.wat b/tests/compiler/import.untouched.wat index 9f2d080c71..9409b11eb0 100644 --- a/tests/compiler/import.untouched.wat +++ b/tests/compiler/import.untouched.wat @@ -6,6 +6,9 @@ (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) + (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)) (export "memory" (memory $0)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/indexof-valueof.json b/tests/compiler/indexof-valueof.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/indexof-valueof.json +++ b/tests/compiler/indexof-valueof.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/indexof-valueof.untouched.wat b/tests/compiler/indexof-valueof.untouched.wat index ec0868b667..841fdd2ca4 100644 --- a/tests/compiler/indexof-valueof.untouched.wat +++ b/tests/compiler/indexof-valueof.untouched.wat @@ -2,6 +2,9 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:indexof-valueof diff --git a/tests/compiler/infer-array.json b/tests/compiler/infer-array.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/infer-array.json +++ b/tests/compiler/infer-array.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index aff8daf25d..47d6a6200e 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1,143 +1,1737 @@ (module (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 $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01") + (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) "<\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 1132) ",\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 1180) ",\00\00\00\01") - (data (i32.const 1196) "\18") - (data (i32.const 1206) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1228) "\1c\00\00\00\01") - (data (i32.const 1244) "\08\00\00\00\01\00\00\00\ff\ff\ff\ff") - (data (i32.const 1260) ",\00\00\00\01\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") - (data (i32.const 1308) ",\00\00\00\01") - (data (i32.const 1324) "\18") - (data (i32.const 1334) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 1356) "\1c\00\00\00\01") - (data (i32.const 1372) "\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1420) "\1c\00\00\00\01") - (data (i32.const 1436) "\08\00\00\00\00\00\00\00\80\05") - (data (i32.const 1452) "\1c\00\00\00\01") - (data (i32.const 1468) "\04") - (data (i32.const 1484) "\1c\00\00\00\01") - (data (i32.const 1500) "\08") - (data (i32.const 1516) "\1c\00\00\00\01") - (data (i32.const 1532) "\08\00\00\00\01") - (data (i32.const 1548) "\1c\00\00\00\01") - (data (i32.const 1564) "\08\00\00\00\00\00\00\00\01") - (data (i32.const 1580) "\1c\00\00\00\01") - (data (i32.const 1596) "\04\00\00\00\01") - (data (i32.const 1612) "\1c\00\00\00\01") - (data (i32.const 1628) "\04\00\00\00\02") - (data (i32.const 1644) "|\00\00\00\01\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") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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) ",") + (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 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@") + (data (i32.const 1692) "\1c") + (data (i32.const 1708) "\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 1724) "\1c") + (data (i32.const 1736) "\01\00\00\00\02\00\00\00a") + (data (i32.const 1756) "\1c") + (data (i32.const 1772) "\08\00\00\00\00\00\00\00\d0\06") + (data (i32.const 1788) "\1c") + (data (i32.const 1804) "\04") + (data (i32.const 1820) "\1c") + (data (i32.const 1836) "\08") + (data (i32.const 1852) "\1c") + (data (i32.const 1868) "\08\00\00\00\01") + (data (i32.const 1884) "\1c") + (data (i32.const 1900) "\08\00\00\00\00\00\00\00\01") + (data (i32.const 1916) "\1c") + (data (i32.const 1932) "\04\00\00\00\01") + (data (i32.const 1948) "\1c") + (data (i32.const 1964) "\04\00\00\00\02") + (data (i32.const 1980) "|") + (data (i32.const 1992) "\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 2112) "\0c\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2140) "\02\t\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\02a\00\00\00\00\00\00\02a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18596)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2000 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 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 18596 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2112 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 2116 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 273 + 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 1424 + i32.const 275 + 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 1424 + i32.const 288 + 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 1424 + i32.const 201 + 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 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1424 + i32.const 224 + 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 1424 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 240 + 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 1424 + i32.const 256 + 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 1424 + i32.const 381 + 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 1424 + i32.const 388 + 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 1424 + i32.const 401 + 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 18608 + i32.const 0 + i32.store + i32.const 20176 + 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 18608 + 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 18608 + 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 18608 + i32.const 20180 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18608 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18596 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18596 + 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 $1 + i32.const 18596 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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.ge_u + if + i32.const 1088 + i32.const 1424 + i32.const 462 + i32.const 30 + 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 $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 1424 + i32.const 500 + 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 1424 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/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 $7 i32) local.get $0 i32.const 1073741804 - i32.gt_u + i32.ge_u if + i32.const 1088 + i32.const 1152 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - global.get $~lib/rt/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 + local.get $0 i32.const 16 - i32.shl - i32.const 15 i32.add - i32.const -16 - i32.and - local.tee $3 - i32.gt_u + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz 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 + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -271,264 +1865,587 @@ i32.store8 br $while-continue|3 end - end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u + 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/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 290 + 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 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~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 $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 + end + return + end + local.get $0 + i32.load + local.tee $0 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 + call $~lib/rt/itcms/__visit end + return end + return 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 + unreachable end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return 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) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__new - local.tee $2 local.get $0 - local.get $1 - i32.shl + i32.load offset=4 local.tee $1 - local.set $5 - local.get $1 - i32.const 0 - call $~lib/rt/stub/__new - local.set $4 - local.get $3 - if - local.get $4 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end - local.get $4 - local.tee $3 - i32.store - 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 - local.get $2 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:infer-array + ) + (func $~stack_check + 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 ) (func $start:infer-array (local $0 i32) (local $1 i32) (local $2 i32) - i32.const 1772 - global.set $~lib/rt/stub/offset + (local $3 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 + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 3 i32.const 1056 call $~lib/rt/__newArray - drop + i32.store + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 3 i32.const 4 - i32.const 1200 + i32.const 1536 call $~lib/rt/__newArray - drop + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 5 - i32.const 1248 + i32.const 1584 call $~lib/rt/__newArray local.tee $0 - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 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 $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const -1 i32.ne if i32.const 0 - i32.const 1280 + 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 1328 + i32.const 1664 call $~lib/rt/__newArray - drop + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 6 - i32.const 1376 + i32.const 1712 call $~lib/rt/__newArray local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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.le_u br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=4 f32.load offset=4 drop - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - local.set $0 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - 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 + call $infer-array/Ref#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $2 + i32.store offset=4 + 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 $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - local.tee $2 + i32.store offset=16 local.get $0 - i32.store - local.get $2 + i32.const 0 local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $2 i32.store offset=4 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - local.set $0 - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - local.set $1 + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - local.tee $2 + i32.store offset=12 local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - local.set $0 + local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + call $infer-array/Ref#constructor + local.tee $1 + i32.store offset=12 + 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 $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - local.tee $1 + i32.store offset=16 local.get $0 - i32.store + i32.const 0 local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 i32.const 0 - i32.store offset=4 + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 9 - i32.const 1440 + i32.const 1776 call $~lib/rt/__newArray - drop + i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 10 - i32.const 1472 + i32.const 1808 call $~lib/rt/__newArray - drop + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 10 - i32.const 1504 + i32.const 1840 call $~lib/rt/__newArray - drop + i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 1536 + i32.const 1872 call $~lib/rt/__newArray - drop + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 1568 + i32.const 1904 call $~lib/rt/__newArray - drop + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - i32.load offset=4 local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=16 + local.get $0 + i32.const 0 i32.const 1 i32.const 2 i32.const 3 - i32.const 1600 + i32.const 1936 call $~lib/rt/__newArray - i32.store + call $~lib/array/Array#__uset local.get $0 i32.const 1 + i32.const 1 i32.const 2 i32.const 3 - i32.const 1632 + i32.const 1968 call $~lib/rt/__newArray - i32.store offset=4 + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - i32.const 1088 - i32.const 1152 - i32.const 104 + i32.const 1280 + i32.const 1488 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable ) - (func $~start - call $start:infer-array + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $4 + local.set $5 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $1 + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $infer-array/Ref#constructor (result i32) + (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 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 148f2e7877..24c23db51d 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1,348 +1,2524 @@ (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 $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (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))) (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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\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\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 108) ",\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 156) ",\00\00\00\01\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 204) "\1c\00\00\00\01\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 236) ",\00\00\00\01\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 284) ",\00\00\00\01\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 332) "\1c\00\00\00\01\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 364) "\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 396) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\80\01\00\00\00\00\00\00") - (data (i32.const 428) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 460) "\1c\00\00\00\01\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") - (data (i32.const 492) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 524) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 556) "\1c\00\00\00\01\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 588) "\1c\00\00\00\01\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 620) "|\00\00\00\01\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 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\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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 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") + (data (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\d0\02\00\00\00\00\00\00") + (data (i32.const 764) "\1c\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\00\00\00\00") + (data (i32.const 796) "\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\00\00\00\00\00\00") + (data (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00") + (data (i32.const 892) "\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 924) "\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 956) "|\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 1088) "\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\02\t\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\19\00\00\00\00\00\00 \00\00\00\00\00\00\00\02a\00\00\00\00\00\00\02a\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02A\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 748)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 17572)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 128 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 128 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 256 + i32.const 320 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 128 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 + i32.const 20 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 + local.set $2 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 + drop local.get $2 - i32.const 16 - i32.add + 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/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (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 (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - local.set $5 - local.get $5 if + local.get $1 + i32.load local.get $0 - local.tee $6 - i32.const 1 - i32.add - local.set $0 - local.get $6 + call $~lib/rt/itcms/__visit local.get $1 - local.tee $6 - i32.const 1 + i32.const 4 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/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.const 0 - i32.eq + 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 - 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 0 + i32.const 400 + i32.const 273 + 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 400 + i32.const 275 + 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.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 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 400 + i32.const 288 + 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.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.shl + local.get $9 + i32.add i32.const 2 - i32.and + i32.shl + i32.add + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz 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 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 i32.const 2 + i32.shl i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.and - if + i32.load offset=4 + local.set $9 local.get $0 - local.tee $5 + local.set $8 + local.get $4 + local.set $11 + local.get $9 i32.const 1 - i32.add - local.set $0 local.get $5 - local.get $1 - local.tee $5 - i32.const 1 + 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.set $1 - local.get $5 - i32.load8_u - i32.store8 - end - return + 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 400 + 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 400 + 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 $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 400 + i32.const 224 + 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 400 + i32.const 239 + 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 400 + i32.const 240 + 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 400 + i32.const 256 + 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 400 + i32.const 381 + 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 400 + i32.const 388 + 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 400 + i32.const 401 + 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 400 + i32.const 565 + 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 + 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 + 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 128 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 64 + i32.const 400 + i32.const 462 + 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 400 + i32.const 334 + 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 400 + i32.const 347 + 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 400 + i32.const 361 + 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 400 + i32.const 500 + 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 400 + i32.const 502 + 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 + 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/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 64 + i32.const 128 + i32.const 256 + 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 @@ -1175,572 +3351,1108 @@ i32.store8 end local.get $2 - i32.const 1 - i32.and + 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 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + call $~lib/memory/memory.copy end + local.get $3 ) - (func $~lib/memory/memory.copy (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) - (local $7 i32) - block $~lib/util/memory/memmove|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 128 + i32.const 290 + 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 - local.set $5 - local.get $1 + i32.const 20 + i32.sub local.set $4 - local.get $2 - local.set $3 - local.get $5 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/memmove|inlined.0 + 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 - 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 + end + ) + (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#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (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#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.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 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (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<~lib/string/String|null>#__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#__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/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>#__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/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 976 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + 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/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.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 + local.set $4 + local.get $4 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 $2 + i32.load + 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 $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 $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/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/rt/stub/__new - local.set $3 + call $~lib/array/Array#__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 - if - local.get $3 + 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 $0 - call $~lib/memory/memory.copy + 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 $3 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (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) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__new - local.set $4 + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.shl - local.set $5 - local.get $5 + call $~lib/array/Array<~lib/string/String|null>#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 + drop local.get $0 - i32.store offset=12 - local.get $4 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 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/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array<~lib/string/String|null> + block $~lib/array/Array + block $infer-array/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + 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 $infer-array/Ref $~lib/array/Array $~lib/array/Array<~lib/string/String|null> $~lib/array/Array $~lib/array/Array<~lib/array/Array> $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/array/Array>~visit + return + end + unreachable + ) + (func $~start + call $start:infer-array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17600 + i32.const 17648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (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 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f64.load + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) (local $2 f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load + global.set $~lib/memory/__stack_pointer + local.get $4 ) (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 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f32.load + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) (local $2 f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $infer-array/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load - call $~lib/rt/stub/__retain + global.set $~lib/memory/__stack_pointer + local.get $4 ) (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 1 drop i32.const 1 i32.eqz drop local.get $2 - ) - (func $~lib/array/Array<~lib/string/String|null>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - call $~lib/rt/stub/__retain + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array<~lib/string/String|null>#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 - ) - (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 + local.tee $2 + i32.store offset=4 + 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.add - i32.load + global.set $~lib/memory/__stack_pointer + local.get $3 ) (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 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/array/Array<~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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load - call $~lib/rt/stub/__retain + global.set $~lib/memory/__stack_pointer + local.get $3 ) (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 64 - i32.const 128 - i32.const 104 + i32.const 256 + i32.const 464 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array<~lib/array/Array>#__uget - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 1 drop i32.const 0 @@ -1749,14 +4461,20 @@ local.get $2 i32.eqz if - i32.const 640 - i32.const 128 - i32.const 108 + i32.const 976 + i32.const 464 + i32.const 96 i32.const 40 call $~lib/builtins/abort unreachable end local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:infer-array (local $0 i32) @@ -1764,57 +4482,71 @@ (local $2 f32) (local $3 i32) (local $4 i32) - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + 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 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 3 i32.const 32 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 + i32.store i32.const 1 drop i32.const 1 drop - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 3 i32.const 4 - i32.const 176 + i32.const 512 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 drop - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 5 - i32.const 224 + i32.const 560 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 + i32.store i32.const 1 drop i32.const 0 i32.eqz drop local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 i32.const 1 call $~lib/array/Array#__get i32.const -1 @@ -1822,251 +4554,330 @@ i32.eqz if i32.const 0 - i32.const 256 + i32.const 592 i32.const 14 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 3 i32.const 4 - i32.const 304 + i32.const 640 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 drop - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 6 - i32.const 352 + i32.const 688 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 + local.tee $1 + i32.store i32.const 1 drop local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 i32.const 1 call $~lib/array/Array#__get local.set $2 - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor - local.set $1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor - local.set $0 + local.tee $0 + i32.store offset=4 + 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 - call $~lib/rt/stub/__retain - local.set $3 + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $3 i32.load offset=4 - local.set $4 - local.get $4 + local.tee $4 + i32.store offset=16 + local.get $3 + i32.const 0 local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $0 - call $~lib/rt/stub/__retain - i32.store offset=4 + call $~lib/array/Array#__uset local.get $3 - local.set $4 i32.const 1 - drop - local.get $1 - call $~lib/rt/stub/__release local.get $0 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + call $~lib/array/Array#__uset local.get $3 - call $~lib/rt/stub/__release + local.tee $4 + i32.store offset=16 + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor - local.set $3 + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor - local.set $4 + local.tee $0 + i32.store offset=4 + 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 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - local.get $3 - call $~lib/rt/stub/__retain + local.tee $1 i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.load offset=4 + local.tee $3 + i32.store offset=12 + local.get $1 + i32.const 0 local.get $4 - call $~lib/rt/stub/__retain - i32.store offset=4 + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 local.get $0 - local.set $1 + call $~lib/array/Array#__uset + local.get $1 + local.tee $3 + i32.store offset=12 i32.const 1 drop - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 0 call $infer-array/Ref#constructor - local.set $0 + local.tee $3 + i32.store offset=12 + 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 - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - local.set $4 - local.get $4 + local.tee $4 + i32.store offset=16 local.get $0 - call $~lib/rt/stub/__retain - i32.store - local.get $4 i32.const 0 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $1 - local.set $4 + local.get $3 + call $~lib/array/Array#__uset + local.get $0 i32.const 1 - drop + i32.const 0 + call $~lib/array/Array#__uset local.get $0 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + local.tee $4 + i32.store offset=16 + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 9 - i32.const 416 + i32.const 752 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $4 + local.tee $3 + i32.store offset=12 i32.const 1 drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 10 - i32.const 448 + i32.const 784 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $4 + local.tee $4 + i32.store offset=16 i32.const 1 drop i32.const 0 i32.eqz drop + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 10 - i32.const 480 + i32.const 816 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 drop i32.const 0 i32.eqz drop - local.get $4 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 512 + i32.const 848 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $4 + local.tee $4 + i32.store offset=16 i32.const 1 drop i32.const 0 i32.eqz drop + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 3 - i32.const 544 + i32.const 880 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 + local.tee $3 + i32.store offset=12 i32.const 1 drop i32.const 0 i32.eqz drop - local.get $4 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 2 i32.const 2 i32.const 11 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.load offset=4 - local.set $4 - local.get $4 + local.tee $4 + i32.store offset=16 + local.get $3 + i32.const 0 i32.const 1 i32.const 2 i32.const 3 - i32.const 576 + i32.const 912 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - i32.store - local.get $4 + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $3 + i32.const 1 i32.const 1 i32.const 2 i32.const 3 - i32.const 608 + i32.const 944 call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $1 - local.set $4 + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $3 + local.tee $4 + i32.store offset=16 i32.const 1 drop i32.const 0 i32.eqz drop - local.get $4 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (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 - call $~lib/rt/stub/__release + 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 $~start - call $start:infer-array + (func $infer-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 + 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 7 + 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 ) ) diff --git a/tests/compiler/infer-generic.json b/tests/compiler/infer-generic.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/infer-generic.json +++ b/tests/compiler/infer-generic.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 0e68f18550..5a2d247893 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1,21 +1,27 @@ (module - (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 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 $f32_=>_f32 (func (param f32) (result f32))) + (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\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") - (data (i32.const 1100) "\1c\00\00\00\01") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") + (data (i32.const 1100) "\1c") (data (i32.const 1116) "\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 1132) ",\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00`\04\00\00`\04\00\00\0c\00\00\00\03") - (data (i32.const 1180) "\1c\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01") + (data (i32.const 1132) ",") + (data (i32.const 1144) "\03\00\00\00\10\00\00\00`\04\00\00`\04\00\00\0c\00\00\00\03") + (data (i32.const 1180) "\1c") + (data (i32.const 1192) "\04\00\00\00\08\00\00\00\01") (table $0 2 funcref) (elem (i32.const 1) $start:infer-generic~anonymous|0) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17596)) (export "test1" (func $infer-generic/test1)) - (export "test2" (func $infer-generic/test2)) - (export "test3" (func $infer-generic/test2)) - (export "test4" (func $infer-generic/test2)) + (export "memory" (memory $0)) + (export "test2" (func $export:infer-generic/test2)) + (export "test3" (func $export:infer-generic/test2)) + (export "test4" (func $export:infer-generic/test2)) (start $~start) (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) local.get $1 @@ -28,14 +34,34 @@ (func $infer-generic/test1 (param $0 f32) (result f32) local.get $0 ) - (func $infer-generic/test2 (param $0 i32) (result i32) - local.get $0 - ) (func $~start (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.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 1152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 1164 i32.load local.set $2 @@ -51,7 +77,6 @@ select i32.lt_s if - local.get $1 i32.const 1156 i32.load local.get $0 @@ -59,6 +84,12 @@ i32.shl i32.add f32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + local.get $1 + local.get $4 local.get $0 i32.const 1152 i32.const 1200 @@ -72,5 +103,56 @@ 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1212 + i32.lt_s + if + i32.const 17616 + i32.const 17664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index cc6463a4b4..392df89865 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -3,42 +3,34 @@ (type $none_=>_none (func)) (type $i32_f32_i32_i32_=>_i32 (func (param i32 f32 i32 i32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) - (type $i32_=>_none (func (param 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 $f64_f64_=>_i32 (func (param f64 f64) (result 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\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) "\1c\00\00\00\01\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 108) ",\00\00\00\01\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 156) "\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 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 76) "\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 108) ",\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 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $start:infer-generic~anonymous|0) (global $infer-generic/arr i32 (i32.const 128)) (global $~argumentsLength (mut i32) (i32.const 0)) - (export "memory" (memory $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)) (export "test1" (func $infer-generic/test1)) - (export "test2" (func $infer-generic/test2)) - (export "test3" (func $infer-generic/test3)) - (export "test4" (func $infer-generic/test4)) + (export "memory" (memory $0)) + (export "test2" (func $export:infer-generic/test2)) + (export "test3" (func $export:infer-generic/test3)) + (export "test4" (func $export:infer-generic/test4)) (start $~start) (func $infer-generic/inferCompatible (param $0 f64) (param $1 f64) (result i32) local.get $0 local.get $1 f64.eq ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $start:infer-generic~anonymous|0 (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 local.get $0 if (result i32) local.get $1 @@ -47,10 +39,38 @@ else i32.const 0 end - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 + ) + (func $infer-generic/inferPlain (param $0 f32) (result f32) + local.get $0 + ) + (func $infer-generic/test1 (param $0 f32) (result f32) + local.get $0 + call $infer-generic/inferPlain + ) + (func $infer-generic/inferEncapsulatedClass (param $0 i32) (result i32) + local.get $0 + ) + (func $infer-generic/inferEncapsulatedFunction (param $0 i32) (result i32) + local.get $0 + ) + (func $infer-generic/inferEncapsulatedFunctionMixed (param $0 i32) (result i32) + local.get $0 + ) + (func $~start + call $start:infer-generic + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16592 + i32.const 16640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -58,9 +78,15 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + (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 $2 local.set $3 i32.const 0 @@ -93,6 +119,11 @@ f32.load local.get $4 local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 i32.const 4 global.set $~argumentsLength local.get $1 @@ -107,14 +138,25 @@ end end local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/stub/__release - 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 $start:infer-generic (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 f64.const 1 f64.const 1 call $infer-generic/inferCompatible @@ -128,73 +170,152 @@ unreachable end global.get $infer-generic/arr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 176 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 call $~lib/array/Array#reduce drop - ) - (func $infer-generic/inferPlain (param $0 f32) (result f32) - local.get $0 - ) - (func $infer-generic/test1 (param $0 f32) (result f32) - local.get $0 - call $infer-generic/inferPlain - ) - (func $infer-generic/inferEncapsulatedClass (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $infer-generic/test2 (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $infer-generic/inferEncapsulatedClass local.set $1 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $infer-generic/inferEncapsulatedFunction (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) (func $infer-generic/test3 (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $infer-generic/inferEncapsulatedFunction local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $infer-generic/test4 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - call $~lib/rt/stub/__release + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $infer-generic/inferEncapsulatedFunctionMixed + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $infer-generic/inferEncapsulatedFunctionMixed (param $0 i32) (result i32) + (func $export:infer-generic/test2 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + i32.store local.get $0 + call $infer-generic/test2 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $infer-generic/test4 (param $0 i32) (result i32) + (func $export:infer-generic/test3 (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + i32.store local.get $0 - call $infer-generic/inferEncapsulatedFunctionMixed + call $infer-generic/test3 local.set $1 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~start - call $start:infer-generic + (func $export:infer-generic/test4 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $infer-generic/test4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/infer-type.json b/tests/compiler/infer-type.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/infer-type.json +++ b/tests/compiler/infer-type.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index b9097d3c32..ac395f8e99 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -15,6 +15,9 @@ (global $infer-type/rF (mut f64) (f64.const 0)) (global $infer-type/inferi (mut i32) (i32.const -2147483648)) (global $infer-type/inferu (mut i32) (i32.const 2147483647)) + (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)) (export "memory" (memory $0)) (start $~start) (func $infer-type/locals diff --git a/tests/compiler/inlining-blocklocals.json b/tests/compiler/inlining-blocklocals.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/inlining-blocklocals.json +++ b/tests/compiler/inlining-blocklocals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat index 6b77029ece..248e7de99d 100644 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ b/tests/compiler/inlining-blocklocals.optimized.wat @@ -3,7 +3,8 @@ (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) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") + (data (i32.const 1036) "L") + (data (i32.const 1048) "\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s") (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index 027c8bb7cc..c17cf0159b 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -3,12 +3,15 @@ (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) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00-\00b\00l\00o\00c\00k\00l\00o\00c\00a\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $inlining-blocklocals/b (mut i32) (i32.const 2)) (global $inlining-blocklocals/theCall_a (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) + (global $~lib/memory/__heap_base i32 (i32.const 16476)) (export "memory" (memory $0)) (start $~start) (func $inlining-blocklocals/test diff --git a/tests/compiler/inlining-recursive.json b/tests/compiler/inlining-recursive.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/inlining-recursive.json +++ b/tests/compiler/inlining-recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/inlining-recursive.optimized.wat b/tests/compiler/inlining-recursive.optimized.wat index f736b4cbc5..358725a3e0 100644 --- a/tests/compiler/inlining-recursive.optimized.wat +++ b/tests/compiler/inlining-recursive.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (memory $0 0) - (export "memory" (memory $0)) (export "foo" (func $inlining-recursive/foo)) (export "bar" (func $inlining-recursive/baz)) (export "baz" (func $inlining-recursive/baz)) + (export "memory" (memory $0)) (func $inlining-recursive/foo call $inlining-recursive/foo ) diff --git a/tests/compiler/inlining-recursive.untouched.wat b/tests/compiler/inlining-recursive.untouched.wat index aa96cf8172..2e0efb6ec0 100644 --- a/tests/compiler/inlining-recursive.untouched.wat +++ b/tests/compiler/inlining-recursive.untouched.wat @@ -2,10 +2,13 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "foo" (func $inlining-recursive/foo)) (export "bar" (func $inlining-recursive/bar)) (export "baz" (func $inlining-recursive/baz)) + (export "memory" (memory $0)) (func $inlining-recursive/foo call $inlining-recursive/foo ) diff --git a/tests/compiler/inlining.json b/tests/compiler/inlining.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/inlining.json +++ b/tests/compiler/inlining.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index df3b04c2b7..050637a900 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1,18 +1,45 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (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 $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))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (data (i32.const 1084) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") + (data (i32.const 1084) "\1c") + (data (i32.const 1096) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1116) "<") + (data (i32.const 1128) "\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 1180) "<") + (data (i32.const 1192) "\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 1308) "<") + (data (i32.const 1320) "\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 1372) ",") + (data (i32.const 1384) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1452) "<") + (data (i32.const 1464) "\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 1520) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1556) " \00\00\00\00\00\00\00 \00\00\00\06\00\00\00 ") (table $0 2 funcref) (elem (i32.const 1) $inlining/func_fe~anonymous|0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 17964)) (export "test" (func $inlining/test)) + (export "memory" (memory $0)) (start $~start) (func $inlining/test (result i32) i32.const 3 @@ -20,68 +47,1287 @@ (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 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 17964 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1200 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 273 + 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 1472 + i32.const 275 + 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 1472 + i32.const 288 + 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 1472 + i32.const 201 + 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 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1472 + i32.const 224 + 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 1472 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1472 + i32.const 240 + 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 1472 + i32.const 256 + 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 1472 + i32.const 381 + 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 1472 + i32.const 388 + 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 1472 + i32.const 401 + 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 17968 + i32.const 0 + i32.store + i32.const 19536 + 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 17968 + 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 17968 + 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 17968 + i32.const 19540 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17968 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17964 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17964 + 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 $1 + i32.const 17964 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1472 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 $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 + local.get $1 i32.const 1073741820 - i32.gt_u + i32.ge_u if + i32.const 1136 + i32.const 1472 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -95,64 +1341,415 @@ 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 1472 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 502 + 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 $3 + local.get $2 i32.const 4 - i32.sub - local.tee $2 - i32.const 0 - i32.store offset=4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and local.get $2 - i32.const 0 - i32.store offset=8 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1136 + i32.const 1200 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 + 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 - local.get $4 - i32.const 16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~start + (func $inlining/test_ctor (local $0 i32) - i32.const 2 - i32.const 1104 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1056 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1116 - global.set $~lib/rt/stub/offset + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 16 i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 3 i32.store offset=8 local.get $0 i32.const 0 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 6 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 end local.get $0 i32.const 1 @@ -164,9 +1761,13 @@ i32.const 2 i32.store offset=4 local.get $0 + i32.store + local.get $0 i32.const 4 i32.store offset=12 local.get $0 + i32.store offset=8 + local.get $0 i32.load i32.const 1 i32.ne @@ -214,5 +1815,107 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.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 2 + i32.const 1104 + i32.load + call_indirect (type $i32_=>_i32) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 123 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 123 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $inlining/test_ctor + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1580 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) ) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index fa99055164..53d5d28bc7 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -1,23 +1,48 @@ (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_i32_i32_=>_none (func (param i32 i32 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 (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 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 60) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\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\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 156) "<\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 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 348) ",\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 400) "\00\00\00\00\00\00\00\00\00\00\00\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\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 496) "\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\00\06\00\00\00 \00\00\00\00\00\00\00") (table $0 2 funcref) (elem (i32.const 1) $inlining/func_fe~anonymous|0) (global $inlining/constantGlobal i32 (i32.const 1)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 92)) - (export "memory" (memory $0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/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)) + (global $~lib/memory/__heap_base i32 (i32.const 16940)) (export "test" (func $inlining/test)) + (export "memory" (memory $0)) (start $~start) (func $inlining/test (result i32) global.get $inlining/constantGlobal @@ -27,12 +52,6 @@ (func $inlining/func_fe~anonymous|0 (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $inlining/test_funcs (local $0 f32) (local $1 f64) @@ -42,6 +61,14 @@ (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store f32.const -1 local.set $0 f64.const -2 @@ -166,8 +193,6 @@ i32.const 1 global.set $~argumentsLength i32.const 80 - call $~lib/rt/stub/__retain - local.tee $2 i32.load call_indirect (type $i32_=>_i32) i32.const 2 @@ -184,25 +209,26 @@ i32.const 42 local.set $6 i32.const 2 - local.set $3 + local.set $2 local.get $6 - local.get $3 + local.get $2 i32.add i32.const 44 i32.eq drop + global.get $~lib/memory/__stack_pointer i32.const 123 - call $~lib/rt/stub/__retain - local.set $7 + local.tee $7 + i32.store + global.get $~lib/memory/__stack_pointer local.get $7 - local.set $4 + local.tee $4 + i32.store offset=4 i32.const 43 local.set $5 i32.const 3 - local.set $3 + local.set $2 local.get $4 - call $~lib/rt/stub/__retain - local.tee $3 i32.const 123 i32.eq i32.eqz @@ -214,202 +240,2393 @@ call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $inlining/Baz#set:b (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + local.get $1 + i32.store offset=4 + ) + (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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 176 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 176 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 304 + i32.const 368 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 176 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 - i32.const 4 + i32.const 20 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 + local.set $2 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 + drop local.get $2 - i32.const 16 - i32.add + 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 $inlining/test_ctor - (local $0 i32) + (func $~lib/rt/itcms/visitStack (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 + global.get $~lib/memory/__stack_pointer local.set $1 - local.get $1 - i32.eqz - if - i32.const 16 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - 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 - local.get $1 + ) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 + local.get $0 + i32.load i32.const 3 - i32.store offset=8 + 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 448 + i32.const 273 + 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 448 + i32.const 275 + 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 448 + i32.const 288 + 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 448 + 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 448 + 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 $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 448 + i32.const 224 + 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 448 + i32.const 239 + 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 448 + i32.const 240 + 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 448 + i32.const 256 + 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 448 + i32.const 381 + 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 448 + i32.const 388 + 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 448 + i32.const 401 + 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 448 + i32.const 565 + 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 + 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 + 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 176 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 112 + i32.const 448 + i32.const 462 + 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 448 + i32.const 334 + 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 448 + i32.const 347 + 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 448 + i32.const 361 + 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 448 + i32.const 500 + 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 448 + i32.const 502 + 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 + 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/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 112 + i32.const 176 + i32.const 256 + 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 $inlining/Baz#set:a (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $inlining/Bar#set:e (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $inlining/Bar#set:d (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $inlining/test_ctor + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $1 i32.const 4 local.set $0 local.get $1 - local.set $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + end + local.get $1 + i32.const 3 + call $inlining/Bar#set:d + local.get $1 + i32.const 0 + call $inlining/Bar#set:e + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $3 + i32.store offset=4 + i32.const 2 + local.set $2 local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $3 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 end local.get $3 i32.const 1 - i32.store + call $inlining/Baz#set:a local.get $3 i32.const 0 - i32.store offset=4 - i32.const 2 - local.set $2 + call $inlining/Baz#set:b local.get $3 local.get $2 - i32.store offset=4 + call $inlining/Baz#set:b local.get $3 - local.set $1 + local.tee $1 + i32.store local.get $1 local.get $0 - i32.store offset=12 + call $inlining/Bar#set:e local.get $1 - local.set $4 + local.tee $4 + i32.store offset=8 local.get $4 i32.load i32.const 1 @@ -462,8 +2679,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:inlining call $inlining/test @@ -479,23 +2698,99 @@ unreachable end call $inlining/test_funcs - 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 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $inlining/test_ctor ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/function/Function<%28i32%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%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $inlining/Baz + block $inlining/Bar + block $inlining/Foo + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $inlining/Foo $inlining/Bar $inlining/Baz $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + return + end + return + end + return + end + unreachable + ) (func $~start call $start:inlining ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16960 + i32.const 17008 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) ) diff --git a/tests/compiler/instanceof-class.json b/tests/compiler/instanceof-class.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/instanceof-class.json +++ b/tests/compiler/instanceof-class.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/instanceof-class.optimized.wat b/tests/compiler/instanceof-class.optimized.wat index 6e617bea00..111f5a208c 100644 --- a/tests/compiler/instanceof-class.optimized.wat +++ b/tests/compiler/instanceof-class.optimized.wat @@ -1,61 +1,1230 @@ (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))) (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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (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) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s") - (data (i32.const 1104) "\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\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\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\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $instanceof-class/a (mut i32) (i32.const 0)) (global $instanceof-class/b (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17948)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $instanceof-class/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof-class/b + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17948 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17952 + i32.const 0 + i32.store + i32.const 19520 + 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 17952 + 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 17952 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17948 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $3 - i32.const 28 - i32.add - local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 + local.get $0 + i32.load offset=4 + i32.const -2 i32.and local.tee $2 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -63,81 +1232,281 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=12 local.get $1 - i32.const 0 - i32.store offset=16 - local.get $3 + 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.add + 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/__instanceof (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.tee $0 - i32.const 1104 - i32.load - i32.le_u + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - loop $do-continue|0 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - return + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|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-continue|0 end - local.get $0 - i32.const 3 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 i32.shl - i32.const 1108 i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 + 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 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 i32.const 0 + i32.store offset=16 + local.get $1 + 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 $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 $~start + (func $start:instanceof-class (local $0 i32) - i32.const 1164 - global.set $~lib/rt/stub/offset + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - call $~lib/rt/stub/__new - drop + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $instanceof-class/a + global.get $~lib/memory/__stack_pointer + i32.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 6 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - if (result i32) - local.get $0 - else + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $instanceof-class/b block $__inlined_func$instanceof-class/Child~instanceof (result i32) i32.const 0 @@ -163,11 +1532,95 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end ) + (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1504 + i32.load + i32.le_u + if + loop $do-continue|0 + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|0 + end + end + i32.const 0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $instanceof-class/Child + block $instanceof-class/Parent + block $instanceof-class/Parent + block $instanceof-class/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 $instanceof-class/Child $instanceof-class/Parent $instanceof-class/Parent $instanceof-class/Child $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:instanceof-class + ) + (func $~stack_check + 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 + ) ) diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index bac7e1bc53..3e21ad93ee 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -1,229 +1,2345 @@ (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_=>_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))) + (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))) (memory $0 1) - (data (i32.const 12) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 80) "\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\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05\00\00\00") + (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\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00-\00c\00l\00a\00s\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\04\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\05\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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 80)) - (global $~lib/memory/__heap_base i32 (i32.const 140)) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 - i32.sub - i32.const 65535 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 + 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 - local.tee $4 + 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 273 + 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 368 + i32.const 275 + 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 - local.tee $5 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + 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 - 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - unreachable + call $~lib/rt/itcms/interrupt end i32.const 16 local.get $0 i32.add - call $~lib/rt/stub/__alloc - local.set $2 - local.get $2 + call $~lib/rt/tlsf/__alloc 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.set $2 + local.get $2 local.get $1 - i32.store offset=12 - local.get $3 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 local.get $0 - i32.store offset=16 + call $~lib/rt/itcms/Object#set:rtSize local.get $2 - i32.const 16 + 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 - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $instanceof-class/Parent#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $instanceof-class/Child#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 - call $instanceof-class/Parent#constructor - local.set $0 - local.get $0 - ) - (func $instanceof-class/Parent#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - ) - (func $instanceof-class/Child#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 6 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - call $instanceof-class/Parent#constructor - local.set $0 + 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 $start:instanceof-class - 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 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 $instanceof-class/Child#constructor global.set $instanceof-class/a @@ -244,7 +2360,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 17 i32.const 1 call $~lib/builtins/abort @@ -318,7 +2434,220 @@ i32.const 0 return ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $instanceof-class/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $instanceof-class/b + 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 $instanceof-class/Child + block $instanceof-class/Parent + block $instanceof-class/Parent + block $instanceof-class/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 $instanceof-class/Child $instanceof-class/Parent $instanceof-class/Parent $instanceof-class/Child $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:instanceof-class ) + (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 $instanceof-class/Child#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof-class/Parent#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof-class/Child#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $instanceof-class/Parent#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $instanceof-class/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 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 $instanceof-class/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 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 + ) ) diff --git a/tests/compiler/instanceof.json b/tests/compiler/instanceof.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/instanceof.json +++ b/tests/compiler/instanceof.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index fd9db591bb..fc8567367f 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -3,7 +3,8 @@ (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\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 02f4e1e354..18b15c0c62 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -1,12 +1,11 @@ (module (type $i32_=>_i32 (func (param 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 $f64_=>_i32 (func (param f64) (result 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\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00") (table $0 1 funcref) (global $instanceof/a (mut i32) (i32.const 0)) (global $instanceof/b (mut i32) (i32.const 0)) @@ -15,6 +14,9 @@ (global $instanceof/f (mut f32) (f32.const 0)) (global $instanceof/F (mut f64) (f64.const 0)) (global $instanceof/an (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)) (export "memory" (memory $0)) (start $~start) (func $instanceof/isI32 (param $0 i32) (result i32) @@ -41,15 +43,7 @@ i32.const 0 return ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $start:instanceof - (local $0 i32) - (local $1 i32) i32.const 1 drop i32.const 1 @@ -211,18 +205,6 @@ i32.const 1 drop i32.const 1 - local.tee $0 - global.get $instanceof/an - 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 $instanceof/an global.get $instanceof/an i32.const 0 diff --git a/tests/compiler/issues/1095.json b/tests/compiler/issues/1095.json index d8f53d9b42..73d40f91f2 100644 --- a/tests/compiler/issues/1095.json +++ b/tests/compiler/issues/1095.json @@ -1,6 +1,4 @@ { "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true + ] } \ No newline at end of file diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index 03c3cf39b4..5554fb1a7b 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1,22 +1,251 @@ (module - (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_=>_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_i32_=>_none (func (param i32 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))) (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\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1260) "<\00\00\00\01\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 1324) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") + (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 1448) "\01\00\00\00\08\00\00\00t\00e\00s\00t") + (data (i32.const 1468) "<") + (data (i32.const 1480) "\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 1532) ",") + (data (i32.const 1544) "\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s") + (data (i32.const 1584) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18004)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 18004 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1584 + i32.load + i32.gt_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 1588 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -30,8 +259,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -50,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -93,8 +322,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -185,8 +414,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -199,8 +428,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -272,8 +501,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -327,23 +556,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -390,8 +619,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -460,8 +689,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -488,8 +717,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -516,8 +745,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -564,76 +793,401 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 0 + end + if + unreachable + end + i32.const 18016 + i32.const 0 + i32.store + i32.const 19584 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 18016 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 + 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 18016 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + br $for-loop|0 end end + i32.const 18016 + i32.const 19588 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18016 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18004 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18004 + 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 $1 + i32.const 18004 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 @@ -680,8 +1234,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 498 + i32.const 1392 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -695,8 +1249,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -763,285 +1317,245 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (result i32) + (func $~lib/rt/itcms/__new (result i32) (local $0 i32) - (local $1 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u 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 1376 - i32.const 0 - i32.store - i32.const 2944 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u - if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 local.get $0 - i32.const 2 - i32.shl - i32.const 1376 - 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 1376 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 - end + call $~lib/rt/itcms/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 1 - i32.add - local.set $0 - br $for-loop|0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - i32.const 1376 - i32.const 2948 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1376 - global.set $~lib/rt/tlsf/ROOT + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 i32.const 4 - i32.add - local.tee $1 + i32.store offset=16 + local.get $0 + 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 $0 + i32.load + i32.const -4 + i32.and i32.const 4 - i32.sub + 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 offset=4 + i32.store8 local.get $0 i32.const 0 - i32.store offset=8 + i32.store8 offset=3 local.get $0 - i32.const 3 - i32.store offset=12 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 local.get $0 - i32.const 4 - 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) + (func $issues/1095/Foo#set:bar (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.const 1372 - i32.gt_u + local.get $1 + i32.store + local.get $1 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 + i32.eqz if i32.const 0 i32.const 1120 - i32.const 112 + i32.const 290 i32.const 14 call $~lib/builtins/abort unreachable end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1372 - i32.gt_u - if - local.get $0 + global.get $~lib/rt/itcms/white + local.get $1 i32.const 20 i32.sub - call $~lib/rt/pure/decrement - end - ) - (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 - local.get $0 - i32.const 12 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner1 $folding-inner1 $invalid - end - unreachable - end + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 - i32.load offset=20 - local.tee $1 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if local.get $1 - i32.const 1372 - i32.ge_u + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select if local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + call $~lib/rt/itcms/Object#makeGray end end 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 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid + end + return + end + return end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 + call $~lib/rt/itcms/__visit end ) (func $~start (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1248 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $2 - call $~lib/rt/pure/__retain + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 1456 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load local.tee $0 - local.set $3 + i32.store local.get $0 - i32.load - local.tee $1 i32.eqz if - i32.const 1280 - i32.const 1344 + i32.const 1488 + i32.const 1552 i32.const 8 i32.const 13 call $~lib/builtins/abort @@ -1049,22 +1563,27 @@ end local.get $1 local.get $0 - i32.load - local.tee $0 - i32.ne + call $issues/1095/Foo#set:bar + 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 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1620 + i32.lt_s if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + i32.const 18032 + i32.const 18080 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $3 - local.get $1 - i32.store - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release ) ) diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 3929920a57..bc19232d5f 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -1,26 +1,364 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param 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 (func (param 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 (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 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\01\00\00\00\08\00\00\00t\00e\00s\00t\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\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\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\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") + (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\01\00\00\00\08\00\00\00t\00e\00s\00t\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\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\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\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\000\009\005\00.\00t\00s\00") + (data (i32.const 560) "\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\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 348)) + (global $~lib/ASC_SHRINK_LEVEL 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)) + (global $~lib/memory/__heap_base i32 (i32.const 16980)) (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -43,8 +381,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 368 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -70,8 +408,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 368 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -124,8 +462,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 368 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -140,13 +478,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -232,7 +570,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -256,8 +594,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -273,8 +611,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -327,7 +665,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -368,8 +706,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -402,7 +740,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -411,7 +749,7 @@ 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 @@ -433,8 +771,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -451,8 +789,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -510,8 +848,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -535,15 +873,15 @@ 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 @@ -571,7 +909,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -615,8 +953,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -658,8 +996,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -691,8 +1029,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -729,13 +1067,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 @@ -746,7 +1084,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 @@ -773,6 +1111,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 @@ -815,7 +1155,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 @@ -903,6 +1243,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -929,8 +1597,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1013,8 +1681,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1078,8 +1746,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1229,8 +1897,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1255,7 +1923,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 @@ -1268,7 +1936,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 @@ -1279,7 +1947,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 @@ -1309,7 +1977,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) @@ -1338,8 +2006,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1358,8 +2026,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1387,324 +2055,399 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (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 96 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) 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 96 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u - if + (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 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $issues/1095/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if + 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 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 224 - i32.store - local.get $0 - ) - (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.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 - call $~lib/rt/pure/decrement + 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 $issues/1095/test (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.tee $2 - local.get $0 - i32.load - local.tee $1 - if (result i32) - local.get $1 - else + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 i32.const 256 - i32.const 320 - i32.const 8 - i32.const 13 + i32.const 31 call $~lib/builtins/abort unreachable end - local.tee $1 - local.get $2 - i32.load - local.tee $3 - i32.ne + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/interrupt end - local.get $1 - i32.store - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:issues/1095 - (local $0 i32) - i32.const 0 - call $issues/1095/Foo#constructor - local.tee $0 - call $issues/1095/test + i32.const 16 local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $2 + local.get $2 local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - i32.const 0 - drop + call $~lib/rt/itcms/Object#set:rtId + local.get $2 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/finalize (param $0 i32) + 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 - drop - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.set $1 + (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.const 268435455 - i32.and - local.set $2 - i32.const 0 - drop + i32.eqz + if + return + end i32.const 1 drop local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 122 + i32.const 290 i32.const 14 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 + 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.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u + 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 - i32.const 0 - i32.const 96 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 - i32.const 1 - drop - 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 ) - (func $~start - call $start:issues/1095 + (func $issues/1095/Foo#set:bar (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/pure/__visit (param $0 i32) (param $1 i32) + (func $issues/1095/test (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 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 + if (result i32) + local.get $1 + else + i32.const 464 + i32.const 528 + i32.const 8 + i32.const 13 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 + call $issues/1095/Foo#set:bar + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String~visit (param $0 i32) (param $1 i32) - nop + (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) @@ -1714,7 +2457,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $issues/1095/Foo~visit (param $0 i32) (param $1 i32) @@ -1725,7 +2468,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) @@ -1740,14 +2483,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1095/Foo $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 @@ -1762,4 +2499,83 @@ end unreachable ) + (func $~start + call $start:issues/1095 + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17008 + i32.const 17056 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:issues/1095 + (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 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 $issues/1095/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $issues/1095/test + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $issues/1095/Foo#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 432 + call $issues/1095/Foo#set:bar + 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/issues/1225.json b/tests/compiler/issues/1225.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/issues/1225.json +++ b/tests/compiler/issues/1225.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index 1f80f2c93d..e236b03394 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1,23 +1,257 @@ (module - (type $none_=>_i32 (func (result i32))) - (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 $none_=>_i32 (func (result i32))) + (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))) (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) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") + (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\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s") + (data (i32.const 1488) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1516) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $issues/1225/x (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) + (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $issues/1225/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -31,8 +265,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -51,8 +285,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,8 +328,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -186,8 +420,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -200,8 +434,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -273,8 +507,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -328,23 +562,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -391,8 +625,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -461,8 +695,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -489,8 +723,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -517,8 +751,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -565,69 +799,394 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + 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 $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 17920 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 + 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 17920 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + 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/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 @@ -681,8 +1240,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 498 + i32.const 1392 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -696,8 +1255,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -764,110 +1323,146 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (result i32) - (local $0 i32) + (func $~lib/memory/memory.fill (param $0 i32) (local $1 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size + (local $2 i32) + block $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 8 + i32.add + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=10 + local.get $0 + i32.const 0 + i32.store8 offset=9 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=8 + local.get $0 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.and 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 1280 + i32.add + local.tee $0 i32.const 0 i32.store - i32.const 2848 + local.get $0 + i32.const 12 + local.get $1 + 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 - loop $for-loop|0 - local.get $0 - i32.const 23 - i32.lt_u + 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 - i32.const 2 - i32.shl - i32.const 1280 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 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 - 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 1280 - 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.const 32 i32.add local.set $0 - br $for-loop|0 + br $while-continue|0 end end - i32.const 1280 - i32.const 2852 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1280 - 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 12 - i32.store offset=16 - local.get $1 - i32.const 16 - i32.add ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -877,149 +1472,114 @@ global.get $issues/1225/x i32.load offset=4 ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $start:issues/1225 + (local $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 + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - i32.const 0 - i32.const 1120 - i32.const 122 - i32.const 14 + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 local.get $0 - i32.load offset=20 - local.tee $1 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $1 - i32.const 1276 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 + br $__inlined_func$~lib/rt/itcms/interrupt end - br $__inlined_func$~lib/rt/__visit_members + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - unreachable - 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $0 - local.get $1 - 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) - (local $1 i32) - (local $2 i32) - call $~lib/rt/pure/__new - local.tee $0 - i32.const 1276 - i32.gt_u + global.get $~lib/rt/tlsf/ROOT + i32.eqz 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 + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 12 + i32.store offset=16 + local.get $0 + 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 $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 + call $~lib/memory/memory.fill + local.get $0 + i32.store local.get $0 i32.const 0 i32.store @@ -1036,6 +1596,10 @@ 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 $0 global.set $issues/1225/x global.get $issues/1225/x @@ -1044,7 +1608,7 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1456 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1056,26 +1620,78 @@ i32.ne if i32.const 0 - i32.const 1248 + i32.const 1456 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $issues/1225/x - local.tee $0 + i32.const 0 + global.set $issues/1225/x + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - local.get $0 - i32.const 1276 - i32.gt_u + 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) + block $invalid + block $issues/1225/X + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $invalid + end + return + end + return + end local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return end + return end - i32.const 0 - global.set $issues/1225/x + unreachable + ) + (func $~start + call $start:issues/1225 ) ) diff --git a/tests/compiler/issues/1225.ts b/tests/compiler/issues/1225.ts index 4ebdfdc956..70cc63a79d 100644 --- a/tests/compiler/issues/1225.ts +++ b/tests/compiler/issues/1225.ts @@ -19,3 +19,5 @@ assert(normal() === 4); assert(viaThis() === 4); x = changetype(0); // unleak + +__collect(); diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index 6ce8cc3221..7b990614e9 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -1,28 +1,375 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (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_=>_none (func (param i32))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result 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))) (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) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\00") + (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\1c\00\00\00i\00s\00s\00u\00e\00s\00/\001\002\002\005\00.\00t\00s\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) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $issues/1225/x (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 252)) - (export "memory" (memory $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)) (export "normal" (func $issues/1225/normal)) (export "viaThis" (func $issues/1225/viaThis)) + (export "memory" (memory $0)) (start $~start) + (func $issues/1225/X#set:viaThis (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $issues/1225/X#set:normal (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -45,8 +392,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 368 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -72,8 +419,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 368 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -126,8 +473,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 368 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -142,13 +489,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -234,7 +581,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -258,8 +605,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -275,8 +622,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -329,7 +676,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -370,8 +717,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -404,7 +751,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -413,7 +760,7 @@ 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 @@ -435,8 +782,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -453,8 +800,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -512,8 +859,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,15 +884,15 @@ 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 @@ -573,7 +920,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -617,8 +964,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,8 +1007,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -693,8 +1040,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -731,13 +1078,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 @@ -748,7 +1095,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 @@ -775,6 +1122,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 @@ -817,7 +1166,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 @@ -885,25 +1234,353 @@ local.get $5 i32.const 1 i32.add - local.set $5 - br $for-loop|0 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|0 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 + 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 - local.get $3 - global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) local.get $0 @@ -931,8 +1608,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1015,8 +1692,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1080,8 +1757,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1231,8 +1908,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1257,7 +1934,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 @@ -1270,7 +1947,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 @@ -1281,7 +1958,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 @@ -1311,7 +1988,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) @@ -1340,8 +2017,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1360,8 +2037,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1389,135 +2066,285 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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.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 96 - i32.const 109 + 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 - call $~lib/builtins/abort - unreachable + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 32 i32.const 96 - i32.const 112 - i32.const 14 + i32.const 256 + i32.const 31 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - ) - (func $issues/1225/X#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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 - i32.store local.get $0 - i32.const 0 - i32.store offset=4 + call $~lib/memory/memory.fill + local.get $3 + ) + (func $issues/1225/X#set:x (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=8 - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $0 ) (func $issues/1225/normal (result i32) global.get $issues/1225/x @@ -1527,20 +2354,71 @@ global.get $issues/1225/x i32.load offset=4 ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u + (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 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end + drop ) (func $start:issues/1225 - (local $0 i32) - (local $1 i32) + 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 i32.const 4 call $issues/1225/X#constructor @@ -1551,7 +2429,7 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 432 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1563,169 +2441,31 @@ i32.eqz if i32.const 0 - i32.const 224 + i32.const 432 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - local.tee $0 - global.get $issues/1225/x - 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 - end - local.get $0 global.set $issues/1225/x + call $~lib/rt/itcms/__collect ) - (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/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) + (func $~lib/rt/__visit_globals (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 96 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq + global.get $issues/1225/x + local.tee $1 if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - 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 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 + call $~lib/rt/itcms/__visit end - ) - (func $~start - call $start:issues/1225 - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + i32.const 224 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 - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + i32.const 32 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 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -1735,12 +2475,9 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) - (func $issues/1225/X~visit (param $0 i32) (param $1 i32) - nop - ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) block $invalid block $issues/1225/X @@ -1753,14 +2490,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $issues/1225/X $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 @@ -1768,11 +2499,68 @@ call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $issues/1225/X~visit return end unreachable ) + (func $~start + call $start:issues/1225 + ) + (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 $issues/1225/X#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 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $issues/1225/X#set:normal + local.get $0 + i32.const 0 + call $issues/1225/X#set:viaThis + local.get $0 + local.get $1 + call $issues/1225/X#set:x + local.get $0 + local.get $0 + i32.load offset=8 + call $issues/1225/X#set:viaThis + local.get $0 + local.get $1 + call $issues/1225/X#set:normal + 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/limits.json b/tests/compiler/limits.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/limits.json +++ b/tests/compiler/limits.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/limits.untouched.wat b/tests/compiler/limits.untouched.wat index a3d1cfd9ce..7f097e0d94 100644 --- a/tests/compiler/limits.untouched.wat +++ b/tests/compiler/limits.untouched.wat @@ -28,6 +28,9 @@ (global $~lib/builtins/f32.MAX_SAFE_INTEGER f32 (f32.const 16777215)) (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:limits diff --git a/tests/compiler/literals.json b/tests/compiler/literals.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/literals.json +++ b/tests/compiler/literals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/literals.untouched.wat b/tests/compiler/literals.untouched.wat index 8660c80785..624fc2ffb5 100644 --- a/tests/compiler/literals.untouched.wat +++ b/tests/compiler/literals.untouched.wat @@ -2,6 +2,9 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:literals diff --git a/tests/compiler/logical.json b/tests/compiler/logical.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/logical.json +++ b/tests/compiler/logical.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index a7507ec143..d91633a40d 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -1,20 +1,248 @@ (module - (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_=>_none (func (param i32 i32))) + (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_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s") - (data (i32.const 1084) "<\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 1148) "<\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 1212) "<\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 1036) ",") + (data (i32.const 1048) "\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\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) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -28,8 +256,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 272 + i32.const 1440 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -48,8 +276,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 274 + i32.const 1440 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -91,8 +319,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 287 + i32.const 1440 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -183,8 +411,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 200 + i32.const 1440 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -197,8 +425,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 202 + i32.const 1440 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -270,8 +498,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 223 + i32.const 1440 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -325,23 +553,23 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 238 + i32.const 1440 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1232 - i32.const 239 + i32.const 1440 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -388,8 +616,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 255 + i32.const 1440 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -458,8 +686,8 @@ i32.gt_u if i32.const 0 - i32.const 1232 - i32.const 380 + i32.const 1440 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -486,8 +714,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 387 + i32.const 1440 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -514,8 +742,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 400 + i32.const 1440 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -562,76 +790,401 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + 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 $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 17920 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 17920 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + 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/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (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 @@ -678,8 +1231,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 498 + i32.const 1440 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -693,8 +1246,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 500 + i32.const 1440 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -761,306 +1314,233 @@ 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 1280 - i32.const 0 - i32.store - i32.const 2848 - 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 1280 - 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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $logical/Obj + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1280 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $logical/Obj $invalid end + return end + return + end + local.get $0 + i32.load + local.tee $0 + if local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + call $~lib/rt/itcms/__visit end + return end - i32.const 1280 - i32.const 2852 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1280 - global.set $~lib/rt/tlsf/ROOT + return 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 + unreachable ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1276 - i32.gt_u + (func $~start + call $start:logical + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s 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 1168 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 + i32.const 17936 + i32.const 17984 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 1168 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable end - local.get $0 ) - (func $~lib/rt/pure/__release (param $0 i32) + (func $start:logical + (local $0 i32) + (local $1 f32) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.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 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1276 - i32.gt_u + i32.store + local.get $0 + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.const 0 + i32.const 1056 + i32.const 87 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + call $logical/Obj#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 + i32.store local.get $0 - i32.load - i32.const 1 - i32.and + i32.eqz if i32.const 0 - i32.const 1168 - i32.const 122 - i32.const 14 + i32.const 1056 + i32.const 92 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.eq + i32.const 17908 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - i32.const 1276 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - unreachable end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1168 - 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 + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1168 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start + (func $logical/Obj#constructor (result i32) (local $0 i32) (local $1 i32) - (local $2 i32) - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.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 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT i32.eqz if - i32.const 0 - i32.const 1056 - i32.const 87 - i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock local.tee $0 - local.set $2 + i32.const 3 + i32.store offset=12 local.get $0 - call $~lib/rt/pure/__retain + i32.const 0 + i32.store offset=16 + local.get $0 + 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 $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 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 92 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release ) ) diff --git a/tests/compiler/logical.ts b/tests/compiler/logical.ts index f91f1ce1a1..cad6dbed6e 100644 --- a/tests/compiler/logical.ts +++ b/tests/compiler/logical.ts @@ -90,3 +90,6 @@ function testContextualBoolOr(someObj: Obj, someInt: i32): bool { return someObj || someInt; } assert(testContextualBoolOr(new Obj(), 0)); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index d822dfdc42..a24070d428 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -1,27 +1,47 @@ (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 $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (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_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 60) "<\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 124) "<\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 188) "<\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 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00l\00o\00g\00i\00c\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (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) (global $logical/i (mut i32) (i32.const 0)) (global $logical/I (mut i64) (i64.const 0)) (global $logical/f (mut f32) (f32.const 0)) (global $logical/F (mut f64) (f64.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 252)) + (global $~lib/ASC_SHRINK_LEVEL 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)) (export "memory" (memory $0)) (start $~start) (func $logical/testShortcutAnd (param $0 i64) (param $1 i32) (result i32) @@ -44,6 +64,324 @@ local.get $1 end ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -66,8 +404,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 272 + i32.const 416 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -93,8 +431,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 274 + i32.const 416 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -147,8 +485,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 287 + i32.const 416 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -163,13 +501,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -255,7 +593,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -279,8 +617,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 200 + i32.const 416 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -296,8 +634,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 202 + i32.const 416 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -350,7 +688,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -391,8 +729,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 223 + i32.const 416 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -425,7 +763,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -434,7 +772,7 @@ 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 @@ -456,8 +794,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 238 + i32.const 416 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -474,8 +812,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 239 + i32.const 416 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -533,8 +871,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 255 + i32.const 416 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -558,15 +896,15 @@ 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 @@ -594,7 +932,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -638,8 +976,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 380 + i32.const 416 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -681,8 +1019,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 387 + i32.const 416 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -714,8 +1052,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 400 + i32.const 416 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -752,13 +1090,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 @@ -769,7 +1107,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 @@ -796,6 +1134,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 @@ -838,7 +1178,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 @@ -926,6 +1266,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -952,8 +1620,8 @@ i32.ge_u if i32.const 80 - i32.const 208 - i32.const 461 + i32.const 416 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1036,8 +1704,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 333 + i32.const 416 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1101,8 +1769,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 346 + i32.const 416 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1252,8 +1920,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 360 + i32.const 416 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1278,7 +1946,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 @@ -1291,7 +1959,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 @@ -1302,7 +1970,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 @@ -1332,7 +2000,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) @@ -1361,8 +2029,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 498 + i32.const 416 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1381,8 +2049,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 500 + i32.const 416 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1410,168 +2078,425 @@ i32.const 4 i32.add ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (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 + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 i32.const 1073741804 - i32.gt_u + i32.ge_u if i32.const 80 i32.const 144 - i32.const 275 - i32.const 30 + i32.const 256 + 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 - 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.set $2 + local.get $2 local.get $1 - i32.store offset=12 - local.get $3 - local.get $0 - i32.store offset=16 + call $~lib/rt/itcms/Object#set:rtId local.get $2 - i32.const 16 - i32.add - ) - (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 + 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 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add - i32.store offset=4 + local.set $3 + local.get $3 i32.const 0 - drop - i32.const 1 - drop local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if + call $~lib/memory/memory.fill + local.get $3 + ) + (func $logical/testContextualBoolAnd (param $0 i32) (param $1 i32) (result i32) + local.get $0 + if (result i32) + local.get $1 + else i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable end ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + (func $logical/testContextualBoolOr (param $0 i32) (param $1 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) + i32.const 1 + else + local.get $1 end - local.get $0 ) - (func $logical/Obj#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + (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.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.ne local.set $0 - end - local.get $0 - ) - (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 + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end - ) - (func $logical/testContextualBoolAnd (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 if (result i32) - local.get $1 + i32.const 1 else i32.const 0 end - local.set $2 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 272 local.get $0 - call $~lib/rt/pure/__release - local.get $2 + call $~lib/rt/itcms/__visit + i32.const 80 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $logical/testContextualBoolOr (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - if (result i32) - i32.const 1 - else + 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 $logical/Obj + 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 $logical/Obj $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:logical + ) + (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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 ) (func $start:logical (local $0 f32) (local $1 f64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 if (result i32) unreachable @@ -2076,9 +3001,22 @@ call $~lib/builtins/abort unreachable end + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $logical/Obj#constructor - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 1 call $logical/testContextualBoolAnd i32.const 0 @@ -2094,7 +3032,11 @@ end i32.const 0 call $logical/Obj#constructor - local.tee $3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 0 call $logical/testContextualBoolOr i32.const 0 @@ -2108,200 +3050,40 @@ call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (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/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock + 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.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $logical/Obj#constructor (param $0 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop - i32.const 1 - drop + i32.store local.get $0 - i32.load - i32.const 1 - i32.and i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - ) - (func $~start - call $start:logical - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - 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 - end - ) - (func $logical/Obj~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $logical/Obj - 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 $logical/Obj $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 $logical/Obj~visit - return - end - unreachable ) ) diff --git a/tests/compiler/loop-flow.json b/tests/compiler/loop-flow.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/loop-flow.json +++ b/tests/compiler/loop-flow.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 624d432c85..ad06501000 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -5,9 +5,10 @@ (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\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") - (data (i32.const 1084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m") - (export "memory" (memory $0)) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 1084) "\1c") + (data (i32.const 1096) "\01\00\00\00\08\00\00\00t\00e\00r\00m") (export "whileReturn" (func $loop-flow/whileReturn)) (export "whileThrow" (func $loop-flow/whileThrow)) (export "whileContinue" (func $loop-flow/whileContinue)) @@ -19,6 +20,7 @@ (export "doReturn" (func $loop-flow/whileReturn)) (export "doThrow" (func $loop-flow/doThrow)) (export "doAny" (func $loop-flow/doAny)) + (export "memory" (memory $0)) (start $~start) (func $loop-flow/whileReturn (result i32) i32.const 1 diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index 7ef6d12f8b..3e79aceae0 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -5,10 +5,12 @@ (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\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") - (data (i32.const 60) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00l\00o\00o\00p\00-\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00") + (data (i32.const 60) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00r\00m\00\00\00\00\00") (table $0 1 funcref) - (export "memory" (memory $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)) (export "whileReturn" (func $loop-flow/whileReturn)) (export "whileThrow" (func $loop-flow/whileThrow)) (export "whileContinue" (func $loop-flow/whileContinue)) @@ -20,6 +22,7 @@ (export "doReturn" (func $loop-flow/doReturn)) (export "doThrow" (func $loop-flow/doThrow)) (export "doAny" (func $loop-flow/doAny)) + (export "memory" (memory $0)) (start $~start) (func $loop-flow/whileReturn (result i32) (local $0 i32) diff --git a/tests/compiler/loop-wrap.json b/tests/compiler/loop-wrap.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/loop-wrap.json +++ b/tests/compiler/loop-wrap.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/loop-wrap.optimized.wat b/tests/compiler/loop-wrap.optimized.wat index fb9a7b9452..89bf131a73 100644 --- a/tests/compiler/loop-wrap.optimized.wat +++ b/tests/compiler/loop-wrap.optimized.wat @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (memory $0 0) - (export "memory" (memory $0)) (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) + (export "memory" (memory $0)) (func $loop-wrap/testAlwaysWrapped (local $0 i32) loop $do-continue|0 diff --git a/tests/compiler/loop-wrap.untouched.wat b/tests/compiler/loop-wrap.untouched.wat index b5c4d03b09..3dfbe4575a 100644 --- a/tests/compiler/loop-wrap.untouched.wat +++ b/tests/compiler/loop-wrap.untouched.wat @@ -3,10 +3,13 @@ (type $i32_=>_none (func (param i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "testAlwaysWrapped" (func $loop-wrap/testAlwaysWrapped)) (export "testFirstWrapped" (func $loop-wrap/testFirstWrapped)) (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) + (export "memory" (memory $0)) (func $loop-wrap/testAlwaysWrapped (local $0 i32) (local $1 i32) diff --git a/tests/compiler/managed-cast.json b/tests/compiler/managed-cast.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/managed-cast.json +++ b/tests/compiler/managed-cast.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/managed-cast.optimized.wat b/tests/compiler/managed-cast.optimized.wat index 8cca8ef2c3..a3bbb11c45 100644 --- a/tests/compiler/managed-cast.optimized.wat +++ b/tests/compiler/managed-cast.optimized.wat @@ -1,23 +1,252 @@ (module + (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 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))) (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) "<\00\00\00\01\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 1292) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") - (data (i32.const 1356) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t") - (data (i32.const 1424) "\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\04\00\00\00 ") + (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\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l") + (data (i32.const 1500) "<") + (data (i32.const 1512) "\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s") + (data (i32.const 1564) "<") + (data (i32.const 1576) "\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t") + (data (i32.const 1632) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1660) " \00\00\00\04\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18060)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18060 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1632 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -31,8 +260,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -51,8 +280,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,8 +323,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -186,8 +415,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -200,8 +429,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -273,8 +502,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -328,23 +557,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -391,8 +620,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -461,8 +690,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -489,8 +718,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -517,8 +746,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -565,78 +794,403 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + i32.const 0 + end + if + unreachable + end + i32.const 18064 + i32.const 0 + i32.store + i32.const 19632 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 18064 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 + 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 18064 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + br $for-loop|0 end end + i32.const 18064 + i32.const 19636 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18064 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18060 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18060 + 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 $1 + i32.const 18060 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 @@ -681,8 +1235,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 498 + i32.const 1392 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -696,8 +1250,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -764,449 +1318,524 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - memory.size - local.tee $2 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $2 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1472 - i32.const 0 - i32.store - i32.const 3040 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $1 - i32.const 23 - i32.lt_u - if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $1 + loop $do-continue|0 local.get $1 - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.lt_u - if - local.get $2 - local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1472 - i32.add - i32.const 0 - i32.store offset=96 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + 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 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - i32.const 1472 - i32.const 3044 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1472 - global.set $~lib/rt/tlsf/ROOT + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $2 - i32.const 4 - i32.sub local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $2 - i32.const 16 + local.get $1 + 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 $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/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/rt/__instanceof (param $0 i32) (result i32) local.get $0 - i32.const 1468 - i32.gt_u + i32.const 20 + i32.sub + i32.load offset=12 + local.tee $0 + i32.const 1632 + i32.load + i32.le_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 + loop $do-continue|0 + local.get $0 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + if + i32.const 1 + return + end + local.get $0 + i32.const 3 + i32.shl + i32.const 1636 + i32.add + i32.load offset=4 + local.tee $0 + br_if $do-continue|0 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 + i32.const 0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $managed-cast/Animal + block $managed-cast/Cat + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return end + return + end + unreachable + ) + (func $~start + call $start:managed-cast + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1676 + i32.lt_s + if + i32.const 18080 + i32.const 18128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 ) (func $managed-cast/Cat#constructor (result i32) (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - if (result i32) - local.get $0 - else - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - end - ) - (func $~lib/rt/pure/__release (param $0 i32) + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1468 - i32.gt_u + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - ) - (func $managed-cast/testDowncastToNullable (param $0 i32) - (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__retain + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release ) - (func $~lib/rt/__instanceof (param $0 i32) (result i32) - local.get $0 - i32.const 20 + (func $managed-cast/testDowncastToNullable (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=12 - local.tee $0 - i32.const 1424 - i32.load - i32.le_u + 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 $0 + i32.store + local.get $0 if - loop $do-continue|0 - local.get $0 - i32.const 3 - i32.eq - if - i32.const 1 - return - end - local.get $0 - i32.const 3 - i32.shl - i32.const 1428 - i32.add - i32.load offset=4 - local.tee $0 - br_if $do-continue|0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 end - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:managed-cast (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $managed-cast/Cat#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.tee $0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.eqz if - i32.const 1248 - i32.const 1312 + i32.const 1456 + i32.const 1520 i32.const 14 i32.const 12 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncastToNullable call $managed-cast/Cat#constructor - local.tee $5 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncastToNullable call $managed-cast/Cat#constructor - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/rt/__instanceof i32.eqz if - i32.const 1376 - i32.const 1312 + i32.const 1584 + i32.const 1520 i32.const 31 i32.const 9 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.eqz if - i32.const 1248 - i32.const 1312 + i32.const 1456 + i32.const 1520 i32.const 36 i32.const 9 call $~lib/builtins/abort unreachable end + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/rt/__instanceof i32.eqz if - i32.const 1376 - i32.const 1312 + i32.const 1584 + i32.const 1520 i32.const 36 i32.const 9 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $~lib/rt/__instanceof i32.eqz if - i32.const 1376 - i32.const 1312 + i32.const 1584 + i32.const 1520 i32.const 41 i32.const 30 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release + local.get $0 + i32.store offset=4 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer call $managed-cast/Cat#constructor - local.tee $9 - call $~lib/rt/pure/__retain - local.tee $1 - local.get $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $~lib/rt/__instanceof i32.eqz if - i32.const 1376 - i32.const 1312 + i32.const 1584 + i32.const 1520 i32.const 47 i32.const 30 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - ) - (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 + i32.store offset=4 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 end - local.get $1 - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 18060 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - 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 $__inlined_func$~lib/rt/__visit_members $invalid - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - i32.const 1468 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - unreachable 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 + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1120 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 - call $start:managed-cast + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/managed-cast.ts b/tests/compiler/managed-cast.ts index d3ea53b229..1286778662 100644 --- a/tests/compiler/managed-cast.ts +++ b/tests/compiler/managed-cast.ts @@ -48,3 +48,6 @@ function testUpcastFromToNullable(animal: Animal | null): void { if (maybeCat) maybeCat.meow(); } testUpcastFromToNullable(new Cat()); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index c00b1298ed..b2ace4d271 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -2,27 +2,363 @@ (type $i32_=>_none (func (param i32))) (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 $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (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 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) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 268) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 332) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 400) "\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\04\00\00\00 \00\00\00\00\00\00\00") + (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\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\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\1e\00\00\00m\00a\00n\00a\00g\00e\00d\00-\00c\00a\00s\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 540) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00u\00p\00c\00a\00s\00t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 608) "\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\04\00\00\00 \00\00\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 400)) - (global $~lib/memory/__heap_base i32 (i32.const 444)) + (global $~lib/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)) + (global $~lib/memory/__heap_base i32 (i32.const 17036)) (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -45,8 +381,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 272 + i32.const 368 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -72,8 +408,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 274 + i32.const 368 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -126,8 +462,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 + i32.const 368 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -142,13 +478,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -234,7 +570,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -258,8 +594,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -275,8 +611,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -329,7 +665,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -370,8 +706,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -404,7 +740,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -413,7 +749,7 @@ 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 @@ -435,8 +771,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -453,8 +789,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -512,8 +848,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,15 +873,15 @@ 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 @@ -573,7 +909,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -617,8 +953,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,8 +996,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -693,8 +1029,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -731,13 +1067,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 @@ -748,7 +1084,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 @@ -775,6 +1111,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 @@ -817,7 +1155,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 @@ -905,6 +1243,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -931,8 +1597,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1015,8 +1681,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1080,8 +1746,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1231,8 +1897,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1257,7 +1923,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 @@ -1270,7 +1936,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 @@ -1281,7 +1947,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 @@ -1311,7 +1977,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) @@ -1340,8 +2006,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1360,8 +2026,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1389,637 +2055,912 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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 96 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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 + 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/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 256 + 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 - i32.const 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 - i32.store offset=4 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 i32.const 0 - drop - i32.const 1 - drop local.get $0 + call $~lib/memory/memory.fill + local.get $3 + ) + (func $managed-cast/Animal#tame (param $0 i32) + nop + ) + (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 20 + i32.sub + i32.load offset=12 + local.set $2 + global.get $~lib/rt/__rtti_base + local.set $3 + local.get $2 + local.get $3 i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz + i32.le_u if - i32.const 0 - i32.const 96 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + loop $do-continue|0 + local.get $2 + local.get $1 + i32.eq + if + i32.const 1 + return + end + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const 8 + i32.mul + i32.add + i32.load offset=4 + local.tee $2 + local.set $4 + local.get $4 + br_if $do-continue|0 + end end + i32.const 0 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u + (func $managed-cast/Cat#meow (param $0 i32) + nop + ) + (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 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + 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 $managed-cast/Animal#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + 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 $managed-cast/Animal + block $managed-cast/Cat + 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 $managed-cast/Cat $managed-cast/Animal $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 $~start + call $start:managed-cast + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17056 + i32.const 17104 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 ) (func $managed-cast/Cat#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $managed-cast/Animal#constructor - local.set $0 - local.get $0 - ) - (func $managed-cast/Animal#tame (param $0 i32) - nop - ) - (func $~lib/rt/pure/__release (param $0 i32) + local.tee $0 + i32.store 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 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $managed-cast/testDowncast (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 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $managed-cast/Animal#tame - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testDowncastFromNullable (param $0 i32) (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else - i32.const 224 - i32.const 288 + i32.const 432 + i32.const 496 i32.const 14 i32.const 12 call $~lib/builtins/abort unreachable end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $managed-cast/Animal#tame - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testDowncastToNullable (param $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $1 + i32.store local.get $1 if local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $managed-cast/Animal#tame end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testDowncastFromToNullable (param $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $1 + i32.store local.get $1 if local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $managed-cast/Animal#tame end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/__instanceof (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=12 - local.set $2 - global.get $~lib/rt/__rtti_base - local.set $3 - local.get $2 - local.get $3 - i32.load - i32.le_u - if - loop $do-continue|0 - local.get $2 - local.get $1 - i32.eq - if - i32.const 1 - return - end - local.get $3 - i32.const 4 - i32.add - local.get $2 - i32.const 8 - i32.mul - i32.add - i32.load offset=4 - local.tee $2 - local.set $4 - local.get $4 - br_if $do-continue|0 - end - end - i32.const 0 - ) - (func $managed-cast/Cat#meow (param $0 i32) - nop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testUpcast (param $0 i32) (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 i32.const 3 call $~lib/rt/__instanceof if (result i32) local.get $1 else - i32.const 352 - i32.const 288 + i32.const 560 + i32.const 496 i32.const 31 i32.const 9 call $~lib/builtins/abort unreachable end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $managed-cast/Cat#meow - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testUpcastFromNullable (param $0 i32) (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 if (result i32) local.get $1 else - i32.const 224 - i32.const 288 + i32.const 432 + i32.const 496 i32.const 36 i32.const 9 call $~lib/builtins/abort unreachable end local.tee $1 + i32.store offset=4 + local.get $1 i32.const 3 call $~lib/rt/__instanceof if (result i32) local.get $1 else - i32.const 352 - i32.const 288 + i32.const 560 + i32.const 496 i32.const 36 i32.const 9 call $~lib/builtins/abort unreachable end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $managed-cast/Cat#meow - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testUpcastToNullable (param $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store + local.get $1 i32.const 3 call $~lib/rt/__instanceof if (result i32) local.get $1 else - i32.const 352 - i32.const 288 + i32.const 560 + i32.const 496 i32.const 41 i32.const 30 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $2 if local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 call $managed-cast/Cat#meow end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $managed-cast/testUpcastFromToNullable (param $0 i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 local.tee $1 + i32.store + local.get $1 i32.const 3 call $~lib/rt/__instanceof if (result i32) local.get $1 else - i32.const 352 - i32.const 288 + i32.const 560 + i32.const 496 i32.const 47 i32.const 30 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $2 if local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 call $managed-cast/Cat#meow end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:managed-cast (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $managed-cast/Cat#constructor - local.tee $0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncast i32.const 0 call $managed-cast/Cat#constructor - local.tee $1 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncastFromNullable i32.const 0 call $managed-cast/Cat#constructor - local.tee $2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncastToNullable i32.const 0 call $managed-cast/Cat#constructor - local.tee $3 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testDowncastFromToNullable i32.const 0 call $managed-cast/Cat#constructor - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testUpcast i32.const 0 call $managed-cast/Cat#constructor - local.tee $5 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testUpcastFromNullable i32.const 0 call $managed-cast/Cat#constructor - local.tee $6 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $managed-cast/testUpcastToNullable i32.const 0 call $managed-cast/Cat#constructor - local.tee $7 - call $managed-cast/testUpcastFromToNullable + local.set $0 + global.get $~lib/memory/__stack_pointer 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (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/pure/finalize (param $0 i32) - i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock + call $managed-cast/testUpcastFromToNullable + 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.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $managed-cast/Animal#constructor (param $0 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - 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 - 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 - ) - (func $~start - call $start:managed-cast - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + i32.store 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 i32.eqz if + global.get $~lib/memory/__stack_pointer 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 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - ) - (func $managed-cast/Cat~visit (param $0 i32) (param $1 i32) 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 - call $managed-cast/Animal~visit - ) - (func $managed-cast/Animal~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $managed-cast/Animal - block $managed-cast/Cat - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $managed-cast/Cat $managed-cast/Animal $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 $managed-cast/Cat~visit - return - end - local.get $0 - local.get $1 - call $managed-cast/Animal~visit - return - end - unreachable ) ) diff --git a/tests/compiler/many-locals.json b/tests/compiler/many-locals.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/many-locals.json +++ b/tests/compiler/many-locals.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index b645768a85..814d3325d7 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -1,10 +1,11 @@ (module (type $i32_=>_i32 (func (param i32) (result 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\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") - (export "memory" (memory $0)) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s") (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) + (export "memory" (memory $0)) (func $many-locals/testI32 (param $0 i32) (result i32) local.get $0 ) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index e63242876d..b31cb70bd4 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -4,11 +4,14 @@ (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\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00m\00a\00n\00y\00-\00l\00o\00c\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) - (export "memory" (memory $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)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) + (export "memory" (memory $0)) (start $~start) (func $many-locals/testI32 (param $0 i32) (result i32) (local $1 i32) diff --git a/tests/compiler/memcpy.json b/tests/compiler/memcpy.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/memcpy.json +++ b/tests/compiler/memcpy.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index eea9d76c11..a051559715 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -4,10 +4,11 @@ (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\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s") (global $memcpy/dest (mut i32) (i32.const 0)) - (export "memory" (memory $0)) (export "memcpy" (func $memcpy/memcpy)) + (export "memory" (memory $0)) (start $~start) (func $memcpy/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 5d9045c068..67557bf02d 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -4,12 +4,15 @@ (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 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00c\00p\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $memcpy/base i32 (i32.const 8)) (global $memcpy/dest (mut i32) (i32.const 0)) - (export "memory" (memory $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)) (export "memcpy" (func $memcpy/memcpy)) + (export "memory" (memory $0)) (start $~start) (func $memcpy/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) diff --git a/tests/compiler/memmove.json b/tests/compiler/memmove.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/memmove.json +++ b/tests/compiler/memmove.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index b7171f2230..914d85840b 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -4,7 +4,8 @@ (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\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") (global $memmove/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 74bf2c3cf0..befa44ecb6 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -4,10 +4,13 @@ (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 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $memmove/base i32 (i32.const 8)) (global $memmove/dest (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) (export "memory" (memory $0)) (start $~start) (func $memmove/memmove (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/memory.json b/tests/compiler/memory.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/memory.json +++ b/tests/compiler/memory.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/memory.optimized.wat b/tests/compiler/memory.optimized.wat index 0fea3a5976..45f1173f28 100644 --- a/tests/compiler/memory.optimized.wat +++ b/tests/compiler/memory.optimized.wat @@ -4,7 +4,8 @@ (type $none_=>_i32 (func (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\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s") (data (i32.const 1169) "\01\02\03") (data (i32.const 1174) "\c0?\00\00 @\00\00`@") (data (i32.const 1200) "\01") diff --git a/tests/compiler/memory.untouched.wat b/tests/compiler/memory.untouched.wat index 4ffd9d7e20..7e518a3059 100644 --- a/tests/compiler/memory.untouched.wat +++ b/tests/compiler/memory.untouched.wat @@ -5,7 +5,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\00\00\00\00") - (data (i32.const 28) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 28) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (data (i32.const 80) "\00") (data (i32.const 96) "\00") (data (i32.const 104) "\00") @@ -31,6 +31,9 @@ (data (i32.const 208) "\01") (table $0 1 funcref) (global $memory/ptr (mut i32) (i32.const 80)) + (global $~lib/memory/__data_end i32 (i32.const 212)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16596)) + (global $~lib/memory/__heap_base i32 (i32.const 16596)) (export "memory" (memory $0)) (start $~start) (func $memory/test (result i32) diff --git a/tests/compiler/memorybase.json b/tests/compiler/memorybase.json index 649107a8f2..bf2639fb63 100644 --- a/tests/compiler/memorybase.json +++ b/tests/compiler/memorybase.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--memoryBase 1024" ] } \ No newline at end of file diff --git a/tests/compiler/memorybase.untouched.wat b/tests/compiler/memorybase.untouched.wat index ba568336de..6e9e1b8329 100644 --- a/tests/compiler/memorybase.untouched.wat +++ b/tests/compiler/memorybase.untouched.wat @@ -5,6 +5,9 @@ (table $0 1 funcref) (global $memorybase/staticData i32 (i32.const 1024)) (global $~lib/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)) (export "memory" (memory $0)) (start $~start) (func $start:memorybase diff --git a/tests/compiler/memset.json b/tests/compiler/memset.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/memset.json +++ b/tests/compiler/memset.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 4804a66294..5c1a4b4a03 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -4,7 +4,8 @@ (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\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (global $memset/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (start $~start) @@ -208,9 +209,9 @@ end ) (func $start:memset - i32.const 1084 + i32.const 17468 global.set $memset/dest - i32.const 1084 + i32.const 17468 i32.const 1 i32.const 16 call $memset/memset diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index b04721353f..868200d36c 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -4,10 +4,12 @@ (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 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $memset/dest (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 60)) + (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)) (export "memory" (memory $0)) (start $~start) (func $memset/memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) diff --git a/tests/compiler/merge.json b/tests/compiler/merge.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/merge.json +++ b/tests/compiler/merge.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/merge.untouched.wat b/tests/compiler/merge.untouched.wat index 893d924eb1..65dcb689b3 100644 --- a/tests/compiler/merge.untouched.wat +++ b/tests/compiler/merge.untouched.wat @@ -12,6 +12,9 @@ (global $merge/typeFunction_test (mut i32) (i32.const 0)) (global $merge/enumNamespace.val i32 (i32.const 1)) (global $merge/namespaceEnum.val i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) (export "memory" (memory $0)) (start $~start) (func $merge/namespaceType.test diff --git a/tests/compiler/named-export-default.json b/tests/compiler/named-export-default.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/named-export-default.json +++ b/tests/compiler/named-export-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/named-export-default.optimized.wat b/tests/compiler/named-export-default.optimized.wat index 6be19a8140..0babf0c7dd 100644 --- a/tests/compiler/named-export-default.optimized.wat +++ b/tests/compiler/named-export-default.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (export "memory" (memory $0)) (export "default" (func $named-export-default/get3)) + (export "memory" (memory $0)) (func $named-export-default/get3 (result i32) i32.const 3 ) diff --git a/tests/compiler/named-export-default.untouched.wat b/tests/compiler/named-export-default.untouched.wat index f8c1bf48a8..472abc264c 100644 --- a/tests/compiler/named-export-default.untouched.wat +++ b/tests/compiler/named-export-default.untouched.wat @@ -2,8 +2,11 @@ (type $none_=>_i32 (func (result i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "default" (func $named-export-default/get3)) + (export "memory" (memory $0)) (func $named-export-default/get3 (result i32) i32.const 3 ) diff --git a/tests/compiler/named-import-default.json b/tests/compiler/named-import-default.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/named-import-default.json +++ b/tests/compiler/named-import-default.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/named-import-default.optimized.wat b/tests/compiler/named-import-default.optimized.wat index 53f55f6211..ad71b71467 100644 --- a/tests/compiler/named-import-default.optimized.wat +++ b/tests/compiler/named-import-default.optimized.wat @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (export "memory" (memory $0)) (export "getValue" (func $named-import-default/getValue)) + (export "memory" (memory $0)) (func $named-import-default/getValue (result i32) i32.const 3 ) diff --git a/tests/compiler/named-import-default.untouched.wat b/tests/compiler/named-import-default.untouched.wat index 1c33538d71..dd8939662d 100644 --- a/tests/compiler/named-import-default.untouched.wat +++ b/tests/compiler/named-import-default.untouched.wat @@ -2,8 +2,11 @@ (type $none_=>_i32 (func (result i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "getValue" (func $named-import-default/getValue)) + (export "memory" (memory $0)) (func $named-export-default/get3 (result i32) i32.const 3 ) diff --git a/tests/compiler/namespace.json b/tests/compiler/namespace.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/namespace.json +++ b/tests/compiler/namespace.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/namespace.untouched.wat b/tests/compiler/namespace.untouched.wat index 77b1e9c22b..1df4ee4743 100644 --- a/tests/compiler/namespace.untouched.wat +++ b/tests/compiler/namespace.untouched.wat @@ -9,6 +9,9 @@ (global $namespace/Outer.Inner.evenAnotherVar (mut i32) (i32.const 0)) (global $namespace/Outer.Inner.anEnum.ONE i32 (i32.const 1)) (global $namespace/Outer.Inner.anEnum.TWO i32 (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) (export "memory" (memory $0)) (start $~start) (func $namespace/Outer.Inner.aFunc (result i32) diff --git a/tests/compiler/new.json b/tests/compiler/new.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/new.json +++ b/tests/compiler/new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 551af3de28..fdcbcf1bf1 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -1,55 +1,1234 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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) "<") + (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 ") + (global $new/ref (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $new/gen (mut i32) (i32.const 0)) + (global $new/ref2 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17876)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $new/ref + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17876 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (local $6 i32) + (local $7 i32) + (local $8 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 $4 + 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.tee $5 - i32.const 28 + local.get $1 + i32.load + i32.const -4 + i32.and i32.add - local.tee $1 - memory.size + 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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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.const 15 + 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 1392 + i32.const 381 + 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 - i32.gt_u if - local.get $3 local.get $1 local.get $2 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17888 + i32.const 0 + i32.store + i32.const 19456 + 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 17888 + 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 17888 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17876 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $3 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -57,45 +1236,343 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $5 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 + local.get $1 + 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 $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 $new/ns.Ref + block $new/Gen + block $new/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 $new/Ref $new/Gen $new/ns.Ref $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + unreachable ) (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__new - i32.const 3 - call $~lib/rt/stub/__new + (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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + global.set $new/ref + call $new/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref + call $new/Gen#constructor + global.set $new/gen + call $new/Gen#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/gen + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + global.set $new/ref2 + call $new/ns.Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + global.set $new/ref2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + 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 + ) + (func $new/Ref#constructor (result i32) + (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 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $new/Gen#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new - i32.const 5 - call $~lib/rt/stub/__new - i32.const 5 - call $~lib/rt/stub/__new + 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 4 + 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 $new/ns.Ref#constructor (result i32) + (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 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index 29343d6ee5..a15e4fadad 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -1,333 +1,2580 @@ (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 $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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) (global $new/ref (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $new/gen (mut i32) (i32.const 0)) (global $new/ref2 (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 - i32.sub - i32.const 65535 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 + 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 - local.tee $4 + 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 273 + 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 368 + i32.const 275 + 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.tee $5 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 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s - if + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 $0 + call $~lib/memory/memory.fill local.get $3 + ) + (func $new/Ref#get:ref (param $0 i32) (result i32) 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) + (func $new/Gen#get:gen (param $0 i32) (result i32) local.get $0 ) - (func $new/Ref#constructor (param $0 i32) (result i32) + (func $new/ns.Ref#get:ref (param $0 i32) (result i32) local.get $0 - i32.eqz + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $new/ref + local.tee $1 if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/gen + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $new/ref2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end + i32.const 224 local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $new/Ref#get:ref (param $0 i32) (result i32) + call $~lib/rt/itcms/__visit + i32.const 32 local.get $0 - call $~lib/rt/stub/__retain + call $~lib/rt/itcms/__visit ) - (func $new/Gen#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $0 ) - (func $new/Gen#get:gen (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $new/ns.Ref + block $new/Gen + block $new/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 $new/Ref $new/Gen $new/ns.Ref $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 $new/ns.Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + (func $~start + call $start:new + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 16880 + i32.const 16928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - ) - (func $new/ns.Ref#get:ref (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/stub/__retain ) (func $start:new (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/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $new/Ref#constructor - local.set $0 - global.get $new/ref - call $~lib/rt/stub/__release - local.get $0 global.set $new/ref i32.const 0 call $new/Ref#constructor - local.set $0 - global.get $new/ref - call $~lib/rt/stub/__release - local.get $0 global.set $new/ref i32.const 0 call $new/Ref#constructor - local.tee $0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $new/Ref#get:ref - local.tee $1 - local.tee $2 - global.get $new/ref - 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 global.set $new/ref i32.const 0 call $new/Gen#constructor - local.set $3 - global.get $new/gen - call $~lib/rt/stub/__release - local.get $3 global.set $new/gen i32.const 0 call $new/Gen#constructor - local.tee $3 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $new/Gen#get:gen - local.tee $2 - local.tee $4 - global.get $new/gen - local.tee $5 - i32.ne - if - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 - local.get $5 - call $~lib/rt/stub/__release - end - local.get $4 global.set $new/gen i32.const 0 call $new/ns.Ref#constructor - local.set $5 - global.get $new/ref2 - call $~lib/rt/stub/__release - local.get $5 global.set $new/ref2 i32.const 0 call $new/ns.Ref#constructor - local.set $4 - global.get $new/ref2 - call $~lib/rt/stub/__release - local.get $4 global.set $new/ref2 i32.const 0 call $new/ns.Ref#constructor - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $new/ns.Ref#get:ref - local.tee $5 - local.tee $6 - global.get $new/ref2 - local.tee $7 - i32.ne + global.set $new/ref2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $new/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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - local.get $6 - call $~lib/rt/stub/__retain - local.set $6 - local.get $7 - call $~lib/rt/stub/__release + 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 $6 - global.set $new/ref2 local.get $0 - call $~lib/rt/stub/__release + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release ) - (func $~start - call $start:new + (func $new/Gen#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 $new/ns.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 + 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 ) ) diff --git a/tests/compiler/nullable.json b/tests/compiler/nullable.json index ae5a982120..d3a557bf65 100644 --- a/tests/compiler/nullable.json +++ b/tests/compiler/nullable.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2322: Type 'nullable/Example | null' is not assignable to type 'nullable/Example'.", diff --git a/tests/compiler/number.json b/tests/compiler/number.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/number.json +++ b/tests/compiler/number.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 5117d4a995..4c8bf19b57 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1,40 +1,80 @@ (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_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (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\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \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 1164) "<\00\00\00\01\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 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1260) "\\\00\00\00\01\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 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1388) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s") - (data (i32.const 1436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1500) ",\00\00\00\01\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 1548) ",\00\00\00\01\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 1656) "\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\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 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 ) - (func $~lib/number/I32#toString (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if local.get $0 + i32.load offset=8 + local.tee $1 i32.eqz if - i32.const 1248 - local.set $0 - br $__inlined_func$~lib/util/number/itoa32 + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.get $0 - i32.sub - local.get $0 + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 31 - i32.shr_u + i32.load offset=4 + i32.const -4 + i32.and local.tee $1 - select + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 19612 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 local.tee $2 - call $~lib/util/number/decimalCount32 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.add - local.tee $3 - i32.const 1 - i32.shl - call $~lib/rt/stub/__new - local.tee $0 local.get $2 - local.get $3 - call $~lib/util/number/utoa_dec_simple + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else local.get $1 + i32.const 3200 + i32.load + i32.gt_u if - local.get $0 - i32.const 45 - i32.store16 + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 3 + i32.shl + i32.const 3204 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 + (local $5 i32) local.get $1 - i32.eq + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz if - i32.const 1 - return + i32.const 0 + i32.const 1616 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + 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 1616 + i32.const 275 + 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 1616 + i32.const 288 + 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 1616 + i32.const 201 + 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 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1616 + i32.const 224 + 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 1616 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 240 + 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 1616 + i32.const 256 + 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 1616 + i32.const 381 + 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 1616 + i32.const 388 + 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 1616 + i32.const 401 + 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 19616 + i32.const 0 + i32.store + i32.const 21184 + 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 19616 + 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 19616 + 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 19616 + i32.const 21188 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 19616 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 19612 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19612 + 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 $1 + i32.const 19612 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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.ge_u + if + i32.const 1280 + i32.const 1616 + i32.const 462 + i32.const 30 + 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 $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 1616 + i32.const 500 + 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 1616 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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 20 + 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.load offset=16 - i32.const 1 - i32.shr_u - i32.ne - br_if $folding-inner0 - block $__inlined_func$~lib/util/string/compareImpl (result i32) - local.get $0 - local.tee $3 - i32.const 7 - i32.and + 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 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - local.tee $0 - i32.const 4 + i32.const 32 i32.ge_u - select if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 local.get $0 - local.tee $2 - i32.const 1 + 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 - local.get $2 + br $while-continue|0 + end + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 256 + 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-continue|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 + 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 - local.set $1 - br $while-continue|1 + 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-continue|0 end - i32.const 0 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 end - i32.eqz - return + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + call $~lib/util/number/decimalCount32 + local.get $1 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa_dec_simple + local.get $1 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - i32.const 0 + local.get $0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) (local $5 i32) @@ -519,7 +2030,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add local.get $3 i32.const 65535 @@ -554,7 +2065,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2528 + i32.const 2928 i32.add i64.load32_u local.get $9 @@ -564,7 +2075,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1598 + i32.const 1998 i32.add local.tee $3 i32.load16_u @@ -642,7 +2153,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add local.get $6 i32.wrap_i64 @@ -680,7 +2191,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2528 + i32.const 2928 i32.add i64.load32_u i64.mul @@ -688,7 +2199,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1598 + i32.const 1998 i32.add local.tee $3 i32.load16_u @@ -920,7 +2431,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add i32.const 3145774 i32.store @@ -949,7 +2460,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add i32.const 48 i32.store16 @@ -963,7 +2474,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add i32.const 3145774 i32.store @@ -983,7 +2494,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add local.tee $3 i32.const 2 @@ -1017,14 +2528,14 @@ local.tee $3 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add - i32.const 1600 + i32.const 2000 local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy - i32.const 1600 + i32.const 2000 i32.const 3014704 i32.store i32.const 2 @@ -1037,7 +2548,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 1600 + i32.const 2000 i32.add i32.const 48 i32.store16 @@ -1056,10 +2567,10 @@ i32.const 1 i32.eq if (result i32) - i32.const 1602 + i32.const 2002 i32.const 101 i32.store16 - i32.const 1604 + i32.const 2004 local.get $3 i32.const 1 i32.sub @@ -1080,7 +2591,7 @@ i32.add local.tee $1 call $~lib/util/number/utoa_dec_simple - i32.const 1604 + i32.const 2004 i32.const 45 i32.const 43 local.get $0 @@ -1090,8 +2601,8 @@ i32.const 2 i32.add else - i32.const 1604 - i32.const 1602 + i32.const 2004 + i32.const 2002 local.get $0 i32.const 1 i32.shl @@ -1099,11 +2610,11 @@ i32.const 2 i32.sub call $~lib/memory/memory.copy - i32.const 1602 + i32.const 2002 i32.const 46 i32.store16 local.get $1 - i32.const 1600 + i32.const 2000 i32.add local.tee $1 i32.const 101 @@ -1157,10 +2668,10 @@ (local $5 f64) i32.const -4 global.set $~lib/util/number/_K - i32.const 2008 + i32.const 2408 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2440 + i32.const 2840 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow @@ -1314,40 +2825,273 @@ f64.eq select ) + (func $~lib/rt/__visit_members (param $0 i32) + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + call $start:number + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 3228 + i32.lt_s + if + i32.const 19632 + i32.const 19680 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) (func $start:number (local $0 i32) (local $1 i32) - i32.const 2796 - global.set $~lib/rt/stub/offset + global.get $~lib/memory/__stack_pointer + i32.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 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $number/a call $~lib/number/I32#toString - i32.const 1376 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store call $~lib/util/number/dtoa_core i32.const 1 i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/rt/itcms/__new local.tee $0 - call $~lib/rt/stub/__new - local.tee $1 - i32.const 1600 + i32.store local.get $0 - call $~lib/memory/memory.copy + i32.const 2000 local.get $1 - i32.const 2592 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=4 + local.get $0 + i32.const 2992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -1355,12 +3099,20 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2624 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=4 + local.get $0 + i32.const 3024 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 8 i32.const 1 call $~lib/builtins/abort @@ -1368,12 +3120,20 @@ end i32.const -5 call $~lib/number/I32#toString - i32.const 2656 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=4 + local.get $0 + i32.const 3056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 10 i32.const 1 call $~lib/builtins/abort @@ -1381,12 +3141,20 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2688 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=4 + local.get $0 + i32.const 3088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -1398,12 +3166,20 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 2720 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=4 + local.get $0 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -1415,36 +3191,56 @@ global.set $number/a global.get $number/a call $~lib/number/I32#toString - i32.const 1376 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2752 - i32.const 2752 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=4 + i32.const 3152 + i32.const 3152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 - i32.const 2784 + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=4 + i32.const 3184 + i32.const 3184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -1457,12 +3253,20 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 1376 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1475,12 +3279,20 @@ global.set $number/a local.get $0 call $~lib/number/I32#toString - i32.const 2720 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=4 + local.get $0 + i32.const 3120 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -1490,7 +3302,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 25 i32.const 1 call $~lib/builtins/abort @@ -1502,7 +3314,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 26 i32.const 1 call $~lib/builtins/abort @@ -1514,7 +3326,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -1526,7 +3338,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1536,7 +3348,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 29 i32.const 1 call $~lib/builtins/abort @@ -1546,7 +3358,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1558,7 +3370,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -1568,7 +3380,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 32 i32.const 1 call $~lib/builtins/abort @@ -1578,7 +3390,7 @@ call $~lib/number/F32.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -1590,7 +3402,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 34 i32.const 1 call $~lib/builtins/abort @@ -1602,7 +3414,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -1612,7 +3424,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 36 i32.const 1 call $~lib/builtins/abort @@ -1622,7 +3434,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 37 i32.const 1 call $~lib/builtins/abort @@ -1632,7 +3444,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 38 i32.const 1 call $~lib/builtins/abort @@ -1644,7 +3456,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 39 i32.const 1 call $~lib/builtins/abort @@ -1656,7 +3468,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 40 i32.const 1 call $~lib/builtins/abort @@ -1668,7 +3480,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -1680,7 +3492,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -1690,7 +3502,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -1700,7 +3512,7 @@ call $~lib/number/F32.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -1710,7 +3522,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -1722,7 +3534,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 49 i32.const 1 call $~lib/builtins/abort @@ -1734,7 +3546,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -1746,7 +3558,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 51 i32.const 1 call $~lib/builtins/abort @@ -1756,7 +3568,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 52 i32.const 1 call $~lib/builtins/abort @@ -1766,7 +3578,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 53 i32.const 1 call $~lib/builtins/abort @@ -1778,7 +3590,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 54 i32.const 1 call $~lib/builtins/abort @@ -1788,7 +3600,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 55 i32.const 1 call $~lib/builtins/abort @@ -1798,7 +3610,7 @@ call $~lib/number/F64.isSafeInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 56 i32.const 1 call $~lib/builtins/abort @@ -1810,7 +3622,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 57 i32.const 1 call $~lib/builtins/abort @@ -1822,7 +3634,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1832,7 +3644,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 59 i32.const 1 call $~lib/builtins/abort @@ -1842,7 +3654,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 60 i32.const 1 call $~lib/builtins/abort @@ -1852,7 +3664,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 61 i32.const 1 call $~lib/builtins/abort @@ -1864,7 +3676,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 62 i32.const 1 call $~lib/builtins/abort @@ -1876,7 +3688,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 63 i32.const 1 call $~lib/builtins/abort @@ -1888,7 +3700,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 64 i32.const 1 call $~lib/builtins/abort @@ -1900,7 +3712,7 @@ i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 65 i32.const 1 call $~lib/builtins/abort @@ -1910,7 +3722,7 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 66 i32.const 1 call $~lib/builtins/abort @@ -1920,14 +3732,15 @@ call $~lib/number/F64.isInteger if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:number + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 68543de20e..d836c0983e 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -1,15 +1,17 @@ (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 $f64_=>_i32 (func (param f64) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -17,33 +19,51 @@ (type $f64_i32_=>_i32 (func (param f64 i32) (result 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\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \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 140) "<\00\00\00\01\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 204) "\1c\00\00\00\01\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 236) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 636) "\1c\04\00\00\01\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 1692) "\\\00\00\00\01\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 1788) "\1c\00\00\00\01\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 1820) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00n\00u\00m\00b\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1868) "\1c\00\00\00\01\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 1900) "\1c\00\00\00\01\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 1932) ",\00\00\00\01\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 1980) ",\00\00\00\01\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 2032) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 2088) "\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\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))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_=>_i32 (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\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d") - (data (i32.const 1084) "<\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 1148) "<\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 1212) "<\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 1276) "<\00\00\00\01\00\00\00\00\00\00\00\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 1340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o") - (data (i32.const 1404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t") - (data (i32.const 1436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00r") - (data (i32.const 1468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00z") + (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) " ") + (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 1024)) + (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)) (export "memory" (memory $0)) (start $~start) + (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 + i32.store offset=4 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1264 + i32.const 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 + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1104 + i32.const 290 + 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 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1312 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -35,8 +335,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 272 + i32.const 1440 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -55,8 +355,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 274 + i32.const 1440 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -98,8 +398,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 287 + i32.const 1440 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -190,8 +490,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 200 + i32.const 1440 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -204,8 +504,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 202 + i32.const 1440 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -277,8 +577,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 223 + i32.const 1440 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -332,23 +632,23 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 238 + i32.const 1440 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1232 - i32.const 239 + i32.const 1440 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -395,8 +695,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 255 + i32.const 1440 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -465,8 +765,8 @@ i32.gt_u if i32.const 0 - i32.const 1232 - i32.const 380 + i32.const 1440 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -493,8 +793,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 387 + i32.const 1440 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -521,8 +821,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 400 + i32.const 1440 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -589,10 +889,10 @@ if unreachable end - i32.const 1504 + i32.const 18160 i32.const 0 i32.store - i32.const 3072 + i32.const 19728 i32.const 0 i32.store loop $for-loop|0 @@ -603,7 +903,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1504 + i32.const 18160 i32.add i32.const 0 i32.store offset=4 @@ -621,7 +921,7 @@ i32.add i32.const 2 i32.shl - i32.const 1504 + i32.const 18160 i32.add i32.const 0 i32.store offset=96 @@ -639,32 +939,283 @@ br $for-loop|0 end end - i32.const 1504 - i32.const 3076 + i32.const 18160 + i32.const 19732 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1504 + i32.const 18160 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 + 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.eqz + i32.const 0 + local.get $0 + select + if (result i32) local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 + i32.load i32.const 1 - i32.const 27 - local.get $1 - i32.clz + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + 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) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18156 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1104 + i32.const 224 + 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 + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -703,8 +1254,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 333 + i32.const 1440 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -755,8 +1306,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 346 + i32.const 1440 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -785,9 +1336,9 @@ i32.const 1073741820 i32.ge_u if - i32.const 1104 - i32.const 1232 - i32.const 461 + i32.const 1312 + i32.const 1440 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -877,8 +1428,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 498 + i32.const 1440 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -892,8 +1443,8 @@ i32.gt_u if i32.const 0 - i32.const 1232 - i32.const 500 + i32.const 1440 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -911,8 +1462,8 @@ i32.and if i32.const 0 - i32.const 1232 - i32.const 360 + i32.const 1440 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -988,250 +1539,253 @@ 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 1104 - i32.const 1168 - 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/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - i32.const 1500 - i32.gt_u - if + 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 20 + i32.const 0 + i32.store8 + local.get $0 + local.get $1 + i32.add + i32.const 4 i32.sub - local.tee $1 - i32.load offset=4 local.tee $2 - i32.const -268435456 - i32.and + 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 1 - i32.add - i32.const -268435456 + 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 - i32.ne - if - i32.const 0 - i32.const 1168 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $2 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 local.get $1 local.get $2 - i32.const 1 + 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.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1500 - i32.gt_u - if + 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 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/util/string/compareImpl (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 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 + 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.tee $0 - i32.const 1 + local.get $1 i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 + local.set $1 + loop $while-continue|0 local.get $1 - i32.load16_u - local.tee $6 - i32.ne + i32.const 32 + i32.ge_u if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $0 - local.get $6 + 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 - return + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq + i32.const 1073741804 + i32.ge_u if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return + i32.const 1312 + i32.const 1104 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - 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 - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end local.get $0 - call $~lib/rt/pure/__release + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/pure/__release - i32.const 0 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1406,26 +1960,13 @@ 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 $object-literal/testOmittedTypes (param $0 i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.load if i32.const 0 - i32.const 1296 - i32.const 58 + i32.const 1504 + i32.const 57 i32.const 3 call $~lib/builtins/abort unreachable @@ -1434,8 +1975,8 @@ i32.load offset=4 if i32.const 0 - i32.const 1296 - i32.const 59 + i32.const 1504 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -1446,8 +1987,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 60 + i32.const 1504 + i32.const 59 i32.const 3 call $~lib/builtins/abort unreachable @@ -1458,8 +1999,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 61 + i32.const 1504 + i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable @@ -1470,8 +2011,8 @@ f32.ne if i32.const 0 - i32.const 1296 - i32.const 62 + i32.const 1504 + i32.const 61 i32.const 3 call $~lib/builtins/abort unreachable @@ -1482,8 +2023,8 @@ f64.ne if i32.const 0 - i32.const 1296 - i32.const 63 + i32.const 1504 + i32.const 62 i32.const 3 call $~lib/builtins/abort unreachable @@ -1492,8 +2033,8 @@ i32.load8_s offset=40 if i32.const 0 - i32.const 1296 - i32.const 64 + i32.const 1504 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable @@ -1502,8 +2043,8 @@ i32.load8_u offset=41 if i32.const 0 - i32.const 1296 - i32.const 65 + i32.const 1504 + i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable @@ -1512,8 +2053,8 @@ i32.load16_s offset=42 if i32.const 0 - i32.const 1296 - i32.const 66 + i32.const 1504 + i32.const 65 i32.const 3 call $~lib/builtins/abort unreachable @@ -1522,8 +2063,8 @@ i32.load16_u offset=44 if i32.const 0 - i32.const 1296 - i32.const 67 + i32.const 1504 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable @@ -1532,8 +2073,8 @@ i32.load offset=48 if i32.const 0 - i32.const 1296 - i32.const 68 + i32.const 1504 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable @@ -1542,8 +2083,8 @@ i32.load offset=52 if i32.const 0 - i32.const 1296 - i32.const 69 + i32.const 1504 + i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable @@ -1554,8 +2095,8 @@ f64.ne if i32.const 0 - i32.const 1296 - i32.const 70 + i32.const 1504 + i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable @@ -1564,118 +2105,564 @@ i32.load8_u offset=64 if i32.const 0 - i32.const 1296 - i32.const 71 + i32.const 1504 + i32.const 70 i32.const 3 call $~lib/builtins/abort unreachable end + ) + (func $object-literal/OmittedFoo#set:quux (param $0 i32) + local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__release + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $object-literal/testOmittedFoo (param $0 i32) + (func $object-literal/OmittedFoo#set:quuz (param $0 i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - i32.const 1456 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.store offset=12 local.get $0 - i32.load offset=4 - i32.const 1488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:corge (param $0 i32) local.get $0 - i32.load offset=8 i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 local.get $0 - i32.load offset=12 i32.const 0 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:grault (param $0 i32) + local.get $0 + i32.const 0 + i32.store offset=20 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:garply (param $0 i32) + local.get $0 + i32.const 0 + i32.store offset=24 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:waldo (param $0 i32) + local.get $0 + i32.const 0 + i32.store offset=28 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + local.get $0 + i32.load + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=4 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=8 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=12 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=16 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=20 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=24 + local.tee $1 + if + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.load offset=28 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load offset=4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:object-literal + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1772 + i32.lt_s + if + i32.const 18176 + i32.const 18224 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String#substring (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 0 + i32.const 1052 + i32.load + i32.const 1 + i32.shr_u + local.tee $0 + local.get $0 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 5 + local.get $0 + local.get $0 + i32.const 5 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $1 + i32.sub + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1568 + return + end + i32.const 0 + local.get $3 + local.get $0 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1056 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 1056 + i32.add + local.get $2 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1664 + i32.store offset=4 + local.get $1 + i32.const 1664 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - i32.const 1296 - i32.const 111 + i32.const 1504 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store offset=4 + local.get $1 + i32.const 1696 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=12 + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 + local.tee $1 + i32.store + local.get $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 - i32.const 112 + i32.const 1504 + i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=20 + local.tee $1 + i32.store + local.get $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 - i32.const 113 + i32.const 1504 + i32.const 112 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=24 + local.tee $1 + i32.store + local.get $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 - i32.const 114 + i32.const 1504 + i32.const 113 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=28 + local.tee $1 + i32.store + local.get $1 i32.const 0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 - i32.const 115 + i32.const 1504 + i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable @@ -1684,8 +2671,8 @@ i32.load offset=32 if i32.const 0 - i32.const 1296 - i32.const 116 + i32.const 1504 + i32.const 115 i32.const 3 call $~lib/builtins/abort unreachable @@ -1696,67 +2683,123 @@ i32.ne if i32.const 0 - i32.const 1296 - i32.const 117 + i32.const 1504 + i32.const 116 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:object-literal (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 1152 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1360 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store - local.get $4 + local.get $0 i32.const 0 + call $object-literal/Managed#set:baz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $4 + local.get $0 i32.const 123 i32.store - local.get $4 + local.get $0 i32.const 1056 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $0 + call $object-literal/Managed#set:baz + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load i32.const 123 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1504 i32.const 9 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $0 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 + i32.const 1504 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 8 call $~lib/rt/tlsf/__alloc local.tee $0 @@ -1768,147 +2811,74 @@ local.get $0 i32.const 123 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store local.get $0 - block $__inlined_func$~lib/string/String#substring (result i32) - i32.const 1360 - i32.const 0 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - local.tee $1 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 5 - local.get $1 - local.get $1 - i32.const 5 - i32.gt_s - select - local.tee $3 - local.get $2 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $5 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $2 - i32.sub - local.tee $3 - i32.eqz - br_if $__inlined_func$~lib/string/String#substring - drop - i32.const 1056 - i32.const 0 - local.get $5 - local.get $1 - i32.const 1 - i32.shl - i32.eq - local.get $2 - select - br_if $__inlined_func$~lib/string/String#substring - drop - local.get $3 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $2 - i32.const 1056 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__retain - end + call $~lib/string/String#substring i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load i32.const 123 i32.ne if i32.const 0 - i32.const 1296 + i32.const 1504 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - i32.const 1392 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - call $~lib/rt/pure/__release - local.get $0 - i32.const 1500 - i32.ge_u - if - global.get $~lib/rt/tlsf/ROOT - i32.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.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 1232 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/tlsf/freeBlock + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + 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 $0 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 65 i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store local.get $0 @@ -1950,6 +2920,12 @@ local.get $0 i32.const 0 i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 i32.const 0 i32.store @@ -1992,297 +2968,213 @@ local.get $0 i32.const 0 i32.store8 offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 call $object-literal/testOmittedTypes + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 i32.store - local.get $2 + local.get $0 i32.const 0 - i32.store offset=4 - local.get $2 + call $object-literal/Managed#set:baz + local.get $0 f64.const 0 f64.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 i32.const 0 i32.store - local.get $2 - i32.const 1424 - i32.store offset=4 - local.get $2 + local.get $0 + i32.const 1632 + call $object-literal/Managed#set:baz + local.get $0 f64.const 0 f64.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load if i32.const 0 - i32.const 1296 - i32.const 83 + i32.const 1504 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.load offset=4 - i32.const 1424 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1632 + i32.store offset=4 + local.get $1 + i32.const 1632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1296 - i32.const 84 + i32.const 1504 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 f64.load offset=8 f64.const 0 f64.ne if i32.const 0 - i32.const 1296 - i32.const 85 + i32.const 1504 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 40 i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 1456 + call $~lib/rt/itcms/__new + local.tee $0 i32.store - local.get $1 - i32.const 1488 - 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 $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 + local.get $0 + i32.const 1664 + i32.store + local.get $0 + i32.const 1664 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1696 + call $object-literal/Managed#set:baz + local.get $0 + call $object-literal/OmittedFoo#set:quux + local.get $0 + call $object-literal/OmittedFoo#set:quuz + local.get $0 + call $object-literal/OmittedFoo#set:corge + local.get $0 + call $object-literal/OmittedFoo#set:grault + local.get $0 + call $object-literal/OmittedFoo#set:garply + local.get $0 + call $object-literal/OmittedFoo#set:waldo + local.get $0 i32.const 0 i32.store offset=32 - local.get $1 + local.get $0 i32.const -1 i32.store offset=36 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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 + local.get $0 + call $object-literal/OmittedFoo#set:quux + local.get $0 + call $object-literal/OmittedFoo#set:quuz + local.get $0 + call $object-literal/OmittedFoo#set:corge + local.get $0 + call $object-literal/OmittedFoo#set:grault + local.get $0 + call $object-literal/OmittedFoo#set:garply + local.get $0 + call $object-literal/OmittedFoo#set:waldo + local.get $0 i32.const 0 i32.store offset=32 - local.get $1 - call $object-literal/testOmittedFoo - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 + i32.store local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq + call $object-literal/testOmittedFoo + i32.const 18156 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $invalid - block $object-literal/OmittedFoo - 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 $folding-inner1 $__inlined_func$~lib/rt/__visit_members $folding-inner1 $object-literal/OmittedFoo $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 - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=24 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=28 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=32 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=36 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=40 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=44 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $0 - i32.load offset=48 - 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 - local.tee $1 + loop $while-continue|0 + global.get $~lib/rt/itcms/state if - local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/step + drop + br $while-continue|0 end end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1168 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.eqz + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1168 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 - call $start:object-literal - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1500 - i32.lt_u - if - return end - local.get $0 + 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.sub - call $~lib/rt/pure/decrement + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/object-literal.ts b/tests/compiler/object-literal.ts index a4c42aeb72..33508126af 100644 --- a/tests/compiler/object-literal.ts +++ b/tests/compiler/object-literal.ts @@ -26,7 +26,6 @@ class Unmanaged { function testUnmanaged(unmanaged: Unmanaged): void { assert(unmanaged.bar == 123); assert(unmanaged.baz == "hello"); - __release(changetype(unmanaged.baz)); __free(changetype(unmanaged)); } @@ -118,3 +117,6 @@ function testOmittedFoo(foo: OmittedFoo): void { } testOmittedFoo({}); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 69aa96ca91..af2773a7ab 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -2,157 +2,579 @@ (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 $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_f64_=>_none (func (param i32 f64))) + (type $i32_i64_=>_none (func (param i32 i64))) (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_f32_=>_none (func (param i32 f32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00\00\00\00\00\00\00") - (data (i32.const 60) "<\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 124) "<\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 188) "<\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 252) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 316) "\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 348) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00h\00e\00l\00l\00o\00\00\00") - (data (i32.const 380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\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\06\00\00\00b\00a\00r\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\06\00\00\00b\00a\00z\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\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\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 128) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 156) "<\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 220) ",\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 268) "<\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 336) "\00\00\00\00\00\00\00\00\00\00\00\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 460) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\"\00\00\00o\00b\00j\00e\00c\00t\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\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\00\00\00\00\00\00\00\00\00\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\n\00\00\00h\00e\00l\00l\00o\00\00\00") + (data (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00e\00s\00t\00\00\00\00\00") + (data (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00r\00\00\00\00\00\00\00") + (data (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00b\00a\00z\00\00\00\00\00\00\00") + (data (i32.const 688) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (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 1024)) + (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/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 476)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 17132)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (func $object-literal/Managed#set:bar (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (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/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#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (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: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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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 80 + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 208 - i32.const 272 - i32.const 14 + i32.const 80 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 + call $~lib/rt/itcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (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/__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 176 + i32.const 240 + 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 - drop - local.get $3 - i32.const 12 - i32.ge_u + i32.le_u if (result i32) - local.get $3 - i32.const 1073741820 - i32.lt_u + 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 80 + 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/__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 208 - i32.const 274 + i32.const 80 + i32.const 290 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 20 + i32.sub + local.set $3 local.get $3 - i32.const 256 - i32.lt_u + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq 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 + local.get $0 + i32.const 20 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 + call $~lib/rt/itcms/Object#get:color 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 208 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable + 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 $object-literal/Managed#set:baz (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.load offset=4 - local.set $6 + i32.store offset=4 + local.get $0 local.get $1 - i32.load offset=8 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + 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/__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 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -238,7 +660,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -262,8 +684,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 200 + i32.const 416 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -279,8 +701,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 202 + i32.const 416 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -333,7 +755,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -374,8 +796,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 223 + i32.const 416 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -408,7 +830,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -417,7 +839,7 @@ 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 @@ -439,8 +861,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 238 + i32.const 416 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -457,8 +879,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 239 + i32.const 416 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -516,8 +938,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 255 + i32.const 416 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -541,15 +963,15 @@ 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 @@ -577,7 +999,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -621,8 +1043,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 380 + i32.const 416 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -664,8 +1086,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 387 + i32.const 416 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -697,8 +1119,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 400 + i32.const 416 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -735,13 +1157,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 @@ -752,7 +1174,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 @@ -779,6 +1201,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 @@ -821,7 +1245,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 @@ -909,35 +1333,363 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne 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 + i32.eqz + else + i32.const 0 end - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u - if - i32.const 80 - i32.const 208 - i32.const 461 - i32.const 30 + 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 565 + 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 + 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 + 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 80 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 288 + i32.const 416 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end @@ -1019,8 +1771,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 333 + i32.const 416 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1084,8 +1836,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 346 + i32.const 416 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1235,8 +1987,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 360 + i32.const 416 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1261,7 +2013,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 @@ -1274,7 +2026,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 @@ -1285,7 +2037,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 @@ -1315,7 +2067,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) @@ -1344,8 +2096,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 498 + i32.const 416 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1364,8 +2116,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 500 + i32.const 416 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1393,136 +2145,280 @@ 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 80 - i32.const 144 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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.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 144 - i32.const 109 + 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 - call $~lib/builtins/abort - unreachable + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 144 - i32.const 112 - i32.const 14 + i32.const 288 + i32.const 80 + i32.const 256 + i32.const 31 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 $object-literal/Managed#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 8 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - i32.const 0 - i32.store + 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 - i32.store offset=4 - local.get $0 - ) - (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 + call $~lib/memory/memory.fill + local.get $3 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 @@ -1538,13 +2434,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -1631,12 +2520,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 return end local.get $5 @@ -1651,118 +2534,11 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 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 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 + (func $object-literal/Unmanaged#set:bar (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $object-literal/testManaged (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.load - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 32 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + i32.store ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3017,112 +3793,10 @@ end end ) - (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) + (func $object-literal/Unmanaged#set:baz (param $0 i32) (param $1 i32) 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 - 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 - local.set $10 - local.get $10 - i32.eqz - if - i32.const 336 - call $~lib/rt/pure/__retain - 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 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/pure/__new - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain + i32.store offset=4 ) (func $object-literal/Unmanaged#constructor (param $0 i32) (result i32) local.get $0 @@ -3134,170 +3808,83 @@ end local.get $0 i32.const 0 - i32.store + call $object-literal/Unmanaged#set:bar local.get $0 i32.const 0 - i32.store offset=4 + call $object-literal/Unmanaged#set:baz local.get $0 ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) + (func $object-literal/OmittedTypes#set:int32 (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.sub - local.set $1 + local.get $1 + i32.store + ) + (func $object-literal/OmittedTypes#set:uint32 (param $0 i32) (param $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 - 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 208 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $1 + i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + (func $object-literal/OmittedTypes#set:int64 (param $0 i32) (param $1 i64) + local.get $0 local.get $1 + i64.store offset=8 + ) + (func $object-literal/OmittedTypes#set:uint64 (param $0 i32) (param $1 i64) + local.get $0 local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - i32.const 0 - drop + i64.store offset=16 + ) + (func $object-literal/OmittedTypes#set:float32 (param $0 i32) (param $1 f32) local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + f32.store offset=24 ) - (func $~lib/rt/tlsf/__free (param $0 i32) + (func $object-literal/OmittedTypes#set:float64 (param $0 i32) (param $1 f64) 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 $object-literal/testUnmanaged (param $0 i32) - local.get $0 - i32.load - i32.const 123 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 368 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 28 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/tlsf/__free - ) - (func $object-literal/OmittedTypes#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 65 - 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 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - f32.const 0 - f32.store offset=24 - local.get $0 - f64.const 0 + local.get $1 f64.store offset=32 + ) + (func $object-literal/OmittedTypes#set:int8 (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store8 offset=40 + ) + (func $object-literal/OmittedTypes#set:uint8 (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store8 offset=41 + ) + (func $object-literal/OmittedTypes#set:int16 (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store16 offset=42 + ) + (func $object-literal/OmittedTypes#set:uint16 (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store16 offset=44 + ) + (func $object-literal/OmittedTypes#set:intsize (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=48 + ) + (func $object-literal/OmittedTypes#set:uintsize (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=52 + ) + (func $object-literal/OmittedTypes#set:alias (param $0 i32) (param $1 f64) local.get $0 - f64.const 0 + local.get $1 f64.store offset=56 + ) + (func $object-literal/OmittedTypes#set:isTrue (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store8 offset=64 - local.get $0 ) (func $object-literal/testOmittedTypes (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $0 i32.load i32.const 0 @@ -3305,8 +3892,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 58 + i32.const 480 + i32.const 57 i32.const 3 call $~lib/builtins/abort unreachable @@ -3318,8 +3905,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 59 + i32.const 480 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable @@ -3331,8 +3918,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 60 + i32.const 480 + i32.const 59 i32.const 3 call $~lib/builtins/abort unreachable @@ -3344,8 +3931,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 61 + i32.const 480 + i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable @@ -3357,8 +3944,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 62 + i32.const 480 + i32.const 61 i32.const 3 call $~lib/builtins/abort unreachable @@ -3370,8 +3957,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 63 + i32.const 480 + i32.const 62 i32.const 3 call $~lib/builtins/abort unreachable @@ -3383,8 +3970,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 64 + i32.const 480 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable @@ -3396,8 +3983,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 65 + i32.const 480 + i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable @@ -3409,8 +3996,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 66 + i32.const 480 + i32.const 65 i32.const 3 call $~lib/builtins/abort unreachable @@ -3422,8 +4009,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 67 + i32.const 480 + i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable @@ -3435,8 +4022,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 68 + i32.const 480 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable @@ -3448,8 +4035,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 69 + i32.const 480 + i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable @@ -3461,8 +4048,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 70 + i32.const 480 + i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable @@ -3476,670 +4063,1312 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 71 + i32.const 480 + i32.const 70 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release ) - (func $object-literal/MixedOmitted#constructor (param $0 i32) (result 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 + (func $object-literal/MixedOmitted#set:simpleType (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store - local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - f64.const 0 - f64.store offset=8 - local.get $0 ) - (func $object-literal/testMixedOmitted (param $0 i32) + (func $object-literal/MixedOmitted#set:complexType (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + local.get $1 + i32.store offset=4 local.get $0 - i32.load + local.get $1 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i32.const 400 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f64.load offset=8 - f64.const 0 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 85 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__link ) - (func $object-literal/OmittedFoo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 40 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 432 - i32.store + (func $object-literal/MixedOmitted#set:anotherSimpleType (param $0 i32) (param $1 f64) local.get $0 - i32.const 464 - i32.store offset=4 + local.get $1 + f64.store offset=8 + ) + (func $object-literal/OmittedFoo#set:quux (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=8 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:quuz (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:corge (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 $object-literal/OmittedFoo#set:grault (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=20 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:garply (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=24 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:waldo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=28 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:fred (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=32 + ) + (func $object-literal/OmittedFoo#set:bar (param $0 i32) (param $1 i32) local.get $0 - i32.const -1 - i32.store offset=36 + local.get $1 + i32.store local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $object-literal/testOmittedFoo (param $0 i32) + (func $object-literal/OmittedFoo#set:baz (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + local.get $1 + i32.store offset=4 local.get $0 - i32.load - i32.const 432 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 108 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $object-literal/OmittedFoo#set:qux (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 - i32.const 464 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.store offset=36 + ) + (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 272 - i32.const 109 - 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 + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 288 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $object-literal/Managed~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $object-literal/MixedOmitted~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $object-literal/OmittedFoo~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 + local.get $0 + i32.load offset=4 + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=8 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 110 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=12 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 111 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=16 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 112 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=20 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 113 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=24 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 114 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end local.get $0 i32.load offset=28 - i32.const 0 - call $~lib/string/String.__eq - i32.eqz + local.tee $2 if - i32.const 0 - i32.const 272 - i32.const 115 - i32.const 3 + 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 $object-literal/OmittedFoo + block $object-literal/MixedOmitted + block $object-literal/OmittedTypes + block $object-literal/Managed + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $object-literal/Managed~visit + return + end + return + end + local.get $0 + local.get $1 + call $object-literal/MixedOmitted~visit + return + end + local.get $0 + local.get $1 + call $object-literal/OmittedFoo~visit + return + end + unreachable + ) + (func $~start + call $start:object-literal + ) + (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 $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=32 - i32.const 0 + local.get $1 i32.eq - i32.eqz if - i32.const 0 - i32.const 272 - i32.const 116 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 - i32.load offset=36 - i32.const -1 + i32.const 0 i32.eq - i32.eqz + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 0 + i32.eq + end if i32.const 0 - i32.const 272 - i32.const 117 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:object-literal - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - call $object-literal/Managed#constructor - local.set $0 - local.get $0 - i32.const 123 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $0 - i32.const 32 - i32.store offset=4 - local.get $0 - call $object-literal/testManaged - i32.const 0 - call $object-literal/Unmanaged#constructor - local.set $1 - local.get $1 - i32.const 123 - i32.store - local.get $1 - i32.const 32 - i32.const 0 - i32.const 5 - call $~lib/string/String#substring - i32.store offset=4 - local.get $1 - call $object-literal/testUnmanaged - i32.const 0 - call $object-literal/OmittedTypes#constructor - local.set $1 - 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 - local.get $1 - call $object-literal/testOmittedTypes - i32.const 0 - call $object-literal/MixedOmitted#constructor + local.get $3 + call $~lib/string/String#get:length local.set $2 local.get $2 - i32.const 0 - i32.store - local.get $2 - i32.const 400 - i32.store offset=4 - local.get $2 - f64.const 0 - f64.store offset=8 - local.get $2 - call $object-literal/testMixedOmitted - i32.const 0 - call $object-literal/OmittedFoo#constructor + local.get $1 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.store offset=8 - local.get $3 - i32.const 0 - i32.store offset=12 + i32.store local.get $3 - i32.const 0 - i32.store offset=16 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.store offset=20 + i32.store local.get $3 i32.const 0 - i32.store offset=24 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.store offset=28 + i32.store offset=4 local.get $3 i32.const 0 - i32.store offset=32 - local.get $3 - call $object-literal/testOmittedFoo - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/pure/__release + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - ) - (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) + (func $object-literal/testManaged (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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load - i32.const 1 - i32.and - i32.eqz + i32.const 123 + i32.eq i32.eqz if i32.const 0 - i32.const 144 - i32.const 122 - i32.const 14 + i32.const 480 + i32.const 9 + i32.const 3 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:object-literal - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.eq + i32.store + local.get $1 + i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 144 - i32.const 69 - i32.const 16 + i32.const 480 + i32.const 10 + i32.const 3 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 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $object-literal/Managed~visit (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (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 local.get $0 - i32.load offset=4 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + 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 + 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 + local.set $10 + local.get $10 + i32.eqz + if + i32.const 544 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - ) - (func $object-literal/OmittedTypes~visit (param $0 i32) (param $1 i32) - nop - ) - (func $object-literal/MixedOmitted~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $2 if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + local.get $0 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 ) - (func $object-literal/OmittedFoo~visit (param $0 i32) (param $1 i32) - (local $2 i32) + (func $object-literal/testUnmanaged (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load - local.tee $2 + i32.const 123 + i32.eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 i32.load offset=4 - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 576 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 28 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=8 - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $object-literal/testMixedOmitted (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=12 - local.tee $2 + i32.load + i32.const 0 + i32.eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=16 - local.tee $2 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 608 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 83 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=20 - local.tee $2 + f64.load offset=8 + f64.const 0 + f64.eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + 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 + ) + (func $object-literal/testOmittedFoo (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load offset=24 - local.tee $2 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 640 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.load offset=28 - local.tee $2 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 672 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 480 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $object-literal/OmittedFoo - block $object-literal/MixedOmitted - block $object-literal/OmittedTypes - block $object-literal/Managed - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $object-literal/Managed $object-literal/OmittedTypes $object-literal/MixedOmitted $object-literal/OmittedFoo $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 $object-literal/Managed~visit - return - end - local.get $0 - local.get $1 - call $object-literal/OmittedTypes~visit - return - end - local.get $0 - local.get $1 - call $object-literal/MixedOmitted~visit - return - end - local.get $0 - local.get $1 - call $object-literal/OmittedFoo~visit - return + local.get $0 + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable end - unreachable + local.get $0 + i32.load offset=12 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=16 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 111 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=20 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=24 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 113 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=28 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=32 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=36 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 480 + 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 + ) + (func $start:object-literal + (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 + 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 128 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 336 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $object-literal/Managed#constructor + local.tee $0 + i32.store offset=4 + local.get $0 + i32.const 123 + call $object-literal/Managed#set:bar + local.get $0 + i32.const 32 + call $object-literal/Managed#set:baz + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $object-literal/testManaged + i32.const 0 + call $object-literal/Unmanaged#constructor + local.set $1 + local.get $1 + i32.const 123 + call $object-literal/Unmanaged#set:bar + local.get $1 + i32.const 32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + i32.const 5 + call $~lib/string/String#substring + call $object-literal/Unmanaged#set:baz + local.get $1 + call $object-literal/testUnmanaged + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $object-literal/OmittedTypes#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:int32 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:uint32 + local.get $1 + i64.const 0 + call $object-literal/OmittedTypes#set:int64 + local.get $1 + i64.const 0 + call $object-literal/OmittedTypes#set:uint64 + local.get $1 + f32.const 0 + call $object-literal/OmittedTypes#set:float32 + local.get $1 + f64.const 0 + call $object-literal/OmittedTypes#set:float64 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:int8 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:uint8 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:int16 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:uint16 + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:intsize + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:uintsize + local.get $1 + f64.const 0 + call $object-literal/OmittedTypes#set:alias + local.get $1 + i32.const 0 + call $object-literal/OmittedTypes#set:isTrue + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $object-literal/testOmittedTypes + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $object-literal/MixedOmitted#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + i32.const 0 + call $object-literal/MixedOmitted#set:simpleType + local.get $2 + i32.const 608 + call $object-literal/MixedOmitted#set:complexType + local.get $2 + f64.const 0 + call $object-literal/MixedOmitted#set:anotherSimpleType + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $object-literal/testMixedOmitted + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $object-literal/OmittedFoo#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:quux + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:quuz + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:corge + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:grault + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:garply + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:waldo + local.get $3 + i32.const 0 + call $object-literal/OmittedFoo#set:fred + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $object-literal/testOmittedFoo + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $object-literal/Managed#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 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $object-literal/Managed#set:bar + local.get $0 + i32.const 0 + call $object-literal/Managed#set:baz + 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 $object-literal/OmittedTypes#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 65 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:int32 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:uint32 + local.get $0 + i64.const 0 + call $object-literal/OmittedTypes#set:int64 + local.get $0 + i64.const 0 + call $object-literal/OmittedTypes#set:uint64 + local.get $0 + f32.const 0 + call $object-literal/OmittedTypes#set:float32 + local.get $0 + f64.const 0 + call $object-literal/OmittedTypes#set:float64 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:int8 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:uint8 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:int16 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:uint16 + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:intsize + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:uintsize + local.get $0 + f64.const 0 + call $object-literal/OmittedTypes#set:alias + local.get $0 + i32.const 0 + call $object-literal/OmittedTypes#set:isTrue + 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 $object-literal/MixedOmitted#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 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $object-literal/MixedOmitted#set:simpleType + local.get $0 + i32.const 0 + call $object-literal/MixedOmitted#set:complexType + local.get $0 + f64.const 0 + call $object-literal/MixedOmitted#set:anotherSimpleType + 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 $object-literal/OmittedFoo#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 40 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 640 + call $object-literal/OmittedFoo#set:bar + local.get $0 + i32.const 672 + call $object-literal/OmittedFoo#set:baz + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:quux + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:quuz + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:corge + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:grault + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:garply + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:waldo + local.get $0 + i32.const 0 + call $object-literal/OmittedFoo#set:fred + local.get $0 + i32.const -1 + call $object-literal/OmittedFoo#set:qux + 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/optional-typeparameters.json b/tests/compiler/optional-typeparameters.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/optional-typeparameters.json +++ b/tests/compiler/optional-typeparameters.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index b62c0907e3..6010793db8 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -1,55 +1,1227 @@ (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))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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))) + (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 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) + (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $optional-typeparameters/tConcrete + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 - local.tee $5 - i32.const 28 + i32.const 2 + i32.shl i32.add - local.tee $1 - memory.size + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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.const 15 + 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 1392 + i32.const 381 + 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 - i32.gt_u if - local.get $3 local.get $1 local.get $2 + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 17872 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $3 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -57,33 +1229,290 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $5 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 + local.get $1 + 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 $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 $optional-typeparameters/TestDerived + block $optional-typeparameters/TestConcrete + 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 $optional-typeparameters/TestConcrete $optional-typeparameters/TestDerived $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable ) (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset + (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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 3 - call $~lib/rt/stub/__new + 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 $optional-typeparameters/tConcrete + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tConcrete + i32.store + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new + 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 4 + 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 $optional-typeparameters/tDerived + global.get $~lib/memory/__stack_pointer + global.get $optional-typeparameters/tDerived + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + 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 ) ) diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 7fc4217082..94657be54d 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -1,17 +1,44 @@ (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 $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_f64_f64_=>_f64 (func (param i32 f64 f64) (result f64))) - (memory $0 0) + (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(\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) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (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)) (export "memory" (memory $0)) (start $~start) (func $optional-typeparameters/testConcrete (param $0 i32) (result i32) @@ -20,217 +47,2493 @@ (func $optional-typeparameters/testDerived (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - i32.const 0 - i32.store offset=8 + call $~lib/rt/itcms/Object#set:prev local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + call $~lib/rt/itcms/Object#set:prev ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (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 $optional-typeparameters/TestConcrete#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 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 + return end local.get $0 - ) - (func $optional-typeparameters/TestConcrete#test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $1 + 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 $optional-typeparameters/TestDerived#constructor (param $0 i32) (result i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + 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 $optional-typeparameters/TestDerived#test (param $0 i32) (param $1 f64) (param $2 f64) (result f64) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - local.get $2 - f64.add + i32.store offset=4 ) - (func $start:optional-typeparameters + (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 - call $optional-typeparameters/testConcrete drop - i32.const 2 - call $optional-typeparameters/testDerived - drop - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 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 $optional-typeparameters/TestConcrete#constructor - global.set $optional-typeparameters/tConcrete - global.get $optional-typeparameters/tConcrete + local.set $3 i32.const 1 - i32.const 2 - call $optional-typeparameters/TestConcrete#test - drop - i32.const 0 - call $optional-typeparameters/TestDerived#constructor - global.set $optional-typeparameters/tDerived - global.get $optional-typeparameters/tDerived - f64.const 1 - f64.const 2 - call $optional-typeparameters/TestDerived#test 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $optional-typeparameters/TestConcrete#test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + local.get $2 + i32.add + ) + (func $optional-typeparameters/TestDerived#test (param $0 i32) (param $1 f64) (param $2 f64) (result f64) + local.get $1 + local.get $2 + f64.add + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $optional-typeparameters/tConcrete + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $optional-typeparameters/tDerived + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + 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 $optional-typeparameters/TestDerived + block $optional-typeparameters/TestConcrete + 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 $optional-typeparameters/TestConcrete $optional-typeparameters/TestDerived $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 $~start call $start:optional-typeparameters ) + (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 $start:optional-typeparameters + (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 + call $optional-typeparameters/testConcrete + drop + i32.const 2 + call $optional-typeparameters/testDerived + drop + 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 $optional-typeparameters/TestConcrete#constructor + global.set $optional-typeparameters/tConcrete + global.get $optional-typeparameters/tConcrete + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.const 2 + call $optional-typeparameters/TestConcrete#test + drop + i32.const 0 + call $optional-typeparameters/TestDerived#constructor + global.set $optional-typeparameters/tDerived + global.get $optional-typeparameters/tDerived + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + f64.const 1 + f64.const 2 + call $optional-typeparameters/TestDerived#test + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $optional-typeparameters/TestConcrete#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 $optional-typeparameters/TestDerived#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 + ) ) diff --git a/tests/compiler/overflow.json b/tests/compiler/overflow.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/overflow.json +++ b/tests/compiler/overflow.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/overflow.optimized.wat b/tests/compiler/overflow.optimized.wat index 7e4e24b8bc..59c4c80cd4 100644 --- a/tests/compiler/overflow.optimized.wat +++ b/tests/compiler/overflow.optimized.wat @@ -1,5 +1,6 @@ (module (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index ab045b210e..e748782305 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -3,8 +3,11 @@ (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\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00\00\00\00\00\00\00") (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:overflow diff --git a/tests/compiler/portable-conversions.json b/tests/compiler/portable-conversions.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/portable-conversions.json +++ b/tests/compiler/portable-conversions.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/portable-conversions.optimized.wat b/tests/compiler/portable-conversions.optimized.wat index 8467257ba7..1a9befc1fa 100644 --- a/tests/compiler/portable-conversions.optimized.wat +++ b/tests/compiler/portable-conversions.optimized.wat @@ -1,5 +1,6 @@ (module (memory $0 1) - (data (i32.const 1036) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") + (data (i32.const 1036) "L") + (data (i32.const 1048) "\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index 084278b6eb..403bb94541 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -3,12 +3,15 @@ (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) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00.\00\00\00p\00o\00r\00t\00a\00b\00l\00e\00-\00c\00o\00n\00v\00e\00r\00s\00i\00o\00n\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) (global $portable-conversions/i (mut i32) (i32.const 1)) (global $portable-conversions/I (mut i64) (i64.const 1)) (global $portable-conversions/f (mut f32) (f32.const 1)) (global $portable-conversions/F (mut f64) (f64.const 1)) + (global $~lib/memory/__data_end i32 (i32.const 92)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16476)) + (global $~lib/memory/__heap_base i32 (i32.const 16476)) (export "memory" (memory $0)) (start $~start) (func $start:portable-conversions diff --git a/tests/compiler/possibly-null.json b/tests/compiler/possibly-null.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/possibly-null.json +++ b/tests/compiler/possibly-null.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat index cb9bd243f8..8458e2e69e 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -1,30 +1,66 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_none (func (param 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))) (memory $0 0) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17408)) (export "memory" (memory $0)) - (export "testTrue" (func $possibly-null/testTrue)) - (export "testFalseElse" (func $possibly-null/testTrue)) - (export "testFalseContinuation" (func $possibly-null/testTrue)) - (export "testNeNull" (func $possibly-null/testTrue)) - (export "testEqNullElse" (func $possibly-null/testTrue)) - (export "testEqNullContinuation" (func $possibly-null/testTrue)) - (export "testNotEqNull" (func $possibly-null/testTrue)) - (export "testNotNeNullElse" (func $possibly-null/testTrue)) - (export "testNotNeNullContinuation" (func $possibly-null/testTrue)) - (export "testWhile" (func $possibly-null/testWhile)) - (export "testWhile2" (func $possibly-null/testWhile2)) - (export "testWhile3" (func $possibly-null/testWhile3)) - (export "testLogicalAnd" (func $possibly-null/testTrue)) - (export "testLogicalOr" (func $possibly-null/testTrue)) - (export "testLogicalAndMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testAssign" (func $possibly-null/testLogicalAndMulti)) - (export "testNeverNull" (func $possibly-null/testTrue)) - (func $possibly-null/testTrue (param $0 i32) - nop - ) - (func $possibly-null/testWhile (param $0 i32) + (export "testTrue" (func $export:possibly-null/testTrue)) + (export "testFalseElse" (func $export:possibly-null/testTrue)) + (export "testFalseContinuation" (func $export:possibly-null/testTrue)) + (export "testNeNull" (func $export:possibly-null/testTrue)) + (export "testEqNullElse" (func $export:possibly-null/testTrue)) + (export "testEqNullContinuation" (func $export:possibly-null/testTrue)) + (export "testNotEqNull" (func $export:possibly-null/testTrue)) + (export "testNotNeNullElse" (func $export:possibly-null/testTrue)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testTrue)) + (export "testWhile" (func $export:possibly-null/testWhile)) + (export "testWhile2" (func $export:possibly-null/testWhile2)) + (export "testWhile3" (func $export:possibly-null/testWhile3)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testAssign" (func $export:possibly-null/testAssign)) + (export "testNeverNull" (func $export:possibly-null/testTrue)) + (func $~stack_check + 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 + ) + (func $export:possibly-null/testTrue (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile (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 loop $while-continue|0 local.get $0 if @@ -33,31 +69,172 @@ br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $possibly-null/testWhile2 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store loop $while-continue|0 local.get $0 if + global.get $~lib/memory/__stack_pointer local.get $1 - local.set $0 + local.tee $0 + i32.store br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $possibly-null/testWhile3 (param $0 i32) (param $1 i32) + (func $export:possibly-null/testWhile3 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store loop $while-continue|0 local.get $0 if local.get $1 - local.get $0 - local.get $1 - select - local.set $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.set $0 + end br $while-continue|0 end end + 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 + ) + (func $export:possibly-null/testLogicalAnd (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + if + global.get $~lib/memory/__stack_pointer + local.get $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 + ) + (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) - nop + (func $export:possibly-null/testAssign (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 + global.get $~lib/memory/__stack_pointer + i32.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 $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 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index 1a3b0079da..07c959e64c 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -1,83 +1,61 @@ (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))) (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) - (export "testTrue" (func $possibly-null/testTrue)) - (export "testFalseElse" (func $possibly-null/testFalseElse)) - (export "testFalseContinuation" (func $possibly-null/testFalseContinuation)) - (export "testNeNull" (func $possibly-null/testNeNull)) - (export "testEqNullElse" (func $possibly-null/testEqNullElse)) - (export "testEqNullContinuation" (func $possibly-null/testEqNullContinuation)) - (export "testNotEqNull" (func $possibly-null/testNotEqNull)) - (export "testNotNeNullElse" (func $possibly-null/testNotNeNullElse)) - (export "testNotNeNullContinuation" (func $possibly-null/testNotNeNullContinuation)) - (export "testWhile" (func $possibly-null/testWhile)) - (export "testWhile2" (func $possibly-null/testWhile2)) - (export "testWhile3" (func $possibly-null/testWhile3)) - (export "testLogicalAnd" (func $possibly-null/testLogicalAnd)) - (export "testLogicalOr" (func $possibly-null/testLogicalOr)) - (export "testLogicalAndMulti" (func $possibly-null/testLogicalAndMulti)) - (export "testLogicalOrMulti" (func $possibly-null/testLogicalOrMulti)) - (export "testAssign" (func $possibly-null/testAssign)) - (export "testNeverNull" (func $possibly-null/testNeverNull)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) + (export "testTrue" (func $export:possibly-null/testTrue)) + (export "testFalseElse" (func $export:possibly-null/testFalseElse)) + (export "testFalseContinuation" (func $export:possibly-null/testFalseContinuation)) + (export "testNeNull" (func $export:possibly-null/testNeNull)) + (export "testEqNullElse" (func $export:possibly-null/testEqNullElse)) + (export "testEqNullContinuation" (func $export:possibly-null/testEqNullContinuation)) + (export "testNotEqNull" (func $export:possibly-null/testNotEqNull)) + (export "testNotNeNullElse" (func $export:possibly-null/testNotNeNullElse)) + (export "testNotNeNullContinuation" (func $export:possibly-null/testNotNeNullContinuation)) + (export "testWhile" (func $export:possibly-null/testWhile)) + (export "testWhile2" (func $export:possibly-null/testWhile2)) + (export "testWhile3" (func $export:possibly-null/testWhile3)) + (export "testLogicalAnd" (func $export:possibly-null/testLogicalAnd)) + (export "testLogicalOr" (func $export:possibly-null/testLogicalOr)) + (export "testLogicalAndMulti" (func $export:possibly-null/testLogicalAndMulti)) + (export "testLogicalOrMulti" (func $export:possibly-null/testLogicalOrMulti)) + (export "testAssign" (func $export:possibly-null/testAssign)) + (export "testNeverNull" (func $export:possibly-null/testNeverNull)) (func $possibly-null/testTrue (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 if i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testFalseElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.eqz if - local.get $0 - call $~lib/rt/stub/__release return else i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testFalseContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.eqz if - local.get $0 - call $~lib/rt/stub/__release return end i32.const 0 drop - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testNeNull (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.ne @@ -85,48 +63,29 @@ i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testEqNullElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.eq if - local.get $0 - call $~lib/rt/stub/__release return else i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testEqNullContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.eq if - local.get $0 - call $~lib/rt/stub/__release return end i32.const 0 drop - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testNotEqNull (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.eq @@ -135,53 +94,32 @@ i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testNotNeNullElse (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.ne i32.eqz if - local.get $0 - call $~lib/rt/stub/__release return else i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testNotNeNullContinuation (param $0 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $0 i32.const 0 i32.ne i32.eqz if - local.get $0 - call $~lib/rt/stub/__release return end i32.const 0 drop - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testWhile (param $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 loop $while-continue|0 local.get $0 local.set $1 @@ -190,18 +128,6 @@ i32.const 0 drop i32.const 0 - 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 i32.const 1 i32.eqz @@ -209,19 +135,17 @@ br $while-continue|0 end end - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testWhile2 (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store loop $while-continue|0 local.get $0 local.set $2 @@ -229,41 +153,31 @@ if i32.const 0 drop + global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $3 - local.get $0 - 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 $0 + local.tee $0 + i32.store i32.const 1 i32.eqz drop br $while-continue|0 end end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $possibly-null/testWhile3 (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store loop $while-continue|0 local.get $0 local.set $2 @@ -273,91 +187,25 @@ drop local.get $1 if + global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $3 - local.get $0 - 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 $0 + local.tee $0 + i32.store i32.const 0 drop end br $while-continue|0 end end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $possibly-null/requireNonNull (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - ) - (func $possibly-null/testLogicalAnd (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - if (result i32) - local.get $0 - call $possibly-null/requireNonNull - local.tee $1 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - else - i32.const 0 - end - drop - local.get $0 - call $~lib/rt/stub/__release - ) - (func $possibly-null/testLogicalOr (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.eqz - if (result i32) - i32.const 1 - else - local.get $0 - call $possibly-null/requireNonNull - local.tee $1 - i32.const 0 - i32.ne - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - end - drop - local.get $0 - call $~lib/rt/stub/__release ) (func $possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 local.get $0 if (result i32) local.get $1 @@ -377,18 +225,8 @@ i32.eqz drop end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release ) (func $possibly-null/testLogicalOrMulti (param $0 i32) (param $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 local.get $0 i32.eqz if (result i32) @@ -410,51 +248,412 @@ i32.const 0 drop end - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release ) (func $possibly-null/testAssign (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 $1 - local.tee $2 + local.tee $0 + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/testNeverNull (param $0 i32) 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 + local.get $0 + drop + end + ) + (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 - local.get $2 - local.set $0 + ) + (func $possibly-null/testLogicalAnd (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 + if (result i32) + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $possibly-null/requireNonNull + else + i32.const 0 + end drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $possibly-null/testLogicalOr (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 + i32.eqz + if (result i32) + i32.const 1 + else + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $possibly-null/requireNonNull + i32.const 0 + i32.ne + end + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testTrue (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testTrue + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testFalseElse (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testFalseElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testFalseContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testFalseContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNeNull (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 $possibly-null/testNeNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testEqNullElse (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 $possibly-null/testEqNullElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testEqNullContinuation (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 $possibly-null/testEqNullContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotEqNull (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 $possibly-null/testNotEqNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullElse (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 $possibly-null/testNotNeNullElse + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNotNeNullContinuation (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testNotNeNullContinuation + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testWhile + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testWhile2 (param $0 i32) (param $1 i32) + global.get $~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 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release + call $possibly-null/testWhile2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $possibly-null/testNeverNull (param $0 i32) + (func $export:possibly-null/testWhile3 (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 - call $~lib/rt/stub/__retain - local.set $0 + local.get $1 + call $possibly-null/testWhile3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalAnd (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 $possibly-null/testLogicalAnd + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOr (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $possibly-null/testLogicalOr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalAndMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - if - local.get $0 - drop - end + local.get $1 + call $possibly-null/testLogicalAndMulti + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testLogicalOrMulti (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 $possibly-null/testLogicalOrMulti + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testAssign (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/rt/stub/__release + local.get $1 + call $possibly-null/testAssign + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:possibly-null/testNeverNull (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 $possibly-null/testNeverNull + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/rc/global-init.json b/tests/compiler/rc/global-init.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/rc/global-init.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/rc/global-init.ts b/tests/compiler/rc/global-init.ts deleted file mode 100644 index 54d5402294..0000000000 --- a/tests/compiler/rc/global-init.ts +++ /dev/null @@ -1,14 +0,0 @@ -function getRef(): string { - return ""; -} - -// Assignment of a return value picks up its delayed release state and skips -// one set of retain/release. - -var a: string = getRef(); -var b = getRef(); // same, but inferred - -// Unleak - -a = /* __retainRelease( */ changetype(0) /* , a) */; -b = /* __retainRelease( */ changetype(0) /* , a) */; diff --git a/tests/compiler/rc/local-init.json b/tests/compiler/rc/local-init.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/rc/local-init.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/rc/local-init.ts b/tests/compiler/rc/local-init.ts deleted file mode 100644 index d15be6586a..0000000000 --- a/tests/compiler/rc/local-init.ts +++ /dev/null @@ -1,26 +0,0 @@ -{ - // Normal assignment will retain and release. - - let a = /* __retain( */ "" /* ) */; - // __release(a) -} - -function getRef(): string { - return /* __retain( */ "" /* ) */; -} - -{ - // Assignment of a return value picks up its skipped autorelease - - let b = getRef(); - // __release(b); -} - -class Ref {} - -{ - // Assignment of an instantiation picks up its skipped autorelease - - let c = new Ref(); - // __release(c); -} diff --git a/tests/compiler/rc/logical-and-mismatch.json b/tests/compiler/rc/logical-and-mismatch.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/rc/logical-and-mismatch.ts b/tests/compiler/rc/logical-and-mismatch.ts deleted file mode 100644 index 966c8b7cc9..0000000000 --- a/tests/compiler/rc/logical-and-mismatch.ts +++ /dev/null @@ -1,29 +0,0 @@ -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -{ - // Left skips autorelease, right doesn't - let a = /* t = */ getRef() && /* __release(t), */ gloRef; - // __release(a) -} -{ - // Right skips autorelease, left doesn't - let b = gloRef && getRef(); -} -{ - // Both skip autorelease, for completeness - let c = getRef() && getRef(); -} -{ - // Both don't - let d = gloRef && gloRef; -} - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/rc/logical-or-mismatch.json b/tests/compiler/rc/logical-or-mismatch.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/rc/logical-or-mismatch.ts b/tests/compiler/rc/logical-or-mismatch.ts deleted file mode 100644 index ef5ae700f1..0000000000 --- a/tests/compiler/rc/logical-or-mismatch.ts +++ /dev/null @@ -1,29 +0,0 @@ -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -{ - // Left skips autorelease, right doesn't - let a = /* t = */ getRef() || /* __release(t), */ gloRef; - // __release(a) -} -{ - // Right skips autorelease, left doesn't - let b = gloRef || getRef(); -} -{ - // Both skip autorelease, for completeness - let c = getRef() || getRef(); -} -{ - // Both don't - let d = gloRef || gloRef; -} - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/rc/optimize.json b/tests/compiler/rc/optimize.json deleted file mode 100644 index 48125f096d..0000000000 --- a/tests/compiler/rc/optimize.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} diff --git a/tests/compiler/rc/optimize.ts b/tests/compiler/rc/optimize.ts deleted file mode 100644 index 4ee5a9e420..0000000000 --- a/tests/compiler/rc/optimize.ts +++ /dev/null @@ -1,177 +0,0 @@ -// see: Binaryen/src/passses/PostAssemblyscript.cpp - -export function eliminated_v(): void {} -export function eliminated_vi(a: i32): void {} -export function eliminated_vii(a: i32, b: i32): void {} -export function eliminated_viii(a: i32, b: i32, c: i32): void {} -export function eliminated_rr(a: Ref): Ref { return getRef(); } - -class Ref {} - -export function getRef(): Ref { // don't inline - return new Ref(); -} - -export namespace OptimizeARC { - - // Patterns the OptimizeARC pass eliminates - export namespace eliminates { - - export function linearArgument(a: usize): void { - a = __retain(a); - __release(a); - } - - export function linearLocal(a: usize): void { - var b = __retain(a); - __release(b); - } - - export function linearChain(a: usize): void { - var b = __retain(a); - var c = __retain(b); - var d = __retain(c); - __release(d); - __release(c); - __release(b); - } - - export function balancedReleases(a: usize, cond: bool): void { - var b = __retain(a); - if (cond) { - __release(b); - } else { - __release(b); - } - } - - export function partialReleases(a: usize, cond: bool): void { - // technically invalid and assumed to be never emitted - var b = __retain(a); - if (cond) { - __release(b); - } - } - - export function balancedRetains(a: usize, cond1: bool, cond2: bool): void { - var b: usize; - if (cond1) { - if (cond2) { - b = __retain(a); - } else { - b = __retain(a); - } - } else { - b = __retain(a); - } - __release(b); - } - - export function balancedInsideLoop(a: usize, cond: bool): void { - while (cond) { - a = __retain(a); - __release(a); - } - } - - export function balancedOutsideLoop(a: usize, cond: bool): void { - a = __retain(a); - while (cond) { - } - __release(a); - } - - export function balancedInsideOutsideLoop(a: usize, cond: bool): void { - a = __retain(a); - while (cond) { - __release(a); - a = __retain(a); - } - __release(a); - } - - export function balancedInsideOutsideLoopWithBranch(a: usize, cond1: bool, cond2: bool): void { - a = __retain(a); - while (cond1) { - if (cond2) { - __release(a); - return; - } - __release(a); - a = __retain(a); - } - __release(a); - } - - export function replace(a: Ref, b: Ref): void { - a = b; - } - - export function replaceAlreadyRetained(a: Ref): Ref { - a = getRef(); - return a; - } - } - - // Patterns the OptimizeARC pass keeps - export namespace keeps { - - export function partialRetains(a: usize, cond: bool): void { - // unbalanced - if (cond) { - a = __retain(a); - } - __release(a); // reaches retain and argument - } - - export function reachesReturn(a: usize, cond: bool): usize { - // reaches return - a = __retain(a); - if (cond) { - return a; - } - __release(a); - return 0; - } - - } -} - -export namespace FinalizeARC { - - // Patterns the FinalizeARC pass eliminates - export namespace eliminates { - - export function unnecessaryAllocation(): void { - __release(__retain(__new(1, 0))); - } - - export function unnecessaryPair(a: usize): void { - __release(__retain(a)); - } - - export function unnecessaryStaticPair(): void { - __release(__retain(changetype("a"))); - } - - export function unnecessaryStaticRetain(): void { - __retain(changetype("a")); - } - - export function unnecessaryStaticRelease(): void { - __release(changetype("a")); - } - } - - // Patterns the FinalizeARC pass keeps - export namespace keeps { - - export function dynamicRetain(a: usize): void { - a = __retain(a); - } - - export function dynamicRelease(a: usize): void { - __release(a); - } - } -} diff --git a/tests/compiler/rc/rereturn.ts b/tests/compiler/rc/rereturn.ts deleted file mode 100644 index bbf060bbad..0000000000 --- a/tests/compiler/rc/rereturn.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Validates that skipped autorelease state is preserved accross calls and returns. - -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -function rereturnRef(): Ref { - return getRef(); -} - -/* __release( */ rereturnRef() /* ) */; diff --git a/tests/compiler/rc/ternary-mismatch.json b/tests/compiler/rc/ternary-mismatch.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/rc/ternary-mismatch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/rc/ternary-mismatch.ts b/tests/compiler/rc/ternary-mismatch.ts deleted file mode 100644 index efc51fe182..0000000000 --- a/tests/compiler/rc/ternary-mismatch.ts +++ /dev/null @@ -1,30 +0,0 @@ -// Validates that an autorelease mismatch in the arms of a ternary expression -// is correctly resolved by lifting the respective other. - -class Ref {} - -function getRef(): Ref { - return new Ref(); -} - -var gloRef = new Ref(); - -export function test1(b: bool): Ref | null { - // ifThen skips autorelease, ifElse doesn't - return b ? getRef() : /* __retain( */ gloRef /* ) */; -} - -/* __release( */ test1(true) /* ) */; -/* __release( */ test1(false) /* ) */; - -export function test2(b: bool): Ref | null { - // ifElse skips autorelease, ifThen doesn't - return b ? /* __retain( */ gloRef /* ) */ : getRef(); -} - -/* __release( */ test2(true) /* ) */; -/* __release( */ test2(false) /* ) */; - -// Unleak - -__release(changetype(gloRef)); diff --git a/tests/compiler/recursive.json b/tests/compiler/recursive.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/recursive.json +++ b/tests/compiler/recursive.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/recursive.optimized.wat b/tests/compiler/recursive.optimized.wat index 35e55fcd28..c6bee48f39 100644 --- a/tests/compiler/recursive.optimized.wat +++ b/tests/compiler/recursive.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) - (export "memory" (memory $0)) (export "fib" (func $recursive/fib)) + (export "memory" (memory $0)) (func $recursive/fib (param $0 i32) (result i32) local.get $0 i32.const 1 diff --git a/tests/compiler/recursive.untouched.wat b/tests/compiler/recursive.untouched.wat index 373e935e39..81823e05d9 100644 --- a/tests/compiler/recursive.untouched.wat +++ b/tests/compiler/recursive.untouched.wat @@ -2,8 +2,11 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "fib" (func $recursive/fib)) + (export "memory" (memory $0)) (func $recursive/fib (param $0 i32) (result i32) local.get $0 i32.const 1 diff --git a/tests/compiler/reexport.json b/tests/compiler/reexport.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/reexport.json +++ b/tests/compiler/reexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index 67da2e976e..8ecc3f39ba 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -2,13 +2,27 @@ (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_=>_none (func (param i32 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_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\16\00\00\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (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 ") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) @@ -19,12 +33,21 @@ (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/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17916)) (export "add" (func $export/add)) (export "renamed_sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -34,12 +57,6 @@ (export "renamed_c" (global $export/c)) (export "rerenamed_c" (global $export/c)) (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:numDoors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:doors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) (export "Car.TIRES" (global $exports/Car.TIRES)) (export "Car.getNumTires" (func $exports/Car.getNumTires)) (export "renamed_add" (func $export/add)) @@ -61,28 +78,35 @@ (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#get:doors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#openDoors" (func $exports/Car#openDoors)) (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#get:doors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $exports/Car#openDoors)) (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 @@ -94,51 +118,1187 @@ local.get $1 i32.mul ) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17916 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 273 + 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 1440 + i32.const 275 + 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 1440 + i32.const 288 + 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 1440 + i32.const 201 + 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 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 $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 1440 + i32.const 224 + 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 1440 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 240 + 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 1440 + i32.const 256 + 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 1440 + i32.const 381 + 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 1440 + i32.const 388 + 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 1440 + i32.const 401 + 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 17920 + i32.const 0 + i32.store + i32.const 19488 + 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 17920 + 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 17920 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17916 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $3 - i32.const 28 - i32.add + local.get $0 + call $~lib/rt/tlsf/searchBlock local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.gt_u + i32.eqz if - local.get $4 - local.get $1 - local.get $2 + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -146,49 +1306,197 @@ 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 1440 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1440 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 4 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and + i32.const 4 i32.add - ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 local.get $0 - i32.eqz - if - i32.const 3 - call $~lib/rt/stub/__new - local.set $0 - end + i32.const 0 + i32.store8 offset=3 local.get $0 - local.get $1 - i32.store + i32.const 0 + i32.store8 offset=1 local.get $0 - local.get $1 - i32.store + i32.const 0 + i32.store8 offset=2 local.get $0 - ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 local.get $0 - i32.load ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -198,25 +1506,91 @@ (func $exports/Car.getNumTires (result i32) i32.const 4 ) - (func $exports/Car#set:doors (param $0 i32) (param $1 i32) + (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.store + i32.sub ) - (func $exports/Car#openDoors (param $0 i32) - nop + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable ) - (func $export/ns.one - nop + (func $~setArgumentsLength (param $0 i32) + local.get $0 + global.set $~argumentsLength ) (func $~start - i32.const 1084 - global.set $~lib/rt/stub/offset + (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 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + 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 $~lib/memory/__stack_pointer global.get $reexport/car + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne @@ -228,42 +1602,138 @@ 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@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 + (func $~stack_check + 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 + ) + (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 + 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 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 local.get $1 - call $exports/Car#constructor + 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 $exports/subOpt@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:exports/Car#get:doors (param $0 i32) (result i32) + global.get $~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 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + i32.store + 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) + global.get $~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 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.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) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $exports/vehicles.Car#constructor@varargs (param $0 i32) (param $1 i32) (result i32) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $1of1 block $0of1 block $outOfRange @@ -275,12 +1745,22 @@ i32.const 2 local.set $1 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 0 + i32.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 local.get $1 @@ -288,10 +1768,14 @@ 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 ) - (func $~setArgumentsLength (param $0 i32) - local.get $0 - global.set $~argumentsLength - ) ) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index f343313d5d..e69c2b1434 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -1,14 +1,25 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 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 $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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\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 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) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -20,14 +31,26 @@ (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/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $reexport/car (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 60)) (global $exports/Car i32 (i32.const 3)) (global $~argumentsLength (mut i32) (i32.const 0)) (global $exports/vehicles.Car i32 (i32.const 4)) - (export "memory" (memory $0)) + (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)) (export "add" (func $export/add)) (export "renamed_sub" (func $export/sub)) (export "renamed_mul" (func $export/mul)) @@ -37,12 +60,6 @@ (export "renamed_c" (global $export/c)) (export "rerenamed_c" (global $export/c)) (export "Car" (global $exports/Car)) - (export "Car#get:doors" (func $exports/Car#get:doors)) - (export "Car#set:doors" (func $exports/Car#set:doors)) - (export "Car#constructor" (func $exports/Car#constructor@varargs)) - (export "Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "Car#openDoors" (func $exports/Car#openDoors)) (export "Car.TIRES" (global $exports/Car.TIRES)) (export "Car.getNumTires" (func $exports/Car.getNumTires)) (export "renamed_add" (func $export/add)) @@ -64,28 +81,35 @@ (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#get:doors" (func $exports/Car#get:doors)) - (export "ExportsNamespace.Car#set:doors" (func $exports/Car#set:doors)) - (export "ExportsNamespace.Car#constructor" (func $exports/Car#constructor@varargs)) - (export "ExportsNamespace.Car#get:numDoors" (func $exports/Car#get:numDoors)) - (export "ExportsNamespace.Car#set:numDoors" (func $exports/Car#set:numDoors)) - (export "ExportsNamespace.Car#openDoors" (func $exports/Car#openDoors)) (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#get:doors" (func $exports/vehicles.Car#get:doors)) - (export "ExportsNamespace.vehicles.Car#set:doors" (func $exports/vehicles.Car#set:doors)) - (export "ExportsNamespace.vehicles.Car#constructor" (func $exports/vehicles.Car#constructor@varargs)) - (export "ExportsNamespace.vehicles.Car#get:numDoors" (func $exports/vehicles.Car#get:numDoors)) - (export "ExportsNamespace.vehicles.Car#set:numDoors" (func $exports/vehicles.Car#set:numDoors)) - (export "ExportsNamespace.vehicles.Car#openDoors" (func $exports/vehicles.Car#openDoors)) (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 @@ -102,185 +126,2520 @@ local.get $1 i32.add ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $exports/Car#set:doors (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 144 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - i32.const 0 - i32.store offset=8 + call $~lib/rt/itcms/Object#set:prev local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + call $~lib/rt/itcms/Object#set:prev ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (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 $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 $exports/Car#get:numDoors (param $0 i32) (result i32) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 - i32.load + local.get $1 + i32.store offset=8 ) - (func $start:reexport + (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 - 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 + local.get $2 + i32.const 1 + i32.and i32.eqz if i32.const 0 - i32.const 32 - i32.const 37 + i32.const 416 + i32.const 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 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 $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 416 + i32.const 224 + 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 416 + i32.const 239 + 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 416 + i32.const 240 + 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 416 + i32.const 256 + 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 416 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 80 + i32.const 416 + i32.const 462 + 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 416 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 @@ -299,25 +2658,25 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 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 @@ -330,148 +2689,293 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 + (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 - ) - (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:doors (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - ) - (func $exports/Car#set:numDoors (param $0 i32) (param $1 i32) local.get $0 - local.get $1 - i32.store - ) - (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) + 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 - i32.sub - ) - (func $exports/math.sub (param $0 i32) (param $1 i32) (result i32) + call $exports/Car#set:doors local.get $0 local.get $1 - i32.sub - ) - (func $exports/vehicles.Car.getNumTires (result i32) - global.get $exports/vehicles.Car.TIRES + 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/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 local.get $1 - i32.store + call $exports/vehicles.Car#set:doors local.get $0 local.get $1 - i32.store + 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 $exports/vehicles.Car#get:doors (param $0 i32) (result i32) + (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.load - ) - (func $exports/vehicles.Car#set:doors (param $0 i32) (param $1 i32) + 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 $exports/vehicles.Car#get:numDoors (param $0 i32) (result i32) + (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.load + 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 $exports/vehicles.Car#set:numDoors (param $0 i32) (param $1 i32) + (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 $exports/vehicles.Car#openDoors (param $0 i32) - nop + (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-default/theDefault - nop + (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 $~start - call $start:reexport + (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 $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 + (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/Car#constructor + 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 $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 + (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 - 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 + (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#constructor + call $exports/vehicles.Car#set:numDoors + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (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 - global.set $~argumentsLength + 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.json b/tests/compiler/rereexport.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/rereexport.json +++ b/tests/compiler/rereexport.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index b8f338982e..783e50a69f 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,20 +1,47 @@ (module - (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_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result 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 1036) ",\00\00\00\01\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") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (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 1484) ",") + (data (i32.const 1496) "\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s") + (data (i32.const 1536) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1564) " ") (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17956)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -29,55 +56,1204 @@ (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) + ) + (func $export/mul (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.mul + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $rereexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rereexport/exportsNamespaceCar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1536 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1540 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 273 + 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 1440 + i32.const 275 + 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 1440 + i32.const 288 + 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 1440 + i32.const 201 + 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 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 $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 1440 + i32.const 224 + 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 1440 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 240 + 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 1440 + i32.const 256 + 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 1440 + i32.const 381 + 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 1440 + i32.const 388 + 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 1440 + i32.const 401 + 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 - i32.mul + call $~lib/rt/tlsf/insertBlock ) - (func $exports/Car#constructor (result i32) + (func $~lib/rt/tlsf/initialize (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $2 - i32.const 28 - i32.add + 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 17968 + i32.const 0 + i32.store + i32.const 19536 + 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 17968 + 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 17968 + 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 17968 + i32.const 19540 memory.size - local.tee $3 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + call $~lib/rt/tlsf/addMemory + i32.const 17968 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17956 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + 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 $1 + i32.const 17956 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + call $~lib/rt/tlsf/searchBlock local.tee $1 - i32.gt_u + i32.eqz if - local.get $3 - local.get $0 - local.get $1 + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.const 65535 + 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.tee $1 + local.set $1 + local.get $2 local.get $1 - local.get $3 + local.get $1 + local.get $2 i32.lt_s select memory.grow @@ -92,35 +1268,196 @@ 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 1440 + i32.const 500 + 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 502 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $0 - global.set $~lib/rt/stub/offset + 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.store - local.get $2 - i32.const 4 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/itcms/__new (result i32) + (local $0 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 4 i32.store offset=16 - local.get $2 - i32.const 16 + local.get $0 + 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 $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 2 - i32.store + i32.const 0 + i32.store8 local.get $0 - i32.const 2 - i32.store + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=1 local.get $0 ) (func $export-default/theDefault @@ -131,12 +1468,69 @@ local.get $1 i32.sub ) + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) (func $~start - i32.const 1132 - global.set $~lib/rt/stub/offset + (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 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 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $exports/Car#constructor global.set $reexport/car + global.get $~lib/memory/__stack_pointer global.get $reexport/car + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne @@ -148,15 +1542,23 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer call $exports/Car#constructor global.set $rereexport/car + global.get $~lib/memory/__stack_pointer global.get $rereexport/car + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1504 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -164,17 +1566,64 @@ end call $exports/Car#constructor global.set $rereexport/exportsNamespaceCar + global.get $~lib/memory/__stack_pointer global.get $rereexport/exportsNamespaceCar + local.tee $0 + i32.store + local.get $0 i32.load i32.const 2 i32.ne if i32.const 0 - i32.const 1104 + i32.const 1504 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $exports/Car#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + 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 ) ) diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 3d27e7c94a..945a2b2fcc 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -1,13 +1,26 @@ (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 (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_i32_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\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\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (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 460) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00r\00e\00e\00x\00p\00o\00r\00t\00.\00t\00s\00\00\00") + (data (i32.const 512) "\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) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -15,13 +28,25 @@ (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/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $reexport/car (mut i32) (i32.const 0)) (global $rereexport/car (mut i32) (i32.const 0)) (global $rereexport/exportsNamespaceCar (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 108)) - (export "memory" (memory $0)) + (global $~lib/rt/__rtti_base i32 (i32.const 512)) + (global $~lib/memory/__data_end i32 (i32.const 548)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16932)) + (global $~lib/memory/__heap_base i32 (i32.const 16932)) (export "a" (global $export/a)) (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) @@ -36,6 +61,7 @@ (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) local.get $0 @@ -52,167 +78,2410 @@ local.get $1 i32.add ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $exports/Car#set:doors (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 273 + 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 416 + i32.const 275 + 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.const 65535 + 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 288 + 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 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 $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 416 + i32.const 224 + 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 416 + i32.const 239 + 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 416 + i32.const 240 + 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 416 + i32.const 256 + 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 416 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 80 + i32.const 416 + i32.const 462 + 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 416 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 - 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 + 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 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 80 + i32.const 144 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $exports/Car#get:numDoors (param $0 i32) (result i32) local.get $0 + i32.load ) - (func $exports/Car#constructor (param $0 i32) (param $1 i32) (result i32) + (func $export-default/theDefault + nop + ) + (func $export/sub (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.eqz + 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 + local.tee $1 if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end + global.get $rereexport/exportsNamespaceCar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 272 local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $1 - i32.store + call $~lib/rt/itcms/__visit + i32.const 80 local.get $0 + call $~lib/rt/itcms/__visit + global.get $reexport/car + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end ) - (func $exports/Car#get:numDoors (param $0 i32) (result i32) + (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:rereexport + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16960 + i32.const 17008 + 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 @@ -249,25 +2518,25 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 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 @@ -280,8 +2549,21 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:rereexport + (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 call $start:reexport i32.const 2 i32.const 2 @@ -291,7 +2573,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -305,7 +2587,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 16 i32.const 1 call $~lib/builtins/abort @@ -316,13 +2598,18 @@ call $exports/Car#constructor global.set $rereexport/car global.get $rereexport/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 80 + i32.const 480 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -336,7 +2623,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 21 i32.const 1 call $~lib/builtins/abort @@ -350,7 +2637,7 @@ i32.eqz if i32.const 0 - i32.const 80 + i32.const 480 i32.const 22 i32.const 1 call $~lib/builtins/abort @@ -361,34 +2648,60 @@ call $exports/Car#constructor global.set $rereexport/exportsNamespaceCar global.get $rereexport/exportsNamespaceCar + 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 80 + i32.const 480 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $export-default/theDefault - nop - ) - (func $export/sub (param $0 i32) (param $1 i32) (result i32) + (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 - i32.sub - ) - (func $export/ns.one - nop - ) - (func $export/ns.two - nop - ) - (func $~start - call $start:rereexport + 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/resolve-access.json b/tests/compiler/resolve-access.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/resolve-access.json +++ b/tests/compiler/resolve-access.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 023ae9642d..15f6651f8b 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1,126 +1,1718 @@ (module + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (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_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))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_i32 (func (param i64) (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") + (data (i32.const 1036) "\1c") (data (i32.const 1052) "\08\00\00\00\01") - (data (i32.const 1068) "<\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 1132) ",\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 1180) "|\00\00\00\01\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 1308) "<\00\00\00\01\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 1372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1404) "\\\00\00\00\01\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") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (export "memory" (memory $0)) + (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) ",") + (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 1528) "\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 1644) "<") + (data (i32.const 1656) "\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 1708) "\1c") + (data (i32.const 1720) "\01\00\00\00\02\00\00\000") + (data (i32.const 1740) "\\") + (data (i32.const 1752) "\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 1840) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1868) "\02\02\00\00\00\00\00\00\02\t\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18276)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) + (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1760 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 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 18276 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1840 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1844 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 273 + 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 1424 + i32.const 275 + 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 1424 + i32.const 288 + 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 1424 + i32.const 201 + 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 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1424 + i32.const 224 + 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 1424 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 240 + 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 1424 + i32.const 256 + 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 1424 + i32.const 381 + 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 1424 + i32.const 388 + 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 1424 + i32.const 401 + 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 18288 + i32.const 0 + i32.store + i32.const 19856 + 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 18288 + 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 18288 + 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 18288 + i32.const 19860 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18288 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18276 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18276 + 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 $1 + i32.const 18276 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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.ge_u + if + i32.const 1088 + i32.const 1424 + i32.const 462 + i32.const 30 + 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 $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 1424 + i32.const 500 + 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 1424 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/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 $7 i32) local.get $0 i32.const 1073741804 - i32.gt_u + i32.ge_u if + i32.const 1088 + i32.const 1152 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end - global.get $~lib/rt/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 + local.get $0 i32.const 16 - i32.shl - i32.const 15 i32.add - i32.const -16 - i32.and - local.tee $3 - i32.gt_u + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz 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 + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/memory/memory.copy (param $0 i32) (local $1 i32) @@ -276,96 +1868,383 @@ loop $while-continue|5 local.get $4 if - local.get $0 - local.get $4 - i32.const 1 - i32.sub - local.tee $4 - i32.add - local.get $4 - i32.const 1056 - i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + local.get $0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.add + local.get $4 + i32.const 1056 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $resolve-access/Container + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $resolve-access/Container $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1892 + i32.lt_s + if + i32.const 18304 + i32.const 18352 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/memory/__stack_pointer + i32.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 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + call $~lib/memory/memory.copy + local.get $1 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 290 + 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 $2 + 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 $4 + local.set $5 + local.get $4 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $5 + i32.const 3 + i32.eq + select + if + local.get $2 + call $~lib/rt/itcms/Object#makeGray end end end end - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 - i32.const 10 - i32.ge_u + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 i32.const 1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1000 - i32.ge_u - i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 100 - i32.lt_u - select + i32.load offset=12 + i32.eqz + if + i32.const 1280 + i32.const 1488 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i32.store local.get $0 - i32.const 1000000000 - i32.ge_u + i32.load offset=4 + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $~lib/util/number/utoa64 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $resolve-access/propertyAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + call $resolve-access/Container#constructor + local.tee $0 + i32.store local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + i64.const 1 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 10000000 - i32.lt_u - select + i32.store offset=4 local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 + i64.load + i32.wrap_i64 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 $__inlined_func$~lib/util/number/utoa32 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32 + end + local.get $1 + call $~lib/util/number/decimalCount32 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 1 - i32.sub - local.tee $2 - i32.const 1 i32.shl - i32.add + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 + local.get $2 + call $~lib/util/number/utoa_dec_simple + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 + global.set $~lib/memory/__stack_pointer end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) (func $~lib/util/number/utoa64 (param $0 i64) (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 i64.eqz if - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1728 return end local.get $0 @@ -374,18 +2253,23 @@ if local.get $0 i32.wrap_i64 - local.tee $1 + local.tee $3 call $~lib/util/number/decimalCount32 - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__new - local.tee $3 - local.get $1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 + local.get $3 + local.get $1 call $~lib/util/number/utoa_dec_simple else + global.get $~lib/memory/__stack_pointer local.get $0 i64.const 100000000000 i64.ge_u @@ -434,9 +2318,9 @@ i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__new - local.tee $3 - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store loop $do-continue|0 local.get $2 local.get $1 @@ -462,103 +2346,60 @@ br_if $do-continue|0 end end - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $resolve-access/arrayAccess (result i32) + (func $resolve-access/Container#constructor (result i32) (local $0 i32) - (local $1 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/stub/__new - local.set $0 - i32.const 8 + global.get $~lib/memory/__stack_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/rt/stub/__new - local.tee $1 - call $~lib/memory/memory.copy - local.get $0 - local.get $1 i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - i32.const 8 - i32.store offset=8 - local.get $0 - i32.const 1 - i32.store offset=12 - local.get $0 - i32.load offset=12 - i32.eqz - if - i32.const 1088 - i32.const 1152 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - i64.load - call $~lib/util/number/utoa64 - ) - (func $resolve-access/Container#constructor (result i32) - (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) (func $resolve-access/fieldAccess (result i32) (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 call $resolve-access/Container#constructor local.tee $0 + i32.store + local.get $0 i64.const 1 i64.store local.get $0 i64.load call $~lib/util/number/utoa64 - ) - (func $resolve-access/propertyAccess (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - call $resolve-access/Container#constructor - local.tee $0 - i64.const 1 - i64.store - block $__inlined_func$~lib/util/number/utoa32 - local.get $0 - i64.load - i32.wrap_i64 - local.tee $1 - i32.eqz - if - i32.const 1392 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 - end - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - ) - (func $~start - i32.const 1500 - global.set $~lib/rt/stub/offset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 4156ddbb42..5b74f876b5 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1,174 +1,2350 @@ (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_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $none_=>_none (func)) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "<\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 108) ",\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 156) "|\00\00\00\01\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 284) "<\00\00\00\01\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 348) "\1c\00\00\00\01\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 380) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 780) "\1c\04\00\00\01\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 1836) "\\\00\00\00\01\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 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\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(\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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\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 620) "<\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 684) "\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 716) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 1116) "\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 2172) "\\\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 2272) "\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\02\02\00\00\00\00\00\00\02\t\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/memory/__heap_base i32 (i32.const 1932)) - (export "memory" (memory $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)) + (global $~lib/memory/__heap_base i32 (i32.const 18708)) (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) + (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 128 + 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 128 + 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 256 + i32.const 320 + 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 128 + 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 - i32.sub - i32.const 65535 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $3 + 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 400 + i32.const 273 + 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 400 + i32.const 275 + 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 400 + i32.const 288 + 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 400 + 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 400 + 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 $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 400 + i32.const 224 + 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 400 + i32.const 239 + 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 400 + i32.const 240 + 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 400 + i32.const 256 + 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 400 + i32.const 381 + 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 400 + i32.const 388 + 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 400 + i32.const 401 + 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 400 + i32.const 565 + 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 + 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 + 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 128 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 64 + i32.const 400 + i32.const 462 + 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 400 + i32.const 334 + 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 400 + i32.const 347 + 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 400 + i32.const 361 + 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 400 + i32.const 500 + 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 400 + i32.const 502 + 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.tee $4 + local.set $4 + local.get $2 + local.set $3 + i32.const 0 + i32.const 1 + i32.gt_s + drop local.get $3 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 64 + i32.const 128 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + 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) @@ -1427,7 +3603,7 @@ (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.set $3 local.get $2 if @@ -1438,71 +3614,82 @@ end local.get $3 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result 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) - i32.const 16 - local.get $2 - call $~lib/rt/stub/__new - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/stub/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop local.get $0 - i32.load offset=12 - i32.ge_u + i32.eqz if - i32.const 64 + i32.const 0 i32.const 128 - i32.const 104 - i32.const 42 + i32.const 290 + 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#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load ) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 @@ -1594,14 +3781,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 380 + i32.const 716 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 380 + i32.const 716 local.get $7 i32.const 2 i32.shl @@ -1644,7 +3831,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 380 + i32.const 716 local.get $10 i32.const 2 i32.shl @@ -1667,7 +3854,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 380 + i32.const 716 local.get $1 i32.const 2 i32.shl @@ -1814,14 +4001,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 380 + i32.const 716 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 380 + i32.const 716 local.get $11 i32.const 2 i32.shl @@ -1843,14 +4030,14 @@ i64.shl i64.or i64.store - i32.const 380 + i32.const 716 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 380 + i32.const 716 local.get $9 i32.const 2 i32.shl @@ -1899,7 +4086,7 @@ i32.const 1 i32.shl i32.add - i32.const 800 + i32.const 1136 local.get $1 i32.wrap_i64 i32.const 255 @@ -1921,7 +4108,7 @@ i32.and if local.get $0 - i32.const 800 + i32.const 1136 local.get $1 i32.wrap_i64 i32.const 6 @@ -2008,100 +4195,400 @@ 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) + (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 $7 i32) + 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-continue|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 2192 + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 2192 + 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 + local.set $7 + local.get $7 + br_if $do-continue|1 + end + end + ) + (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/utoa64 + ) + (func $resolve-access/Container#set:foo (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store + ) + (func $resolve-access/Container#toU32 (param $0 i32) (result i32) + local.get $0 + i64.load + i32.wrap_i64 + ) + (func $~lib/number/U32#toString (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/utoa32 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1136 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2192 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + 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/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-access/Container + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $resolve-access/Container $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~start + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 18736 + i32.const 18784 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 256 + i32.const 464 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + 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 + ) + (func $resolve-access/arrayAccess (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 3 + i32.const 3 + i32.const 32 + call $~lib/rt/__newArray + local.tee $1 + i32.store + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 10 + call $~lib/number/U64#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $resolve-access/propertyAccess (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $resolve-access/Container#constructor + local.tee $0 + i32.store + local.get $0 + i64.const 1 + call $resolve-access/Container#set:foo + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $resolve-access/Container#toU32 + i32.const 10 + call $~lib/number/U32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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.get $3 - i64.extend_i32_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - local.get $3 - i32.const 1 - i32.sub - i32.and + 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 - 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-continue|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 1856 - 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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|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 1856 - 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 - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end + 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 $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) (local $2 i32) @@ -2111,6 +4598,15 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (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 $1 i32.const 2 i32.lt_s @@ -2122,8 +4618,8 @@ i32.gt_s end if - i32.const 176 - i32.const 304 + i32.const 512 + i32.const 640 i32.const 401 i32.const 5 call $~lib/builtins/abort @@ -2134,11 +4630,15 @@ i64.ne i32.eqz if - i32.const 368 + i32.const 704 + 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 - i32.const 0 - local.set $2 local.get $1 i32.const 10 i32.eq @@ -2154,12 +4654,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.set $7 local.get $3 @@ -2178,12 +4680,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.set $6 local.get $0 @@ -2214,12 +4718,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.set $3 local.get $0 @@ -2239,12 +4745,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.get $0 local.get $4 @@ -2253,80 +4761,89 @@ end end local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/utoa64 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $resolve-access/arrayAccess (result i32) - (local $0 i32) + (func $resolve-access/Container#constructor (param $0 i32) (result i32) (local $1 i32) - i32.const 1 - i32.const 3 - i32.const 3 - i32.const 32 - call $~lib/rt/__newArray - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + global.get $~lib/memory/__stack_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#__get - i32.const 10 - call $~lib/number/U64#toString - local.set $0 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - ) - (func $resolve-access/Container#constructor (param $0 i32) (result i32) + i32.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i64.const 0 - i64.store + call $resolve-access/Container#set:foo 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-access/fieldAccess (result i32) (local $0 i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 0 call $resolve-access/Container#constructor - local.set $0 + local.tee $0 + i32.store local.get $0 i64.const 1 - i64.store + call $resolve-access/Container#set:foo local.get $0 i64.load i32.const 10 call $~lib/number/U64#toString local.set $1 - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $resolve-access/Container#toU32 (param $0 i32) (result i32) - local.get $0 - i64.load - i32.wrap_i64 - ) (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 4 + 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 @@ -2338,8 +4855,8 @@ i32.gt_s end if - i32.const 176 - i32.const 304 + i32.const 512 + i32.const 640 i32.const 350 i32.const 5 call $~lib/builtins/abort @@ -2348,11 +4865,15 @@ local.get $0 i32.eqz if - i32.const 368 + i32.const 704 + 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 - i32.const 0 - local.set $2 local.get $1 i32.const 10 i32.eq @@ -2360,12 +4881,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.set $6 local.get $0 @@ -2394,12 +4917,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.set $6 local.get $0 @@ -2421,12 +4946,14 @@ 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/stub/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 local.get $0 i64.extend_i32_u @@ -2436,45 +4963,11 @@ end end local.get $2 - call $~lib/rt/stub/__retain - ) - (func $~lib/number/U32#toString (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - call $~lib/util/number/utoa32 - ) - (func $resolve-access/propertyAccess (result i32) - (local $0 i32) - (local $1 i32) - i32.const 0 - call $resolve-access/Container#constructor - local.set $0 - local.get $0 - i64.const 1 - i64.store - local.get $0 - call $resolve-access/Container#toU32 - i32.const 10 - call $~lib/number/U32#toString - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~start - global.get $~lib/memory/__heap_base + local.set $7 + global.get $~lib/memory/__stack_pointer 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 + global.set $~lib/memory/__stack_pointer + local.get $7 ) ) diff --git a/tests/compiler/resolve-binary.json b/tests/compiler/resolve-binary.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/resolve-binary.json +++ b/tests/compiler/resolve-binary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index be49633de5..2fa2cc59db 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1,169 +1,110 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_i32 (func (result i32))) + (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 $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (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\08\00\00\00t\00r\00u\00e") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1100) "<\00\00\00\01\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") - (data (i32.const 1164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1196) "|\00\00\00\01\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 1324) "<\00\00\00\01\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 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1420) "\\\00\00\00\01\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 1516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1644) ",\00\00\00\01\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 1692) ",\00\00\00\01\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 1800) "\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\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 (param $0 i32) (param $1 i32) (param $2 i32) loop $do-continue|0 @@ -332,10 +1856,22 @@ (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 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 1408 local.set $0 br $__inlined_func$~lib/util/number/itoa32 @@ -353,12 +1889,16 @@ call $~lib/util/number/decimalCount32 local.get $1 i32.add - local.tee $3 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 local.get $2 local.get $3 call $~lib/util/number/utoa_dec_simple @@ -368,6 +1908,10 @@ i32.const 45 i32.store16 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end local.get $0 ) @@ -533,7 +2077,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add local.get $3 i32.const 65535 @@ -568,7 +2112,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2672 + i32.const 3072 i32.add i64.load32_u local.get $9 @@ -578,7 +2122,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1742 + i32.const 2142 i32.add local.tee $3 i32.load16_u @@ -656,7 +2200,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add local.get $6 i32.wrap_i64 @@ -694,7 +2238,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2672 + i32.const 3072 i32.add i64.load32_u i64.mul @@ -702,7 +2246,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1742 + i32.const 2142 i32.add local.tee $3 i32.load16_u @@ -934,7 +2478,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add i32.const 3145774 i32.store @@ -963,7 +2507,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add i32.const 48 i32.store16 @@ -977,7 +2521,7 @@ local.get $2 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add i32.const 3145774 i32.store @@ -997,7 +2541,7 @@ local.get $2 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add local.tee $2 i32.const 2 @@ -1031,14 +2575,14 @@ local.tee $2 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add - i32.const 1744 + i32.const 2144 local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy - i32.const 1744 + i32.const 2144 i32.const 3014704 i32.store i32.const 2 @@ -1051,7 +2595,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 1744 + i32.const 2144 i32.add i32.const 48 i32.store16 @@ -1070,10 +2614,10 @@ i32.const 1 i32.eq if (result i32) - i32.const 1746 + i32.const 2146 i32.const 101 i32.store16 - i32.const 1748 + i32.const 2148 local.get $2 i32.const 1 i32.sub @@ -1094,7 +2638,7 @@ i32.add local.tee $1 call $~lib/util/number/utoa_dec_simple - i32.const 1748 + i32.const 2148 i32.const 45 i32.const 43 local.get $0 @@ -1104,8 +2648,8 @@ i32.const 2 i32.add else - i32.const 1748 - i32.const 1746 + i32.const 2148 + i32.const 2146 local.get $0 i32.const 1 i32.shl @@ -1113,11 +2657,11 @@ i32.const 2 i32.sub call $~lib/memory/memory.copy - i32.const 1746 + i32.const 2146 i32.const 46 i32.store16 local.get $1 - i32.const 1744 + i32.const 2144 i32.add local.tee $1 i32.const 101 @@ -1169,10 +2713,10 @@ (local $4 i32) i32.const -4 global.set $~lib/util/number/_K - i32.const 2152 + i32.const 2552 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2584 + i32.const 2984 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow @@ -1279,22 +2823,252 @@ (func $~lib/number/F64#toString (result i32) (local $0 i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store call $~lib/util/number/dtoa_core i32.const 1 i32.shl - local.tee $0 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $1 - i32.const 1744 + i32.store + local.get $1 + i32.const 2144 local.get $0 call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-binary/Bar + block $resolve-binary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-binary/Foo $resolve-binary/Bar $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-binary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 3676 + i32.lt_s + if + i32.const 20080 + i32.const 20128 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $start:resolve-binary (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 + 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 + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -1307,6 +3081,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -1319,6 +3099,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -1331,6 +3117,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -1343,6 +3135,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -1355,6 +3153,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -1367,6 +3171,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -1379,6 +3189,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -1391,13 +3207,28 @@ call $~lib/builtins/abort unreachable end - i32.const 3228 - global.set $~lib/rt/stub/offset + i32.const 1552 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1584 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1728 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 global.set $resolve-binary/a i32.const 1 call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1414,7 +3245,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1431,7 +3270,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1448,7 +3295,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1460,7 +3315,15 @@ unreachable end call $~lib/number/F64#toString - i32.const 2736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store offset=4 + local.get $0 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if @@ -1477,7 +3340,15 @@ global.set $resolve-binary/a i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1494,7 +3365,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1511,7 +3390,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3168 + i32.store offset=4 + local.get $0 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if @@ -1528,7 +3415,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1545,7 +3440,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1562,7 +3465,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1579,7 +3490,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 2800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + local.get $0 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -1596,7 +3515,15 @@ global.set $resolve-binary/a global.get $resolve-binary/a call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1609,7 +3536,15 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + local.get $0 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -1622,7 +3557,15 @@ end i32.const -1 call $~lib/number/I32#toString - i32.const 2832 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store offset=4 + local.get $0 + i32.const 3232 call $~lib/string/String.__eq i32.eqz if @@ -1635,7 +3578,15 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1648,7 +3599,15 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1661,7 +3620,15 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1703,7 +3670,15 @@ end local.get $2 call $~lib/number/I32#toString - i32.const 2768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3168 + i32.store offset=4 + local.get $0 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if @@ -1715,7 +3690,15 @@ unreachable end call $~lib/number/F64#toString - i32.const 2736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store offset=4 + local.get $0 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if @@ -1727,7 +3710,15 @@ unreachable end call $~lib/number/F64#toString - i32.const 2736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store offset=4 + local.get $0 + i32.const 3136 call $~lib/string/String.__eq i32.eqz if @@ -1740,7 +3731,15 @@ end i32.const 4 call $~lib/number/I32#toString - i32.const 2768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3168 + i32.store offset=4 + local.get $0 + i32.const 3168 call $~lib/string/String.__eq i32.eqz if @@ -1753,7 +3752,15 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1766,7 +3773,15 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + local.get $0 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -1779,7 +3794,15 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1792,7 +3815,15 @@ end i32.const 3 call $~lib/number/I32#toString - i32.const 2800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + local.get $0 + i32.const 3200 call $~lib/string/String.__eq i32.eqz if @@ -1805,7 +3836,15 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1818,7 +3857,15 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1831,6 +3878,14 @@ end i32.const 0 call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1408 + i32.store offset=4 + local.get $0 i32.const 1408 call $~lib/string/String.__eq i32.eqz @@ -1844,7 +3899,15 @@ end i32.const 1 call $~lib/number/I32#toString - i32.const 1536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if @@ -1857,7 +3920,15 @@ end i32.const 2 call $~lib/number/I32#toString - i32.const 1568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if @@ -1868,12 +3939,43 @@ 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 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/rt/stub/__new - drop - i32.const 2864 - i32.const 2864 + 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 $resolve-binary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store offset=4 + i32.const 3264 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if @@ -1884,8 +3986,23 @@ call $~lib/builtins/abort unreachable end - i32.const 2896 - i32.const 2896 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=4 + i32.const 3296 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if @@ -1896,8 +4013,23 @@ call $~lib/builtins/abort unreachable end - i32.const 2928 - i32.const 2928 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=4 + i32.const 3328 + i32.const 3328 call $~lib/string/String.__eq i32.eqz if @@ -1908,8 +4040,23 @@ call $~lib/builtins/abort unreachable end - i32.const 2960 - i32.const 2960 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=4 + i32.const 3360 + i32.const 3360 call $~lib/string/String.__eq i32.eqz if @@ -1920,8 +4067,23 @@ call $~lib/builtins/abort unreachable end - i32.const 2992 - i32.const 2992 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.store offset=4 + i32.const 3392 + i32.const 3392 call $~lib/string/String.__eq i32.eqz if @@ -1932,8 +4094,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3024 - i32.const 3024 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3424 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3424 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3424 + i32.store offset=4 + i32.const 3424 + i32.const 3424 call $~lib/string/String.__eq i32.eqz if @@ -1944,8 +4121,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3056 - i32.const 3056 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3456 + i32.store offset=4 + i32.const 3456 + i32.const 3456 call $~lib/string/String.__eq i32.eqz if @@ -1956,8 +4148,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3088 - i32.const 3088 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3488 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3488 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3488 + i32.store offset=4 + i32.const 3488 + i32.const 3488 call $~lib/string/String.__eq i32.eqz if @@ -1968,8 +4175,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3120 - i32.const 3120 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3520 + i32.store offset=4 + i32.const 3520 + i32.const 3520 call $~lib/string/String.__eq i32.eqz if @@ -1980,8 +4202,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3152 - i32.const 3152 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3552 + i32.store offset=4 + i32.const 3552 + i32.const 3552 call $~lib/string/String.__eq i32.eqz if @@ -1992,8 +4229,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3184 - i32.const 3184 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3584 + i32.store offset=4 + i32.const 3584 + i32.const 3584 call $~lib/string/String.__eq i32.eqz if @@ -2004,8 +4256,23 @@ call $~lib/builtins/abort unreachable end - i32.const 3216 - i32.const 3216 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/foo + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store offset=4 + i32.const 3616 + i32.const 3616 call $~lib/string/String.__eq i32.eqz if @@ -2016,17 +4283,24 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new + call $resolve-binary/Bar#constructor global.set $resolve-binary/bar - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new + call $resolve-binary/Bar#constructor global.set $resolve-binary/bar2 + global.get $~lib/memory/__stack_pointer + global.get $resolve-binary/bar + i32.store offset=4 + global.get $~lib/memory/__stack_pointer global.get $resolve-binary/bar2 + local.tee $0 + i32.store offset=8 + local.get $0 global.set $resolve-binary/bar + global.get $~lib/memory/__stack_pointer global.get $resolve-binary/bar + local.tee $0 + i32.store + local.get $0 global.get $resolve-binary/bar2 i32.ne if @@ -2048,8 +4322,31 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:resolve-binary + (func $resolve-binary/Bar#constructor (result i32) + (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 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index b2947861df..e91ac055a7 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -1,66 +1,86 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (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 $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param 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_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (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\08\00\00\00t\00r\00u\00e\00\00\00\00\00") - (data (i32.const 44) "\1c\00\00\00\01\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\01\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\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 172) "|\00\00\00\01\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\01\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\01\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) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 796) "\1c\04\00\00\01\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 1852) "\\\00\00\00\01\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 1948) "\1c\00\00\00\01\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 1980) "\1c\00\00\00\01\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 2016) "\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 8172) "\1c\00\00\00\01\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 8204) "\1c\00\00\00\01\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 8236) ",\00\00\00\01\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 8284) ",\00\00\00\01\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 8336) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 8392) "\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 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_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param 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_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $f32_=>_i32 (func (param f32) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (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&\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\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 1212) "<\00\00\00\01\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 1276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1340) ",\00\00\00\01\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 1388) ",\00\00\00\01\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 1496) "\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\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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:resolve-elementaccess + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 3396 + i32.lt_s + if + i32.const 19808 + i32.const 19856 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -1618,13 +3262,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -1633,6 +3284,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -1645,7 +3302,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -1665,314 +3321,543 @@ 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-continue|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 - end - i32.eqz - return - end - i32.const 0 - ) - (func $~lib/typedarray/Uint8Array#__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 1168 - i32.const 1232 - i32.const 163 - 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/Uint8Array#__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 1168 - i32.const 1232 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - ) - (func $~lib/number/U8#toString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - block $__inlined_func$~lib/util/number/utoa32 - local.get $0 - i32.const 255 - i32.and - local.tee $1 - i32.eqz - if - i32.const 2800 - local.set $0 - br $__inlined_func$~lib/util/number/utoa32 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 end - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $start:resolve-elementaccess (local $0 i32) - i32.const 3004 - global.set $~lib/rt/stub/offset + (local $1 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 + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 12 i32.const 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $resolve-elementaccess/arr + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 i32.const 0 f32.const 1 call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 i32.const 1 f32.const 2 call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - i32.const 2432 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2768 + i32.store offset=4 + local.get $0 + i32.const 2768 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - i32.const 2544 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store offset=4 + local.get $0 + i32.const 2880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr local.tee $0 - i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $1 + i32.store offset=16 + local.get $0 + i32.const 0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#__get call $~lib/number/F32#toString - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2912 + i32.store offset=4 + local.get $0 + i32.const 2912 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr - i32.const 0 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 10 f32.add call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/arr + local.tee $0 + i32.store + local.get $0 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 21 f32.ne if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 4 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 - if (result i32) - local.get $0 - else + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 5 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $resolve-elementaccess/buf + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $0 i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $0 i32.const 1 i32.const 2 call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2928 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store offset=4 + local.get $0 + i32.const 3264 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2960 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store offset=4 + local.get $0 + i32.const 3296 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf local.tee $0 - i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $1 + i32.store offset=16 + local.get $0 + i32.const 0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get call $~lib/number/U8#toString - i32.const 2992 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=4 + local.get $0 + i32.const 3328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf - i32.const 0 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 10 i32.add call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer global.get $resolve-elementaccess/buf + local.tee $0 + i32.store + local.get $0 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 21 i32.ne if i32.const 0 - i32.const 2464 + i32.const 2800 i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:resolve-elementaccess + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 1073741820 + local.get $1 + i32.shr_u + i32.const 2 + i32.lt_u + if + i32.const 1056 + i32.const 1104 + i32.const 18 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 0c93d9069e..d3df0c8d24 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -1,51 +1,70 @@ (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 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param 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))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $f32_i32_=>_i32 (func (param f32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (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&\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 124) "<\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 188) "<\00\00\00\01\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 252) "\1c\00\00\00\01\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 284) "\1c\00\00\00\01\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 316) ",\00\00\00\01\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 364) ",\00\00\00\01\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 416) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 472) "\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\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) (result i32))) + (type $i32_i32_=>_none (func (param i32 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_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))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1068) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") - (data (i32.const 1148) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02") - (data (i32.const 1180) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\03") - (data (i32.const 1212) "|\00\00\00\01\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 1340) "<\00\00\00\01\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 1404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1436) "\\\00\00\00\01\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 1532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\002") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1068) "L") + (data (i32.const 1080) "\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") + (data (i32.const 1148) "\1c") + (data (i32.const 1160) "\03\00\00\00\08\00\00\00\02") + (data (i32.const 1180) "\1c") + (data (i32.const 1192) "\03\00\00\00\08\00\00\00\03") + (data (i32.const 1212) "|") + (data (i32.const 1224) "\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 1340) "<") + (data (i32.const 1352) "\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 1404) "\1c") + (data (i32.const 1416) "\01\00\00\00\02\00\00\000") + (data (i32.const 1436) "<") + (data (i32.const 1448) "\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 1500) "<") + (data (i32.const 1512) "\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 1628) "<") + (data (i32.const 1640) "\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 1692) ",") + (data (i32.const 1704) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1772) "<") + (data (i32.const 1784) "\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 1836) "\\") + (data (i32.const 1848) "\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 1932) "\1c") + (data (i32.const 1944) "\01\00\00\00\04\00\00\004\002") + (data (i32.const 1968) "\04\00\00\00 \00\00\00\00\00\00\00 ") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18388)) (export "memory" (memory $0)) (start $~start) (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) @@ -33,133 +68,1291 @@ i32.const 42 i32.add ) - (func $~lib/util/number/itoa32 (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) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 1424 - return + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1856 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - i32.const 0 + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) local.get $0 - i32.sub + local.get $1 local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) local.get $0 - i32.const 31 - i32.shr_u - local.tee $4 - select - local.tee $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add + local.get $1 local.get $0 - i32.const 10000 - i32.ge_u + i32.load offset=4 i32.const 3 - i32.add + i32.and + i32.or + i32.store offset=4 + ) + (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 - i32.const 1000 - i32.ge_u - i32.add + local.get $1 + local.get $2 + i32.or + i32.store offset=4 local.get $0 - i32.const 100 - i32.lt_u - select + local.get $3 + i32.store offset=8 + local.get $3 local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + call $~lib/rt/itcms/Object#set:next + local.get $1 local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18388 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end local.get $0 - i32.const 10000000 - i32.lt_u - select + global.get $~lib/rt/itcms/toSpace local.get $0 - i32.const 100000 - i32.lt_u - select - local.get $4 - i32.add - local.tee $5 + i32.load offset=12 + local.tee $1 i32.const 1 - i32.shl + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1968 + i32.load + i32.gt_u + if + i32.const 1648 + i32.const 1712 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1972 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load local.tee $2 - i32.const 1073741804 - i32.gt_u + i32.const 1 + i32.and + i32.eqz if + i32.const 0 + i32.const 1792 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort unreachable end local.get $2 - i32.const 16 - i32.add - local.tee $1 + i32.const -4 + i32.and + local.tee $2 i32.const 1073741820 - i32.gt_u + i32.lt_u + i32.const 0 + local.get $2 + i32.const 12 + i32.ge_u + select + i32.eqz if + i32.const 0 + i32.const 1792 + i32.const 275 + 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 1792 + i32.const 288 + i32.const 14 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $6 local.get $1 - i32.const 19 - i32.add - i32.const -16 - i32.and + 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.sub - local.tee $9 + i32.shl i32.add - local.tee $1 - memory.size - local.tee $7 - i32.const 16 + i32.const 2 i32.shl - i32.const 15 i32.add - i32.const -16 - i32.and - local.tee $3 - i32.gt_u + i32.load offset=96 + i32.eq if - local.get $7 - local.get $1 + local.get $0 + local.get $2 local.get $3 - i32.sub - i32.const 65535 + i32.const 4 + i32.shl i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $3 - local.get $3 - local.get $7 - i32.lt_s - select - memory.grow + 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 1792 + i32.const 201 + 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 1792 + 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 $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 1792 + i32.const 224 + 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 1792 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1792 + i32.const 240 + 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 1792 + i32.const 256 + 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 1792 + i32.const 381 + 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 1792 + i32.const 388 + 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 1792 + i32.const 401 + 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 18400 + i32.const 0 + i32.store + i32.const 19968 + 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 18400 + 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 18400 + 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 18400 + i32.const 19972 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18388 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18388 + 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 $1 + i32.const 18388 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1792 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1792 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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.ge_u + if + i32.const 1456 + i32.const 1792 + i32.const 462 + i32.const 30 + 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 $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 @@ -168,72 +1361,518 @@ i32.const 0 i32.lt_s if - unreachable + 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 1792 + i32.const 500 + 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 1792 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1792 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1456 + i32.const 1520 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end + return end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return end - local.get $1 - global.set $~lib/rt/stub/offset - local.get $9 - i32.store - local.get $6 - i32.const 4 + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + 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 1056 + i32.load + call_indirect (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.store offset=12 - local.get $1 - local.get $2 - i32.store offset=16 - local.get $6 - i32.const 16 - i32.add - local.tee $1 - local.set $2 - loop $do-continue|0 - local.get $2 - local.get $5 + i32.const 1168 + i32.load + call_indirect (type $i32_=>_i32) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 6 i32.const 1 - i32.sub - local.tee $5 + call $~lib/builtins/abort + unreachable + end + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1600 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1744 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1200 + i32.load + call_indirect (type $i32_=>_i32) + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1952 + i32.store offset=4 + local.get $0 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 11 i32.const 1 - i32.shl - i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $0 - i32.const 10 - i32.div_u - local.tee $0 - br_if $do-continue|0 + call $~lib/builtins/abort + unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2004 + i32.lt_s if - local.get $1 - i32.const 45 - i32.store16 + i32.const 18416 + i32.const 18464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $1 ) (func $~lib/string/String.__eq (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 local.get $0 - i32.const 1552 + i32.const 1952 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -241,21 +1880,34 @@ local.get $0 i32.eqz br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - i32.const 1548 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1952 + i32.store + local.get $1 + i32.const 1948 i32.load i32.const 1 i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1952 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) - i32.const 1552 + i32.const 1952 local.set $3 local.get $0 local.tee $2 @@ -264,7 +1916,6 @@ i32.eqz i32.const 0 local.get $1 - local.tee $0 i32.const 4 i32.ge_u select @@ -284,10 +1935,10 @@ i32.const 8 i32.add local.set $3 - local.get $0 + local.get $1 i32.const 4 i32.sub - local.tee $0 + local.tee $1 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -295,23 +1946,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $1 + local.set $1 + local.get $0 if local.get $3 i32.load16_u - local.tee $1 + local.tee $4 local.get $2 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if + local.get $0 local.get $4 - local.get $1 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -328,56 +1979,130 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) - (func $~start - i32.const 2 - i32.const 1056 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.ne + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz if - i32.const 0 - i32.const 1088 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1424 + 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 $2 + select + local.tee $0 + i32.const 10 + i32.ge_u i32.const 1 - i32.const 1168 - i32.load - call_indirect (type $i32_=>_i32) - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1088 - i32.const 6 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + local.get $2 + i32.add + local.tee $3 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + loop $do-continue|0 + local.get $1 + local.get $3 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $0 + i32.const 10 + i32.div_u + local.tee $0 + br_if $do-continue|0 end - i32.const 1564 - global.set $~lib/rt/stub/offset - i32.const 0 - i32.const 1200 - i32.load - call_indirect (type $i32_=>_i32) - call $~lib/util/number/itoa32 - call $~lib/string/String.__eq - i32.eqz + local.get $2 if - i32.const 0 - i32.const 1088 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 45 + i32.store16 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 9f52ba8afe..40b2021218 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -1,34 +1,58 @@ (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 $none_=>_none (func)) - (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))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 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\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") - (data (i32.const 124) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 156) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 188) "|\00\00\00\01\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 316) "<\00\00\00\01\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 380) "\1c\00\00\00\01\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 412) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") - (data (i32.const 812) "\1c\04\00\00\01\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 1868) "\\\00\00\00\01\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 1964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\002\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\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 44) "L\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-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s\00") + (data (i32.const 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 156) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 188) "|\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 316) "<\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 380) "\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 412) "<\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 476) "<\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 544) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 576) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 604) "<\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 668) ",\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 720) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 748) "<\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 812) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 1212) "\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 2268) "\\\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 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 2400) "\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\00") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 1996)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 18820)) (export "memory" (memory $0)) (start $~start) (func $start:resolve-function-expression~anonymous|0 (param $0 i32) (result i32) @@ -101,154 +125,2308 @@ end unreachable ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 496 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 496 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 624 + i32.const 688 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 496 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc + 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 - 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.load + i32.const 3 + i32.const -1 + i32.xor + i32.and i32.add ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (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 i64) - (local $9 i64) + (local $8 i32) + (local $9 i32) (local $10 i32) (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 + 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 768 + i32.const 273 + 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 768 + i32.const 275 + 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 768 + i32.const 288 + 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 768 + 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 768 + 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 $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 768 + i32.const 224 + 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 768 + i32.const 239 + 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 768 + i32.const 240 + 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 768 + i32.const 256 + 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 768 + i32.const 381 + 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 768 + i32.const 388 + 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 768 + i32.const 401 + 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 768 + i32.const 565 + 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 + 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 + 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 496 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 432 + i32.const 768 + i32.const 462 + 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 768 + i32.const 334 + 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 768 + i32.const 347 + 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 768 + i32.const 361 + 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 768 + i32.const 500 + 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 768 + i32.const 502 + 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 + 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/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 432 + i32.const 496 + i32.const 256 + 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/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 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 i32.ge_u local.set $3 local.get $3 @@ -271,14 +2449,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 412 + i32.const 812 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 412 + i32.const 812 local.get $7 i32.const 2 i32.shl @@ -321,7 +2499,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 412 + i32.const 812 local.get $10 i32.const 2 i32.shl @@ -344,7 +2522,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 412 + i32.const 812 local.get $1 i32.const 2 i32.shl @@ -394,7 +2572,7 @@ i32.const 1 i32.shl i32.add - i32.const 832 + i32.const 1232 local.get $1 i32.wrap_i64 i32.const 255 @@ -416,7 +2594,7 @@ i32.and if local.get $0 - i32.const 832 + i32.const 1232 local.get $1 i32.wrap_i64 i32.const 6 @@ -539,7 +2717,7 @@ i32.const 1 i32.shl i32.add - i32.const 1888 + i32.const 2288 local.get $1 local.get $6 i64.and @@ -575,7 +2753,7 @@ i32.const 1 i32.shl i32.add - i32.const 1888 + i32.const 2288 local.get $1 local.get $6 local.get $4 @@ -598,160 +2776,11 @@ end end ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (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.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 - if - i32.const 208 - i32.const 336 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 400 - 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 - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 - call $~lib/rt/stub/__retain - ) (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/util/number/itoa32 ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -766,13 +2795,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -859,53 +2881,124 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 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 + 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/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1232 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2288 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/function/Function<%28i32%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%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%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/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-function-expression + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 18848 + i32.const 18896 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 local.get $1 i32.eq if i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 @@ -920,47 +3013,75 @@ end if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 - call $~lib/string/String#get:length local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.const 0 local.get $1 - i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 + i32.const 0 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:resolve-function-expression (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 2 i32.const 1 global.set $~argumentsLength @@ -995,20 +3116,15 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 576 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 720 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 i32.const 1 global.set $~argumentsLength @@ -1017,8 +3133,17 @@ call_indirect (type $i32_=>_i32) i32.const 10 call $~lib/number/I32#toString - local.tee $0 - i32.const 1984 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2384 + 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 @@ -1029,10 +3154,176 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:resolve-function-expression + (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 4 + 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 + end + if + i32.const 208 + i32.const 336 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 400 + 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 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) ) diff --git a/tests/compiler/resolve-nested.json b/tests/compiler/resolve-nested.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/resolve-nested.json +++ b/tests/compiler/resolve-nested.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/resolve-nested.optimized.wat b/tests/compiler/resolve-nested.optimized.wat index 81f64a59a7..d177ba192f 100644 --- a/tests/compiler/resolve-nested.optimized.wat +++ b/tests/compiler/resolve-nested.optimized.wat @@ -1,67 +1,1224 @@ (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_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17876)) (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.InnerClass#constructor" (func $resolve-nested/Outer.InnerClass#constructor)) (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $resolve-nested/Outer.inner)) - (export "outer" (func $resolve-nested/outer)) + (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/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17876 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (local $6 i32) + (local $7 i32) + (local $8 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 $4 + 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - local.tee $3 - i32.const 28 i32.add - local.tee $1 + 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 17888 + i32.const 0 + i32.store + i32.const 19456 + 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 17888 + 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 17888 + 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 17888 + i32.const 19460 memory.size - local.tee $4 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17876 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -69,59 +1226,383 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $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 $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) + (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 $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + unreachable + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) + (func $~stack_check + 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 + ) + (func $export:resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) + global.get $~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 - if (result i32) - local.get $0 - else + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - call $~lib/rt/stub/__new + 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 ) - (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) + (func $export:resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) + global.get $~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 - if (result i32) - local.get $0 - else + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 5 - call $~lib/rt/stub/__new + 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 ) - (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 $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 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) - nop + (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 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset + (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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index eb673ff60d..5b8f2624ad 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -1,12 +1,26 @@ (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 $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) (type $i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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) (global $resolve-nested/Outer.Inner.a (mut i32) (i32.const 0)) (global $resolve-nested/Outer.Inner.b (mut i32) (i32.const 0)) @@ -22,275 +36,2688 @@ (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/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 8)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $resolve-nested/Outer.InnerClass i32 (i32.const 4)) (global $resolve-nested/Outer.Inner.EvenInnerClass i32 (i32.const 5)) - (export "memory" (memory $0)) + (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)) (export "Outer.InnerClass" (global $resolve-nested/Outer.InnerClass)) - (export "Outer.InnerClass#constructor" (func $resolve-nested/Outer.InnerClass#constructor)) (export "Outer.Inner.EvenInnerClass" (global $resolve-nested/Outer.Inner.EvenInnerClass)) - (export "Outer.Inner.EvenInnerClass#constructor" (func $resolve-nested/Outer.Inner.EvenInnerClass#constructor)) - (export "Outer.Inner.evenInner" (func $resolve-nested/Outer.Inner.evenInner)) - (export "Outer.inner" (func $resolve-nested/Outer.inner)) - (export "outer" (func $resolve-nested/outer)) + (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/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 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 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/Object#set:prev 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) + call $~lib/rt/itcms/Object#set:next + local.get $1 local.get $0 + call $~lib/rt/itcms/Object#set:prev ) - (func $resolve-nested/Outer.InnerClass#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) local.get $0 - i32.eqz + global.get $~lib/rt/itcms/iter + i32.eq if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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 $resolve-nested/Outer.Inner.EvenInnerClass#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + 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/stub/__release (param $0 i32) - nop + (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 $resolve-nested/Outer.Inner.evenInner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/rt/itcms/Object#get:size (param $0 i32) (result i32) + i32.const 4 local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 - local.get $5 - call $~lib/rt/stub/__retain - local.set $5 + 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 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + i32.store ) - (func $resolve-nested/Outer.inner (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $3 - call $~lib/rt/stub/__retain - local.set $3 - local.get $4 - call $~lib/rt/stub/__retain - local.set $4 + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release + i32.store offset=4 ) - (func $resolve-nested/outer (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 - call $~lib/rt/stub/__release + 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 - call $~lib/rt/stub/__release + i32.load + local.set $2 + i32.const 1 + drop local.get $2 - call $~lib/rt/stub/__release - ) - (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.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 273 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 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 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 + 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.json b/tests/compiler/resolve-new.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/resolve-new.json +++ b/tests/compiler/resolve-new.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index d4df6fd549..75dcc7ed29 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -1,45 +1,1211 @@ (module (type $none_=>_none (func)) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (type $i32_i32_=>_none (func (param i32 i32))) + (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 $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))) + (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) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1468) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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-new/foo (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17860)) (export "memory" (memory $0)) (start $~start) - (func $resolve-new/Foo#constructor + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) + global.get $resolve-new/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17860 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + (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 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load local.tee $4 - i32.const 28 + 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.tee $0 - memory.size + 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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $3 + local.get $6 + i32.const 4 i32.shl - i32.const 15 + 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 1392 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 i32.add i32.const -16 i32.and - local.tee $1 - i32.gt_u + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 17872 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17860 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17860 + 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 $1 + i32.const 17860 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $1 + local.set $1 + local.get $2 + local.get $1 local.get $1 local.get $2 i32.lt_s @@ -56,31 +1222,267 @@ 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 1392 + i32.const 500 + 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 502 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $0 - global.set $~lib/rt/stub/offset + 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.store - local.get $4 + 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/__visit_members (param $0 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.tee $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=4 + i32.store + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $resolve-new/Foo#constructor + global.set $resolve-new/foo + call $resolve-new/Foo#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1476 + i32.lt_s + if + i32.const 17888 + i32.const 17936 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $resolve-new/Foo#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 3 i32.store offset=12 local.get $0 i32.const 0 i32.store offset=16 - ) - (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset - call $resolve-new/Foo#constructor - call $resolve-new/Foo#constructor + local.get $0 + 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 $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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 34332c93bb..f135c56d40 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -1,199 +1,2465 @@ (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))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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) "\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) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $resolve-new/foo (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16836)) + (global $~lib/memory/__heap_base i32 (i32.const 16836)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 - i32.const 15 + local.set $1 + local.get $1 + i32.const 65535 i32.add - i32.const 15 + 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 361 + 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/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + 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 500 + 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.set $2 + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 502 + 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 - i32.gt_u + 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 - 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 + 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 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + call $~lib/memory/memory.fill + local.get $3 + ) + (func $resolve-new/Foo#bar (param $0 i32) + nop ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-new/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $resolve-new/Foo#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $0 ) - (func $resolve-new/Foo#bar (param $0 i32) - nop + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $resolve-new/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-new/Foo $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + unreachable ) - (func $~lib/rt/stub/__release (param $0 i32) - nop + (func $~start + call $start:resolve-new + ) + (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 $start:resolve-new (local $0 i32) - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $resolve-new/Foo#constructor global.set $resolve-new/foo i32.const 0 call $resolve-new/Foo#constructor - local.tee $0 - call $resolve-new/Foo#bar + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/stub/__release + i32.store + local.get $0 + call $resolve-new/Foo#bar + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:resolve-new + (func $resolve-new/Foo#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 ) ) diff --git a/tests/compiler/resolve-propertyaccess.json b/tests/compiler/resolve-propertyaccess.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/resolve-propertyaccess.json +++ b/tests/compiler/resolve-propertyaccess.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 66d1fea927..1c9f4cca1f 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1,92 +1,1356 @@ (module (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_=>_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_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))) (memory $0 1) - (data (i32.const 1036) "|\00\00\00\01\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 1164) "<\00\00\00\01\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 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1260) "\\\00\00\00\01\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 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1388) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") - (data (i32.const 1468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 1500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\002\002") - (data (i32.const 1564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\003") - (data (i32.const 1596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\003\003") - (data (i32.const 1628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 1660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\005") - (data (i32.const 1692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\005\005") - (data (i32.const 1724) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\007") - (data (i32.const 1756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (data (i32.const 1036) "|") + (data (i32.const 1048) "\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 1164) "<") + (data (i32.const 1176) "\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 1228) "\1c") + (data (i32.const 1240) "\01\00\00\00\02\00\00\000") + (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\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\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 1756) "\1c") + (data (i32.const 1768) "\01\00\00\00\02\00\00\001") + (data (i32.const 1788) "L") + (data (i32.const 1800) "\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s") + (data (i32.const 1868) "\1c") + (data (i32.const 1880) "\01\00\00\00\04\00\00\001\001") + (data (i32.const 1900) "\1c") + (data (i32.const 1912) "\01\00\00\00\02\00\00\002") + (data (i32.const 1932) "\1c") + (data (i32.const 1944) "\01\00\00\00\04\00\00\002\002") + (data (i32.const 1964) "\1c") + (data (i32.const 1976) "\01\00\00\00\02\00\00\003") + (data (i32.const 1996) "\1c") + (data (i32.const 2008) "\01\00\00\00\04\00\00\003\003") + (data (i32.const 2028) "\1c") + (data (i32.const 2040) "\01\00\00\00\02\00\00\004") + (data (i32.const 2060) "\1c") + (data (i32.const 2072) "\01\00\00\00\02\00\00\005") + (data (i32.const 2092) "\1c") + (data (i32.const 2104) "\01\00\00\00\04\00\00\005\005") + (data (i32.const 2124) "\1c") + (data (i32.const 2136) "\01\00\00\00\02\00\00\007") + (data (i32.const 2156) "\1c") + (data (i32.const 2168) "\01\00\00\00\02\00\00\006") + (data (i32.const 2188) "\1c") + (data (i32.const 2200) "\01\00\00\00\02\00\00\008") + (data (i32.const 2224) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2252) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18644)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1680 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18644 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2224 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 2228 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 273 + 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 1616 + i32.const 275 + 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 1616 + i32.const 288 + 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.get $0 - i32.const 1073741804 - i32.gt_u + (local $8 i32) + local.get $1 + i32.eqz if + i32.const 0 + i32.const 1616 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 i32.add - local.tee $2 + 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 1616 + i32.const 224 + 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 1616 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 240 + 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 1616 + i32.const 256 + 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 1616 + i32.const 381 + 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 1616 + i32.const 388 + 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 1616 + i32.const 401 + 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 18656 + i32.const 0 + i32.store + i32.const 20224 + 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 18656 + 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 18656 + 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 18656 + i32.const 20228 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18656 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18644 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18644 + 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 $1 + i32.const 18644 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 + i32.ge_u if + i32.const 1280 + i32.const 1616 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $4 - local.get $2 + 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.tee $7 - i32.add + local.get $1 + i32.const 12 + i32.le_u + select 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 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz if - local.get $5 + 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 - local.get $3 + 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.tee $3 + local.set $3 + local.get $1 local.get $3 - local.get $5 - i32.lt_s + local.get $1 + local.get $3 + i32.gt_s select memory.grow i32.const 0 @@ -100,136 +1364,556 @@ 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 1616 + i32.const 500 + 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 1616 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT local.get $2 - global.set $~lib/rt/stub/offset - local.get $7 - i32.store - local.get $4 - i32.const 4 - i32.sub + call $~lib/rt/tlsf/allocateBlock 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~lib/util/number/itoa32 (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.get $0 - i32.eqz - if - i32.const 1248 - return - end - i32.const 0 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select - local.tee $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - 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 $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - local.get $2 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.tee $3 - local.set $4 - loop $do-continue|0 - local.get $4 - local.get $1 - i32.const 1 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $2 + select local.tee $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - i32.store16 - local.get $0 - i32.const 10 - i32.div_u + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + local.get $1 + i32.const 100 + i32.lt_u + select + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + local.get $1 + i32.const 10000000 + i32.lt_u + select + local.get $1 + i32.const 100000 + i32.lt_u + select + local.get $2 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new local.tee $0 - br_if $do-continue|0 + i32.store + loop $do-continue|0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + local.get $2 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $2 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-propertyaccess/Class + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-propertyaccess/Class $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-propertyaccess + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2260 + i32.lt_s if - local.get $3 - i32.const 45 - i32.store16 + i32.const 18672 + i32.const 18720 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $3 ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -240,13 +1924,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -255,6 +1946,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -267,7 +1964,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -287,10 +1983,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -298,23 +1994,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -331,180 +2027,325 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-propertyaccess (local $0 i32) - i32.const 1820 - global.set $~lib/rt/stub/offset + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 - call $~lib/util/number/itoa32 - i32.const 1376 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 6 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 11 - call $~lib/util/number/itoa32 - i32.const 1488 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1888 + i32.store offset=4 + local.get $0 + i32.const 1888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2 - call $~lib/util/number/itoa32 - i32.const 1520 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1920 + i32.store offset=4 + local.get $0 + i32.const 1920 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 22 - call $~lib/util/number/itoa32 - i32.const 1552 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1952 + i32.store offset=4 + local.get $0 + i32.const 1952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 3 - call $~lib/util/number/itoa32 - i32.const 1584 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1984 + i32.store offset=4 + local.get $0 + i32.const 1984 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 33 - call $~lib/util/number/itoa32 - i32.const 1616 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2016 + i32.store offset=4 + local.get $0 + i32.const 2016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 4 - call $~lib/util/number/itoa32 - i32.const 1648 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store offset=4 + local.get $0 + i32.const 2048 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 5 - call $~lib/util/number/itoa32 - i32.const 1680 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2080 + i32.store offset=4 + local.get $0 + i32.const 2080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 55 - call $~lib/util/number/itoa32 - i32.const 1712 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2112 + i32.store offset=4 + local.get $0 + i32.const 2112 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 7 - call $~lib/util/number/itoa32 - i32.const 1744 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2144 + i32.store offset=4 + local.get $0 + i32.const 2144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 4 i32.const 3 - call $~lib/rt/stub/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 6 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 i32.load - call $~lib/util/number/itoa32 - i32.const 1776 + call $~lib/number/I32#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store offset=4 + local.get $1 + i32.const 2176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 92 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 i32.const 8 - call $~lib/util/number/itoa32 - i32.const 1808 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store offset=4 + local.get $0 + i32.const 2208 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:resolve-propertyaccess + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 67e7436462..6c729de72a 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -1,40 +1,60 @@ (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 $none_=>_none (func)) - (type $i32_=>_none (func (param 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_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result 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\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \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 140) "<\00\00\00\01\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 204) "\1c\00\00\00\01\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 236) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 636) "\1c\04\00\00\01\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 1692) "\\\00\00\00\01\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 1788) "\1c\00\00\00\01\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 1820) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 1932) "\1c\00\00\00\01\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 1964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\002\002\00\00\00\00\00\00\00\00\00") - (data (i32.const 1996) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2028) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\003\003\00\00\00\00\00\00\00\00\00") - (data (i32.const 2060) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2092) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\005\005\00\00\00\00\00\00\00\00\00") - (data (i32.const 2156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2188) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "|\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 140) "<\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 204) "\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 236) "<\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 300) "<\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 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\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$\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\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 544) "\00\00\00\00\00\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\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 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 1036) "\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 2092) "\\\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 2188) "\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 2220) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\002\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00p\00r\00o\00p\00e\00r\00t\00y\00a\00c\00c\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") + (data (i32.const 2332) "\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 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\002\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\003\003\00\00\00\00\00\00\00\00\00") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\005\005\00\00\00\00\00\00\00\00\00") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2656) "\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) (global $resolve-propertyaccess/Namespace.member i32 (i32.const 1)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $resolve-propertyaccess/Namespace.lazyMember i32 (i32.const 11)) (global $resolve-propertyaccess/MergedNamespace.member i32 (i32.const 2)) @@ -44,7 +64,10 @@ (global $resolve-propertyaccess/Enum.VALUE i32 (i32.const 4)) (global $resolve-propertyaccess/Class.staticField (mut i32) (i32.const 5)) (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) - (global $~lib/memory/__heap_base i32 (i32.const 2252)) + (global $~lib/rt/__rtti_base i32 (i32.const 2656)) + (global $~lib/memory/__data_end i32 (i32.const 2692)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19076)) + (global $~lib/memory/__heap_base i32 (i32.const 19076)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -102,150 +125,2304 @@ end unreachable ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 320 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 320 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 448 + i32.const 512 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 320 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc + 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 - 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.load + i32.const 3 + i32.const -1 + i32.xor + i32.and i32.add ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (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 i64) - (local $9 i64) - (local $10 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 592 + i32.const 273 + 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 592 + i32.const 275 + 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 592 + i32.const 288 + 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 592 + 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 592 + 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 $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 592 + i32.const 224 + 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 592 + i32.const 239 + 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 592 + i32.const 240 + 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 592 + i32.const 256 + 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 592 + i32.const 381 + 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 592 + i32.const 388 + 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 592 + i32.const 401 + 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 592 + i32.const 565 + 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 + 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 + 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 320 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 256 + i32.const 592 + i32.const 462 + 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 592 + i32.const 334 + 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 592 + i32.const 347 + 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 592 + i32.const 361 + 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 592 + i32.const 500 + 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 592 + i32.const 502 + 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 + 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/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 256 + 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/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 i64) + (local $9 i64) + (local $10 i32) (local $11 i32) loop $while-continue|0 local.get $1 @@ -272,14 +2449,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 236 + i32.const 636 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 236 + i32.const 636 local.get $7 i32.const 2 i32.shl @@ -322,7 +2499,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 236 + i32.const 636 local.get $10 i32.const 2 i32.shl @@ -345,7 +2522,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 236 + i32.const 636 local.get $1 i32.const 2 i32.shl @@ -395,7 +2572,7 @@ i32.const 1 i32.shl i32.add - i32.const 656 + i32.const 1056 local.get $1 i32.wrap_i64 i32.const 255 @@ -417,7 +2594,7 @@ i32.and if local.get $0 - i32.const 656 + i32.const 1056 local.get $1 i32.wrap_i64 i32.const 6 @@ -538,221 +2715,72 @@ local.get $0 local.get $2 i32.const 1 - i32.shl - i32.add - i32.const 1712 - 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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|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 1712 - 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 - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (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.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 - if - i32.const 32 - i32.const 160 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 224 - 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 - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 + i32.shl + i32.add + i32.const 2112 + local.get $1 local.get $6 - i64.extend_i32_u + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $1 local.get $5 - call $~lib/util/number/utoa_hex_lut - else - local.get $0 - local.set $4 - local.get $4 - i64.extend_i32_u + i64.shr_u + local.set $1 local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add + i64.const 0 + i64.ne local.set $7 local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|1 + local.get $2 i32.const 1 - i32.shl + 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 - call $~lib/rt/stub/__new - local.set $3 - local.get $3 + i32.shl + i32.add + i32.const 2112 + local.get $1 + local.get $6 local.get $4 - i64.extend_i32_u - local.get $7 + 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 - call $~lib/util/number/utoa64_any_core + i64.const 0 + i64.ne + local.set $7 + local.get $7 + br_if $do-continue|1 end end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain ) (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/util/number/itoa32 ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -767,13 +2795,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -860,12 +2881,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -880,33 +2895,107 @@ end end i32.const 0 - local.set $7 + ) + (func $resolve-propertyaccess/Class.get:staticProperty (result i32) + i32.const 7 + ) + (func $resolve-propertyaccess/Class#set:instanceField (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 + local.get $1 + i32.store + ) + (func $resolve-propertyaccess/Class#get:instanceProperty (param $0 i32) (result i32) + i32.const 8 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1056 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + 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-propertyaccess/Class + 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-propertyaccess/Class $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:resolve-propertyaccess + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 19104 + i32.const 19152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 local.get $1 i32.eq if i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 @@ -921,104 +3010,107 @@ end if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 - call $~lib/string/String#get:length local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.const 0 local.get $1 - i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + i32.store offset=4 + local.get $3 + i32.const 0 local.get $2 - ) - (func $resolve-propertyaccess/Class.get:staticProperty (result i32) - i32.const 7 - ) - (func $resolve-propertyaccess/Class#constructor (param $0 i32) (result i32) - local.get $0 + call $~lib/util/string/compareImpl i32.eqz - if - i32.const 4 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 6 - i32.store - local.get $0 - ) - (func $resolve-propertyaccess/Class#get:instanceProperty (param $0 i32) (result i32) + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:resolve-propertyaccess (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 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $resolve-propertyaccess/Namespace.member i32.const 10 call $~lib/number/I32#toString - local.tee $0 - i32.const 1808 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2208 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 6 i32.const 1 call $~lib/builtins/abort @@ -1027,13 +3119,22 @@ global.get $resolve-propertyaccess/Namespace.lazyMember i32.const 10 call $~lib/number/I32#toString - local.tee $1 - i32.const 1920 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2320 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 12 i32.const 1 call $~lib/builtins/abort @@ -1042,13 +3143,22 @@ global.get $resolve-propertyaccess/MergedNamespace.member i32.const 10 call $~lib/number/I32#toString - local.tee $2 - i32.const 1952 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2352 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -1057,13 +3167,22 @@ global.get $resolve-propertyaccess/MergedNamespace.lazyMember i32.const 10 call $~lib/number/I32#toString - local.tee $3 - i32.const 1984 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2384 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 30 i32.const 1 call $~lib/builtins/abort @@ -1072,13 +3191,22 @@ global.get $resolve-propertyaccess/TypedNamespace.member i32.const 10 call $~lib/number/I32#toString - local.tee $4 - i32.const 2016 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2416 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 42 i32.const 1 call $~lib/builtins/abort @@ -1087,13 +3215,22 @@ global.get $resolve-propertyaccess/TypedNamespace.lazyMember i32.const 10 call $~lib/number/I32#toString - local.tee $5 - i32.const 2048 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2448 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 48 i32.const 1 call $~lib/builtins/abort @@ -1102,13 +3239,22 @@ global.get $resolve-propertyaccess/Enum.VALUE i32.const 10 call $~lib/number/I32#toString - local.tee $6 - i32.const 2080 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2480 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 58 i32.const 1 call $~lib/builtins/abort @@ -1117,13 +3263,22 @@ global.get $resolve-propertyaccess/Class.staticField i32.const 10 call $~lib/number/I32#toString - local.tee $7 - i32.const 2112 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2512 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 72 i32.const 1 call $~lib/builtins/abort @@ -1132,13 +3287,22 @@ global.get $resolve-propertyaccess/Class.lazyStaticField i32.const 10 call $~lib/number/I32#toString - local.tee $8 - i32.const 2144 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2544 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 78 i32.const 1 call $~lib/builtins/abort @@ -1147,81 +3311,288 @@ call $resolve-propertyaccess/Class.get:staticProperty i32.const 10 call $~lib/number/I32#toString - local.tee $9 - i32.const 2176 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2576 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 call $resolve-propertyaccess/Class#constructor - local.set $10 - local.get $10 + local.tee $0 + i32.store offset=8 + local.get $0 i32.load i32.const 10 call $~lib/number/I32#toString - local.tee $11 - i32.const 2208 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2608 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 92 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $10 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-propertyaccess/Class#get:instanceProperty i32.const 10 call $~lib/number/I32#toString - local.tee $12 - i32.const 2240 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2640 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 4 + 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 + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 224 + 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 - call $~lib/rt/stub/__release + 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/rt/stub/__release + 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 - call $~lib/rt/stub/__release + if + local.get $3 + i32.const 45 + i32.store16 + end local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release ) - (func $~start - call $start:resolve-propertyaccess + (func $resolve-propertyaccess/Class#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 6 + call $resolve-propertyaccess/Class#set:instanceField + 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/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 50ba2cde5a..a9abfec7d4 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1,52 +1,329 @@ (module (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 $none_=>_none (func)) - (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 $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_i32_i64_i32_i64_=>_i32 (func (param i64 i32 i64 i32 i64) (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(\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) "|\00\00\00\01\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 1356) "<\00\00\00\01\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 1420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1452) "\\\00\00\00\01\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 1548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1580) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 1676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 1708) ",\00\00\00\01\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 1756) ",\00\00\00\01\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 1864) "\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\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 (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 + 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.const 1 i32.sub + i32.const -4 + i32.and local.tee $2 - i32.const 1 - i32.shl 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 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 + i32.const 0 + i32.store offset=16 local.get $1 - i32.const 10 - i32.div_u + 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 - br_if $do-continue|0 - end - ) - (func $~lib/util/string/compareImpl (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 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load + i32.add + local.set $0 + local.get $2 + local.get $1 + i32.sub + local.set $1 + loop $while-continue|0 local.get $1 - i64.load - i64.eq + i32.const 32 + i32.ge_u if - local.get $3 - i32.const 8 - i32.add - local.set $3 + 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 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 + i32.const 32 i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 end end end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 256 + 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-continue|0 + local.get $1 + call $~lib/rt/itcms/step i32.sub - return + 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-continue|0 end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl i32.add - local.set $1 - br $while-continue|1 + global.set $~lib/rt/itcms/threshold end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 + i32.const 16 + i32.add + local.set $1 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 1 + i32.store offset=12 + local.get $1 + local.get $0 + i32.store offset=16 + local.get $1 + 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 $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz + local.get $2 i32.const 1 - local.get $0 - select - br_if $folding-inner0 - 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 - br_if $folding-inner0 - local.get $0 + i32.shl + i32.add local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 local.get $1 - call $~lib/rt/pure/__release - return + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 ) (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (result i32) (local $5 i32) @@ -1860,7 +1963,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add local.get $3 i32.const 65535 @@ -1895,7 +1998,7 @@ local.get $7 i32.const 2 i32.shl - i32.const 2736 + i32.const 2944 i32.add i64.load32_u local.get $9 @@ -1905,7 +2008,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1806 + i32.const 2014 i32.add local.tee $3 i32.load16_u @@ -1983,7 +2086,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add local.get $6 i32.wrap_i64 @@ -2021,7 +2124,7 @@ i32.sub i32.const 2 i32.shl - i32.const 2736 + i32.const 2944 i32.add i64.load32_u i64.mul @@ -2029,7 +2132,7 @@ local.get $5 i32.const 1 i32.shl - i32.const 1806 + i32.const 2014 i32.add local.tee $3 i32.load16_u @@ -2079,6 +2182,179 @@ i32.store16 local.get $5 ) + (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/util/number/prettify (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -2088,7 +2364,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add i32.const 3145774 i32.store @@ -2117,7 +2393,7 @@ local.get $0 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add i32.const 48 i32.store16 @@ -2131,7 +2407,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add i32.const 3145774 i32.store @@ -2151,7 +2427,7 @@ local.get $3 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add local.tee $3 i32.const 2 @@ -2185,14 +2461,14 @@ local.tee $3 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add - i32.const 1808 + i32.const 2016 local.get $0 i32.const 1 i32.shl call $~lib/memory/memory.copy - i32.const 1808 + i32.const 2016 i32.const 3014704 i32.store i32.const 2 @@ -2205,7 +2481,7 @@ local.get $1 i32.const 1 i32.shl - i32.const 1808 + i32.const 2016 i32.add i32.const 48 i32.store16 @@ -2224,10 +2500,10 @@ i32.const 1 i32.eq if (result i32) - i32.const 1810 + i32.const 2018 i32.const 101 i32.store16 - i32.const 1812 + i32.const 2020 local.get $3 i32.const 1 i32.sub @@ -2248,7 +2524,7 @@ i32.add local.tee $1 call $~lib/util/number/utoa_dec_simple - i32.const 1812 + i32.const 2020 i32.const 45 i32.const 43 local.get $0 @@ -2258,8 +2534,8 @@ i32.const 2 i32.add else - i32.const 1812 - i32.const 1810 + i32.const 2020 + i32.const 2018 local.get $0 i32.const 1 i32.shl @@ -2267,11 +2543,11 @@ i32.const 2 i32.sub call $~lib/memory/memory.copy - i32.const 1810 + i32.const 2018 i32.const 46 i32.store16 local.get $1 - i32.const 1808 + i32.const 2016 i32.add local.tee $1 i32.const 101 @@ -2325,10 +2601,10 @@ (local $5 f64) i32.const -4 global.set $~lib/util/number/_K - i32.const 2216 + i32.const 2424 i64.load global.set $~lib/util/number/_frc_pow - i32.const 2648 + i32.const 2856 i32.load16_s global.set $~lib/util/number/_exp_pow global.get $~lib/util/number/_frc_pow @@ -2437,229 +2713,367 @@ i32.const 1 i32.add ) - (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) - local.get $0 - i32.const 2 - i32.add + (func $start:resolve-ternary~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 2 + i32.add + ) + (func $resolve-ternary/g1 (param $0 i32) (result i32) + local.get $0 + i32.const 3 + i32.add + ) + (func $resolve-ternary/g2 (param $0 i32) (result i32) + local.get $0 + i32.const 4 + i32.add + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + call $start:resolve-ternary ) - (func $resolve-ternary/g1 (param $0 i32) (result i32) - local.get $0 - i32.const 3 - i32.add + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 3188 + i32.lt_s + if + i32.const 19600 + i32.const 19648 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $resolve-ternary/g2 (param $0 i32) (result i32) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 4 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $start:resolve-ternary (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 + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 call $~lib/util/number/decimalCount32 - local.tee $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - call $~lib/util/number/utoa_dec_simple + i32.const 1 local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 + call $~lib/util/number/utoa_dec_simple + 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.const 1568 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1600 + i32.const 1808 i32.const 5 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store call $~lib/util/number/dtoa_core i32.const 1 i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/rt/itcms/__new local.tee $0 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 1808 + i32.store local.get $0 + i32.const 2016 + local.get $1 call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - local.tee $0 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2800 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3008 + i32.store offset=4 + local.get $0 + i32.const 3008 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1600 + i32.const 1808 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2832 + i32.const 3040 i32.load call_indirect (type $i32_=>_i32) i32.const 2 i32.ne if i32.const 0 - i32.const 1600 + i32.const 1808 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2896 + i32.const 3104 i32.load call_indirect (type $i32_=>_i32) i32.const 4 i32.ne if i32.const 0 - i32.const 1600 + i32.const 1808 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 2864 + i32.const 3072 i32.load call_indirect (type $i32_=>_i32) i32.const 3 i32.ne if i32.const 0 - i32.const 1600 + i32.const 1808 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2832 - call $~lib/rt/pure/__release - i32.const 2896 - call $~lib/rt/pure/__release - i32.const 2864 - call $~lib/rt/pure/__release - ) - (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 $invalid - block $~lib/function/Function<%28i32%29=>i32> - 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 $~lib/function/Function<%28i32%29=>i32> $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 - local.get $0 - i32.load offset=24 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - 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 - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - 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 - call $start:resolve-ternary - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 2980 - i32.lt_u - if - return - end - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 244672fc64..9881bd5587 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -1,197 +1,582 @@ (module - (type $i32_=>_i32 (func (param i32) (result 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_=>_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 (func (param i32 i32) (result 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))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $f64_i32_=>_i32 (func (param f64 i32) (result 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) "|\00\00\00\01\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 332) "<\00\00\00\01\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 396) "\1c\00\00\00\01\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 428) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 828) "\1c\04\00\00\01\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 1884) "\\\00\00\00\01\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 1980) "\1c\00\00\00\01\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 2012) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00t\00e\00r\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 2076) "\1c\00\00\00\01\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 2108) "\1c\00\00\00\01\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 2140) ",\00\00\00\01\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 2188) ",\00\00\00\01\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 2240) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 2296) "\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\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\a8i32>#__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%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%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/function/Function<%28i32%29=>i32>~visit + return + end + unreachable + ) + (func $~start + call $start:resolve-ternary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 20032 + i32.const 20080 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + 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 $6 i32) - (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:resolve-ternary + (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 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $resolve-ternary/b if (result i32) i32.const 1 @@ -5139,13 +5635,22 @@ end i32.const 10 call $~lib/number/I32#toString - local.tee $0 - i32.const 2000 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2208 + 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 2032 + i32.const 2240 i32.const 5 i32.const 1 call $~lib/builtins/abort @@ -5159,13 +5664,22 @@ end i32.const 0 call $~lib/number/F64#toString - local.tee $1 - i32.const 3232 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3440 + 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 2032 + i32.const 2240 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -5177,12 +5691,8 @@ global.get $resolve-ternary/b if (result i32) global.get $resolve-ternary/f1 - call $~lib/rt/pure/__retain - local.tee $2 else global.get $resolve-ternary/f2 - call $~lib/rt/pure/__retain - local.tee $3 end i32.load call_indirect (type $i32_=>_i32) @@ -5191,7 +5701,7 @@ i32.eqz if i32.const 0 - i32.const 2032 + i32.const 2240 i32.const 24 i32.const 1 call $~lib/builtins/abort @@ -5202,13 +5712,9 @@ global.set $~argumentsLength global.get $resolve-ternary/b if (result i32) - i32.const 3328 - call $~lib/rt/pure/__retain - local.tee $4 + i32.const 3536 else - i32.const 3360 - call $~lib/rt/pure/__retain - local.tee $5 + i32.const 3568 end i32.load call_indirect (type $i32_=>_i32) @@ -5217,7 +5723,7 @@ i32.eqz if i32.const 0 - i32.const 2032 + i32.const 2240 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -5229,12 +5735,8 @@ global.get $resolve-ternary/b if (result i32) global.get $resolve-ternary/f2 - call $~lib/rt/pure/__retain - local.tee $6 else - i32.const 3360 - call $~lib/rt/pure/__retain - local.tee $7 + i32.const 3568 end i32.load call_indirect (type $i32_=>_i32) @@ -5243,213 +5745,265 @@ i32.eqz if i32.const 0 - i32.const 2032 + i32.const 2240 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result 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 + (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 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz + 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 if - i32.const 0 - i32.const 96 - i32.const 122 - i32.const 14 + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $0 + i32.eqz + if + i32.const 224 + 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 - i32.const 1 + if + i32.const 0 + local.get $0 + i32.sub + local.set $0 + end + local.get $1 + i32.const 10 i32.eq if local.get $0 - i32.const 20 + 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 - call $~lib/rt/__visit_members - i32.const 1 - drop + i32.shl i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $7 local.get $0 - call $~lib/rt/pure/finalize - else + local.set $6 + local.get $4 + local.set $5 + i32.const 0 i32.const 1 + i32.ge_s drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz + 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 96 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 1 - drop - 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 - ) - (func $~start - call $start:resolve-ternary - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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 - i32.eqz + local.get $2 if - i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 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 + 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/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa (param $0 f64) (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 - local.tee $2 + f64.const 0 + f64.eq if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 2304 + 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 - ) - (func $~lib/function/Function<%28i32%29=>i32>#__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<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/function/Function<%28i32%29=>i32> - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28i32%29=>i32> $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 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $0 + local.get $0 + f64.ne + if + i32.const 2336 + 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 2368 + i32.const 2416 local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%29=>i32>~visit + 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 - unreachable + i32.const 2448 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 2448 + local.get $1 + call $~lib/memory/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 ) ) diff --git a/tests/compiler/resolve-unary.json b/tests/compiler/resolve-unary.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/resolve-unary.json +++ b/tests/compiler/resolve-unary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index da0326a777..37ba8f788e 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1,240 +1,1942 @@ (module (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_=>_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_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))) (memory $0 1) - (data (i32.const 1036) "|\00\00\00\01\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 1164) "<\00\00\00\01\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 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 1260) "\\\00\00\00\01\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 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 1388) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") - (data (i32.const 1452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 1516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 1548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 1580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\002") - (data (i32.const 1612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 1644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 1676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00!") - (data (i32.const 1708) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00~") - (data (i32.const 1740) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00i") - (data (i32.const 1772) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i") - (data (i32.const 1804) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+") - (data (i32.const 1836) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (data (i32.const 1036) "|") + (data (i32.const 1048) "\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 1164) "<") + (data (i32.const 1176) "\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 1228) "\1c") + (data (i32.const 1240) "\01\00\00\00\02\00\00\000") + (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\00H\00\00\000\001\002\003\004\005\006\007\008\009\00a\00b\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 1756) "\1c") + (data (i32.const 1768) "\01\00\00\00\04\00\00\00-\001") + (data (i32.const 1788) "<") + (data (i32.const 1800) "\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s") + (data (i32.const 1852) "\1c") + (data (i32.const 1864) "\01\00\00\00\02\00\00\001") + (data (i32.const 1884) "\1c") + (data (i32.const 1896) "\01\00\00\00\02\00\00\002") + (data (i32.const 1916) "\1c") + (data (i32.const 1928) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 1948) "\1c") + (data (i32.const 1960) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 1980) "\1c") + (data (i32.const 1992) "\01\00\00\00\04\00\00\00-\002") + (data (i32.const 2012) "\1c") + (data (i32.const 2024) "\01\00\00\00\02\00\00\00+") + (data (i32.const 2044) "\1c") + (data (i32.const 2056) "\01\00\00\00\02\00\00\00-") + (data (i32.const 2076) "\1c") + (data (i32.const 2088) "\01\00\00\00\02\00\00\00!") + (data (i32.const 2108) "\1c") + (data (i32.const 2120) "\01\00\00\00\02\00\00\00~") + (data (i32.const 2140) "\1c") + (data (i32.const 2152) "\01\00\00\00\06\00\00\00+\00+\00i") + (data (i32.const 2172) "\1c") + (data (i32.const 2184) "\01\00\00\00\06\00\00\00-\00-\00i") + (data (i32.const 2204) "\1c") + (data (i32.const 2216) "\01\00\00\00\06\00\00\00i\00+\00+") + (data (i32.const 2236) "\1c") + (data (i32.const 2248) "\01\00\00\00\06\00\00\00i\00-\00-") + (data (i32.const 2272) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2300) " \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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-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)) + (global $resolve-unary/bar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18700)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1073741804 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $resolve-unary/foo + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.get $resolve-unary/bar + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit 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.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1680 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 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 + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 i32.and - local.tee $3 - i32.gt_u + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $5 - local.get $2 - local.get $3 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 i32.and - 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 + local.tee $1 + i32.eqz if - local.get $3 - memory.grow i32.const 0 - i32.lt_s + local.get $0 + i32.const 18700 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz if + i32.const 0 + i32.const 1344 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort unreachable end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1344 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next 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 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2272 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 2276 + 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 + call $~lib/rt/itcms/Object#linkTo ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 i32.eqz if - i32.const 1248 return end - i32.const 0 + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 i32.sub - local.get $0 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select local.tee $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u + i32.load offset=4 i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 273 + 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 - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $0 - i32.const 100000000 + i32.const 0 + local.get $2 + i32.const 12 i32.ge_u - i32.add - local.get $0 - i32.const 10000000 - i32.lt_u select - local.get $0 - i32.const 100000 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 275 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 i32.lt_u - select + 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.add - local.tee $1 - i32.const 1 + 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 1616 + i32.const 288 + 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 1616 + i32.const 201 + 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 1616 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.tee $2 i32.const 1 - call $~lib/rt/stub/__new + 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 1616 + i32.const 224 + 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 1616 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1616 + i32.const 240 + 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 1616 + i32.const 256 + 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 - loop $do-continue|0 + 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.const 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 1616 + i32.const 381 + 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 1616 + i32.const 388 + 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 1616 + i32.const 401 + 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 18704 + i32.const 0 + i32.store + i32.const 20272 + 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 18704 + 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 18704 + 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 18704 + i32.const 20276 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18704 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18700 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1344 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18700 + 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 $1 + i32.const 18700 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1616 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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.ge_u + if + i32.const 1280 + i32.const 1616 + i32.const 462 + i32.const 30 + 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 $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 1616 + i32.const 500 + 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 1616 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1616 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1280 + i32.const 1344 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/number/I32#toString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/itoa32 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1248 + local.set $0 + br $__inlined_func$~lib/util/number/itoa32 + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $2 + select local.tee $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl i32.add - local.get $0 - i32.const 10 - i32.rem_u - i32.const 48 + local.get $1 + i32.const 10000 + i32.ge_u + i32.const 3 i32.add - i32.store16 - local.get $0 - i32.const 10 - i32.div_u + local.get $1 + i32.const 1000 + i32.ge_u + i32.add + local.get $1 + i32.const 100 + i32.lt_u + select + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + local.get $1 + i32.const 10000000 + i32.lt_u + select + local.get $1 + i32.const 100000 + i32.lt_u + select + local.get $2 + i32.add + local.tee $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new local.tee $0 - br_if $do-continue|0 + i32.store + loop $do-continue|0 + local.get $0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + local.get $2 + if + local.get $0 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $2 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $resolve-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable + ) + (func $~start + call $start:resolve-unary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2316 + i32.lt_s if - local.get $3 - i32.const 45 - i32.store16 + i32.const 18720 + i32.const 18768 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $3 ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -245,13 +1947,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -260,6 +1969,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -272,7 +1987,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -292,10 +2006,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -303,23 +2017,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -336,36 +2050,81 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:resolve-unary (local $0 i32) - i32.const 1868 - global.set $~lib/rt/stub/offset + 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 + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const -1 - call $~lib/util/number/itoa32 - i32.const 1376 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.store offset=4 + local.get $0 + i32.const 1776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 2 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1 - call $~lib/util/number/itoa32 - i32.const 1472 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=4 + local.get $0 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -376,13 +2135,21 @@ i32.add global.set $resolve-unary/a global.get $resolve-unary/a - call $~lib/util/number/itoa32 - i32.const 1504 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + local.get $0 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -393,43 +2160,65 @@ i32.sub global.set $resolve-unary/a global.get $resolve-unary/a - call $~lib/util/number/itoa32 - i32.const 1472 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=4 + local.get $0 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1568 - i32.const 1536 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.const 1936 global.get $resolve-unary/a select - i32.const 1568 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + i32.const 1968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1536 - i32.const 1568 + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.const 1968 global.get $resolve-unary/a select - i32.const 1536 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + local.get $0 + i32.const 1936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -438,13 +2227,21 @@ global.get $resolve-unary/a i32.const -1 i32.xor - call $~lib/util/number/itoa32 - i32.const 1600 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=4 + local.get $0 + i32.const 2000 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 33 i32.const 1 call $~lib/builtins/abort @@ -456,13 +2253,21 @@ i32.add global.set $resolve-unary/b local.get $0 - call $~lib/util/number/itoa32 - i32.const 1472 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=4 + local.get $0 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 41 i32.const 1 call $~lib/builtins/abort @@ -474,152 +2279,357 @@ i32.sub global.set $resolve-unary/b local.get $0 - call $~lib/util/number/itoa32 - i32.const 1504 + call $~lib/number/I32#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + local.get $0 + i32.const 1904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 - call $~lib/rt/stub/__new + 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 $resolve-unary/foo - i32.const 1632 - i32.const 1632 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=4 + i32.const 2032 + i32.const 2032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1664 - i32.const 1664 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store offset=4 + i32.const 2064 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1696 - i32.const 1696 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store + local.get $0 + global.get $resolve-unary/foo + i32.ne + if + i32.const 0 + i32.const 1808 + i32.const 101 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store offset=4 + local.get $0 + global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + local.tee $0 + i32.store + local.get $0 + global.get $resolve-unary/foo + i32.ne + if + i32.const 0 + i32.const 1808 + i32.const 106 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 2096 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1728 - i32.const 1728 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/foo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2128 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2128 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2128 + i32.store offset=4 + i32.const 2128 + i32.const 2128 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/foo local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 global.get $resolve-unary/foo i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/foo local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 global.set $resolve-unary/foo + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 global.get $resolve-unary/foo i32.ne if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 4 - call $~lib/rt/stub/__new - drop - i32.const 1760 - i32.const 1760 + 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 $resolve-unary/bar + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=4 + i32.const 2160 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1792 - i32.const 1792 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store offset=4 + i32.const 2192 + i32.const 2192 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1824 - i32.const 1824 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2224 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2224 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2224 + i32.store offset=4 + i32.const 2224 + i32.const 2224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1856 - i32.const 1856 + global.get $~lib/memory/__stack_pointer + global.get $resolve-unary/bar + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 2256 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2256 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2256 + i32.store offset=4 + i32.const 2256 + i32.const 2256 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1408 + i32.const 1808 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:resolve-unary + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 43280eb31f..ab01ba1a2b 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -1,46 +1,70 @@ (module (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 (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_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i64_i32_=>_i32 (func (param i64 i32) (result 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\00d\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00(\00)\00 \00r\00a\00d\00i\00x\00 \00a\00r\00g\00u\00m\00e\00n\00t\00 \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 140) "<\00\00\00\01\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 204) "\1c\00\00\00\01\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 236) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 636) "\1c\04\00\00\01\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 1692) "\\\00\00\00\01\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 1788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 1820) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00e\00s\00o\00l\00v\00e\00-\00u\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1884) "\1c\00\00\00\01\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 1916) "\1c\00\00\00\01\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 1948) "\1c\00\00\00\01\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 1980) "\1c\00\00\00\01\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 2012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\002\00\00\00\00\00\00\00\00\00") - (data (i32.const 2044) "\1c\00\00\00\01\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") - (data (i32.const 2076) "\1c\00\00\00\01\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") - (data (i32.const 2108) "\1c\00\00\00\01\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") - (data (i32.const 2140) "\1c\00\00\00\01\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") - (data (i32.const 2172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00i\00\00\00\00\00\00\00") - (data (i32.const 2204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00") - (data (i32.const 2236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00") - (data (i32.const 2268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") + (data (i32.const 12) "|\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 140) "<\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 204) "\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 236) "<\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 300) "<\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 368) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 400) "\00\00\00\00\00\00\00\00\00\00\00\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$\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\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 544) "\00\00\00\00\00\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\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 636) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 1036) "\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 2092) "\\\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 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") + (data (i32.const 2220) "<\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-\00u\00n\00a\00r\00y\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2284) "\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 2316) "\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 2348) "\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 2380) "\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 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\002\00\00\00\00\00\00\00\00\00") + (data (i32.const 2444) "\1c\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") + (data (i32.const 2476) "\1c\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") + (data (i32.const 2508) "\1c\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") + (data (i32.const 2540) "\1c\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") + (data (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00i\00\00\00\00\00\00\00") + (data (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00i\00\00\00\00\00\00\00") + (data (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00+\00+\00\00\00\00\00\00\00") + (data (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00i\00-\00-\00\00\00\00\00\00\00") + (data (i32.const 2704) "\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) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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)) (global $resolve-unary/bar (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 2300)) + (global $~lib/rt/__rtti_base i32 (i32.const 2704)) + (global $~lib/memory/__data_end i32 (i32.const 2748)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19132)) + (global $~lib/memory/__heap_base i32 (i32.const 19132)) (export "memory" (memory $0)) (start $~start) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -98,155 +122,2309 @@ end unreachable ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 320 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 320 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 448 + i32.const 512 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 320 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc + 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 - 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.load + i32.const 3 + i32.const -1 + i32.xor + i32.and i32.add ) - (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (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 i64) - (local $9 i64) + (local $8 i32) + (local $9 i32) (local $10 i32) (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u + 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 592 + i32.const 273 + 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 592 + i32.const 275 + 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 592 + i32.const 288 + 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 592 + 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 592 + 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 $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 592 + i32.const 224 + 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 592 + i32.const 239 + 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 592 + i32.const 240 + 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 592 + i32.const 256 + 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 592 + i32.const 381 + 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 592 + i32.const 388 + 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 592 + i32.const 401 + 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 592 + i32.const 565 + 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 + 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 + 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 320 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 256 + i32.const 592 + i32.const 462 + 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 592 + i32.const 334 + 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 592 + i32.const 347 + 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 592 + i32.const 361 + 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 592 + i32.const 500 + 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 592 + i32.const 502 + 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 + 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/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 256 + 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/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 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u local.set $3 local.get $3 if @@ -268,14 +2446,14 @@ i32.const 100 i32.rem_u local.set $7 - i32.const 236 + i32.const 636 local.get $6 i32.const 2 i32.shl i32.add i64.load32_u local.set $8 - i32.const 236 + i32.const 636 local.get $7 i32.const 2 i32.shl @@ -318,7 +2496,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 236 + i32.const 636 local.get $10 i32.const 2 i32.shl @@ -341,7 +2519,7 @@ i32.const 2 i32.sub local.set $2 - i32.const 236 + i32.const 636 local.get $1 i32.const 2 i32.shl @@ -391,7 +2569,7 @@ i32.const 1 i32.shl i32.add - i32.const 656 + i32.const 1056 local.get $1 i32.wrap_i64 i32.const 255 @@ -413,7 +2591,7 @@ i32.and if local.get $0 - i32.const 656 + i32.const 1056 local.get $1 i32.wrap_i64 i32.const 6 @@ -536,7 +2714,7 @@ i32.const 1 i32.shl i32.add - i32.const 1712 + i32.const 2112 local.get $1 local.get $6 i64.and @@ -561,194 +2739,45 @@ loop $do-continue|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 1712 - 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 - local.set $7 - local.get $7 - br_if $do-continue|1 - end - end - ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (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.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 - if - i32.const 32 - i32.const 160 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 224 - 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 - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - 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 + 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.const 1 - call $~lib/rt/stub/__new - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 + i32.add + i32.const 2112 + local.get $1 + local.get $6 local.get $4 - local.set $5 - i32.const 0 + i64.mul + i64.sub + i32.wrap_i64 i32.const 1 - i32.ge_s - drop - local.get $7 + i32.shl + i32.add + i32.load16_u + i32.store16 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.set $1 local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add + i64.const 0 + i64.ne local.set $7 local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/stub/__new - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + br_if $do-continue|1 end end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/stub/__retain ) (func $~lib/number/I32#toString (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 call $~lib/util/number/itoa32 ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -763,13 +2792,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -856,12 +2878,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -876,256 +2892,281 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - 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 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 ) (func $~lib/number/Bool#toString (param $0 i32) (param $1 i32) (result i32) local.get $0 if (result i32) - i32.const 1968 + i32.const 2368 else - i32.const 2000 - end - ) - (func $resolve-unary/Foo#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 + i32.const 2400 end - local.get $0 ) (func $resolve-unary/Foo#plus (param $0 i32) (result i32) - i32.const 2064 + i32.const 2464 ) (func $~lib/string/String#toString (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#minus (param $0 i32) (result i32) - i32.const 2096 + i32.const 2496 ) (func $resolve-unary/Foo#prefix_inc (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#self (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#prefix_dec (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#not (param $0 i32) (result i32) - i32.const 2128 + i32.const 2528 ) (func $resolve-unary/Foo#bitwise_not (param $0 i32) (result i32) - i32.const 2160 + i32.const 2560 ) (func $resolve-unary/Foo#postfix_inc (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) (func $resolve-unary/Foo#postfix_dec (param $0 i32) (result i32) local.get $0 - call $~lib/rt/stub/__retain ) - (func $resolve-unary/Bar#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + (func $resolve-unary/Bar.prefix_inc (param $0 i32) (result i32) + i32.const 2592 + ) + (func $resolve-unary/Bar.prefix_dec (param $0 i32) (result i32) + i32.const 2624 + ) + (func $resolve-unary/Bar.postfix_inc (param $0 i32) (result i32) + i32.const 2656 + ) + (func $resolve-unary/Bar.postfix_dec (param $0 i32) (result i32) + i32.const 2688 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $resolve-unary/foo + local.tee $1 if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $resolve-unary/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end + i32.const 448 local.get $0 - ) - (func $resolve-unary/Bar.prefix_inc (param $0 i32) (result i32) - (local $1 i32) + call $~lib/rt/itcms/__visit + i32.const 256 local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2192 - local.set $1 + call $~lib/rt/itcms/__visit + i32.const 1056 local.get $0 - call $~lib/rt/stub/__release - local.get $1 + call $~lib/rt/itcms/__visit + i32.const 2112 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $resolve-unary/Bar.prefix_dec (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2224 - local.set $1 + 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-unary/Bar + block $resolve-unary/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $resolve-unary/Foo $resolve-unary/Bar $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 $~start + call $start:resolve-unary + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 19152 + i32.const 19200 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - call $~lib/rt/stub/__release local.get $1 - ) - (func $resolve-unary/Bar.postfix_inc (param $0 i32) (result i32) - (local $1 i32) + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2256 - local.set $1 + 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end local.get $0 - call $~lib/rt/stub/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 local.get $1 - ) - (func $resolve-unary/Bar.postfix_dec (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 2288 - local.set $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end local.get $0 - call $~lib/rt/stub/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:resolve-unary (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) - 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 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + 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 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const -1 i32.const 10 call $~lib/number/I32#toString - local.tee $0 - i32.const 1808 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2208 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 2 i32.const 1 call $~lib/builtins/abort @@ -1134,13 +3175,22 @@ i32.const 1 i32.const 10 call $~lib/number/I32#toString - local.tee $1 - i32.const 1904 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2304 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 7 i32.const 1 call $~lib/builtins/abort @@ -1153,13 +3203,22 @@ global.get $resolve-unary/a i32.const 10 call $~lib/number/I32#toString - local.tee $2 - i32.const 1936 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2336 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 13 i32.const 1 call $~lib/builtins/abort @@ -1172,13 +3231,22 @@ global.get $resolve-unary/a i32.const 10 call $~lib/number/I32#toString - local.tee $3 - i32.const 1904 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2304 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 18 i32.const 1 call $~lib/builtins/abort @@ -1188,13 +3256,22 @@ i32.eqz i32.const 0 call $~lib/number/Bool#toString - local.tee $4 - i32.const 2000 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2400 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 23 i32.const 1 call $~lib/builtins/abort @@ -1205,13 +3282,22 @@ i32.eqz i32.const 0 call $~lib/number/Bool#toString - local.tee $5 - i32.const 1968 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2368 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 28 i32.const 1 call $~lib/builtins/abort @@ -1222,53 +3308,80 @@ i32.xor i32.const 10 call $~lib/number/I32#toString - local.tee $6 - i32.const 2032 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2432 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/b - local.tee $7 + local.tee $0 i32.const 1 i32.add global.set $resolve-unary/b - local.get $7 + local.get $0 i32.const 10 call $~lib/number/I32#toString - local.tee $7 - i32.const 1904 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2304 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/b - local.tee $8 + local.tee $0 i32.const 1 i32.sub global.set $resolve-unary/b - local.get $8 + local.get $0 i32.const 10 call $~lib/number/I32#toString - local.tee $8 - i32.const 1936 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2336 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 46 i32.const 1 call $~lib/builtins/abort @@ -1278,186 +3391,248 @@ call $resolve-unary/Foo#constructor global.set $resolve-unary/foo global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Foo#plus - local.tee $9 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $10 - i32.const 2064 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2464 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Foo#minus - local.tee $11 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $12 - i32.const 2096 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2496 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $resolve-unary/Foo#prefix_inc - local.tee $13 - local.tee $14 - global.get $resolve-unary/foo - local.tee $15 - i32.ne - if - local.get $14 - call $~lib/rt/stub/__retain - local.set $14 - local.get $15 - call $~lib/rt/stub/__release - end - local.get $14 global.set $resolve-unary/foo global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $resolve-unary/Foo#self - local.tee $14 global.get $resolve-unary/foo i32.eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $resolve-unary/Foo#prefix_dec - local.tee $15 - local.tee $16 - global.get $resolve-unary/foo - local.tee $17 - i32.ne - if - local.get $16 - call $~lib/rt/stub/__retain - local.set $16 - local.get $17 - call $~lib/rt/stub/__release - end - local.get $16 global.set $resolve-unary/foo global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $resolve-unary/Foo#self - local.tee $16 global.get $resolve-unary/foo i32.eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Foo#not - local.tee $17 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $18 - i32.const 2128 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2528 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/foo + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Foo#bitwise_not - local.tee $19 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $20 - i32.const 2160 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2560 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/foo - local.tee $21 + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $resolve-unary/Foo#postfix_inc - local.tee $22 - local.tee $23 - global.get $resolve-unary/foo - local.tee $24 - i32.ne - if - local.get $23 - call $~lib/rt/stub/__retain - local.set $23 - local.get $24 - call $~lib/rt/stub/__release - end - local.get $23 global.set $resolve-unary/foo - local.get $21 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $resolve-unary/Foo#self - local.tee $21 global.get $resolve-unary/foo i32.eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/foo - local.tee $23 + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $resolve-unary/Foo#postfix_dec - local.tee $24 - local.tee $25 - global.get $resolve-unary/foo - local.tee $26 - i32.ne - if - local.get $25 - call $~lib/rt/stub/__retain - local.set $25 - local.get $26 - call $~lib/rt/stub/__release - end - local.get $25 global.set $resolve-unary/foo - local.get $23 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $resolve-unary/Foo#self - local.tee $23 global.get $resolve-unary/foo i32.eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 126 i32.const 1 call $~lib/builtins/abort @@ -1467,137 +3642,371 @@ call $resolve-unary/Bar#constructor global.set $resolve-unary/bar global.get $resolve-unary/bar + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Bar.prefix_inc - local.tee $25 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $26 - i32.const 2192 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2592 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end global.get $resolve-unary/bar + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Bar.prefix_dec - local.tee $27 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $28 - i32.const 2224 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2624 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/bar + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Bar.postfix_inc - local.tee $29 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $30 - i32.const 2256 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2656 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 161 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $resolve-unary/bar + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 call $resolve-unary/Bar.postfix_dec - local.tee $31 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String#toString - local.tee $32 - i32.const 2288 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2688 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1840 + i32.const 2240 i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/number/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 4 + 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 + end + if + i32.const 32 + i32.const 160 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 224 + 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 - call $~lib/rt/stub/__release + 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/rt/stub/__release + 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 - call $~lib/rt/stub/__release + if + local.get $3 + i32.const 45 + i32.store16 + end local.get $3 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release - local.get $17 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release - local.get $23 - call $~lib/rt/stub/__release - local.get $24 - call $~lib/rt/stub/__release - local.get $25 - call $~lib/rt/stub/__release - local.get $26 - call $~lib/rt/stub/__release - local.get $27 - call $~lib/rt/stub/__release - local.get $28 - call $~lib/rt/stub/__release - local.get $29 - call $~lib/rt/stub/__release - local.get $30 - call $~lib/rt/stub/__release - local.get $31 - call $~lib/rt/stub/__release - local.get $32 - call $~lib/rt/stub/__release ) - (func $~start - call $start:resolve-unary + (func $resolve-unary/Foo#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 $resolve-unary/Bar#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 ) ) diff --git a/tests/compiler/retain-i32.json b/tests/compiler/retain-i32.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/retain-i32.json +++ b/tests/compiler/retain-i32.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index 4e93315d2e..19b101878c 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -1,7 +1,8 @@ (module (type $none_=>_none (func)) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $~start diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index b51167edaa..bf3be84fc7 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.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))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s\00\00\00") (table $0 1 funcref) (global $~lib/builtins/i8.MAX_VALUE i32 (i32.const 127)) (global $~lib/builtins/i8.MIN_VALUE i32 (i32.const -128)) @@ -18,6 +18,9 @@ (global $retain-i32/si (mut i32) (i32.const 0)) (global $retain-i32/ui (mut i32) (i32.const 0)) (global $retain-i32/ri (mut i32) (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) (export "memory" (memory $0)) (start $~start) (func $retain-i32/test (param $0 i32) (param $1 i32) diff --git a/tests/compiler/retain-release-sanity.json b/tests/compiler/retain-release-sanity.json deleted file mode 100644 index d8f53d9b42..0000000000 --- a/tests/compiler/retain-release-sanity.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ], - "asc_rtrace": true -} \ No newline at end of file diff --git a/tests/compiler/retain-release-sanity.ts b/tests/compiler/retain-release-sanity.ts deleted file mode 100644 index 413cad7f52..0000000000 --- a/tests/compiler/retain-release-sanity.ts +++ /dev/null @@ -1,41 +0,0 @@ -{ - let arr: i32[] = new Array(3); - arr.push(123); - arr.push(123); - arr.pop(); -} -{ - let outer = new Array>(); - for (let i = 0; i < 10; ++i) { - let arr = new Array(); - for (let j = 0; j < 10; ++j) { - arr.push(""); - // outer.push(arr); - } - } -} -{ - let a = "a"; - let c = a + "b"; - c + "d"; -} - -class A { - b: B | null; -} -class B { - a: A | null; -} - -{ - let a = new A(); - let b = new B(); - a.b = b; - a.b = b; - b.a = a; - b.a = a; - a.b = b; - b.a = a; -} - -__collect(); diff --git a/tests/compiler/retain-release.json b/tests/compiler/retain-release.json deleted file mode 100644 index bf222c4d2d..0000000000 --- a/tests/compiler/retain-release.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime none", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/retain-release.ts b/tests/compiler/retain-release.ts deleted file mode 100644 index 70868e28a5..0000000000 --- a/tests/compiler/retain-release.ts +++ /dev/null @@ -1,474 +0,0 @@ -class Ref {} - -// FIXME: Comments are outdated due to various optimizations the compiler performs now. -// Instead, the tests that make sense should be moved to rc/XY - -var REF = new Ref(); - -export function returnRef(): Ref { - - // Returning a reference must retain it because it could otherwise drop to - // RC=0 before reaching the caller, for example if it was stored in a local - // with RC=1 when this local becomes released at the end of the function. See - // scope tests below. - - return /* __retain( */ REF /* ) */; -} - -export function receiveRef(): void { - - // Receiving a reference from a call must keep track of it in a temporary - // AUTORELEASE local because it has been pre-retained by the callee. This is - // required because the reference could be immediately dropped and the caller - // would otherwise not be able to release it properly. - - !/* (TEMP = */ returnRef() /* ) */; - // __release(TEMP) -} - -export function receiveRefDrop(): void { - - // A straight forward optimization here is to detect immediate drops and skip - // the temp local. - - /* __release( */ returnRef() /* ) */; -} - -export function receiveRefRetain(): void { - - // TODO: Another possible optimization is to detect that the target will - // retain on its own, skip the temp local and mark the target as AUTORELEASE, - // instead of doing: - - var a = /* __retain(TEMP = */ returnRef() /* ) */; - // __release(TEMP); - // __release(a); -} - -export function takeRef(ref: Ref): void { - - // Taking a reference as an argument must retain it while the body is - // executing because reassigning the argument could otherwise drop to RC=0, - // prematurely releasing the reference even though the caller still needs it. - // This is the same as if the caller would retain it pre-call and release it - // post-call, but from a code size perspective it makes more sense to make the - // callee handle this instead of embedding runtime calls into every single - // call. Downside is that the caller has more knowledge about the actual - // arguments, like if these must actually be retained, while the upside is - // that each function "just works" standalone. - - // __retain(ref) - // __release(ref) -} - -export function provideRef(): void { - - // Providing a reference therefore doesn't do any retains or releases but - // assumes that the callee will do this for us. The alternative of embedding - // runtime calls into the call is discussed above, and also a valid strategy - // for different reasons. It is likely that there are smart optimizations of - // this case. - - takeRef(REF); -} - -export function takeReturnRef(ref: Ref): Ref { - - // Returning a reference provided as an argument must do all of the above but - // can eliminate one set of retain/release by simply not releasing the - // reference at the end of the function and skipping the retain on return. - - // __retain(ref) - return ref; - - // What would otherwise be - // /* (T = __retain( */ ref /* )), __release(ref), T */; -} - -export function provideReceiveRef(): void { - - // Combined case of providing and receiving a reference, with no additional - // logic compared to the base cases above. - - !/* TEMP = */ takeReturnRef(REF); - // __release(TEMP) -} - -export function newRef(): void { - - // Allocating a reference must keep track of the allocation in a temporary - // AUTORELEASE local because the allocation could be dropped immediately. - // Similar to the receiveRef case, one possibile optimization here is to - // detect immediate drops. - - /* TEMP = */ new Ref(); - // __release(TEMP) -} - -var glo: Ref; - -export function assignGlobal(): void { - - // Assigning a reference to a global first retains it before releasing the - // previously stored reference. - - glo = /* __retainRelease( */ REF /* , glo) */; -} - -class Target { fld: Ref | null; } - -var TARGET = new Target(); - -export function assignField(): void { - - // Similar to the assignGlobal case, assigning a reference to a field first - // retains it before releasing the previously stored reference. - - TARGET.fld = /* __retainRelease( */ REF /* , fld) */; -} - -export function scopeBlock(): void { - - // A scoped local must retain ownership of its reference for the same reasons - // as in the takeRef case, because reassigning it could otherwise drop to RC=0 - // in a situation where the local holds a reference with RC=1, prematurely - // releasing it even if the original reference is still in use. - - { - let $0 = /* __retain( */ REF /* } */; - // __release($0) - } -} - -export function scopeBlockToUninitialized(): void { - - // Top-level variables that have not yet been initialized do not have to - // release `null` unless actually assigned a reference. Hence, such a var - // doesn't have the AUTORELEASE property initially, but immediately takes it - // as soon as it is assigned. - - var $0: Ref; // uninitialized, so no AUTORELEASE yet - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retain( */ $1 /* ) */; - // __release($1) - } - // __release($0) -} - -export function scopeBlockToInitialized(): void { - - // Top-level variables that have been initialized must retain and release - // their reference normally like in the takeRef and scopeBlock cases, for the - // same reason of not prematurely dropping to RC=0 even though the original - // reference is still in use. - - var $0: Ref = /* __retain( */ REF /* ) */; - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retainRelease( */ $1 /* , $0) */; - // __release($1) - } - // __release($0) -} - -export function scopeBlockToConditional(cond: bool): void { - - // Top-level variables that are uninitialized, but may become initialized - // conditionally, must even release `null` in the other case because the - // compiler doesn't know the outcome of the condition statically. - - var $0: Ref; - if (cond) { - $0 = /* __retain( */ REF /* ) */; // now AUTORELEASE - } - { - let $1 = /* __retain( */ REF /* } */; - $0 = /* __retainRelease( */ $1 /* , $0) */; - // __release($1) - } - // __release($0) -} - -export function scopeTopLevelUninitialized(): void { - - // Isolated case of an uninitialized top-level variable that is never - // initialized, and is thus never releasing `null`. - - var $0: Ref; -} - -export function scopeTopLevelInitialized(): void { - - // Isolated case of an initialized top-level variable that is never - // reassigned. One possible optimization here is to detect this case and - // eliminate the local with its retain/release altogether. Alternatively, a - // warning could be omitted to inform the user that this var is unnecessary, - // which I'd prefer because it hints the user at a portion of code that might - // contain other errors. - - var $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) -} - -export function scopeTopLevelConditional(cond: bool): void { - - // Isolated case of an uninitialized top-level variable that is conditionally - // assigned to, so that even `null` must be released at the end of the - // function because the compiler doesn't know the outcome of the condition - // statically. - - var $0: Ref; - if (cond) { - $0 = /* __retain( */ REF /* ) */; // now AUTORELEASE - } - // __release($0) -} - -export function scopeIf(cond: bool): void { - - // Validates that `if` scopes behave like blocks. - - if (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeIfElse(cond: bool): void { - - // Validates that `else` scopes behave like blocks. - - if (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } else { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeWhile(cond: bool): void { - - // Validates that `while` scopes behave like blocks. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeDo(cond: bool): void { - - // Validates that `do` scopes behave like blocks. - - do { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } while (cond); -} - -export function scopeFor(cond: bool): void { - - // Validates that `for` scopes behave like blocks. - - for (; cond; ) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - } -} - -export function scopeForComplex(cond: bool): void { - - // Validates that complex `for` scopes behave properly - - for (let i = 0; cond; ++i) { - let $0: Ref = /* __retain( */ REF /* ) */; - for (let j = 0; cond; ++j) { - let $1: Ref = /* __retain( */ REF /* ) */; - if (cond) { - let $2: Ref = /* __retain( */ REF /* ) */; - // __release($2) - // __release($1) - continue; - } - // __release($1) - } - // __release($0) - } -} - -export function scopeBreak(cond: bool): void { - - // Validates that `break` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - break; - } -} - -export function scopeBreakNested(cond: bool): void { - - // Validates that nested `break` statements terminate flows so that no - // further releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - while (cond) { - let $1: Ref = /* __retain( */ REF /* ) */; - // __release($1) - // __release($0) - break; - } - // __release($0) - } -} - -export function scopeContinue(cond: bool): void { - - // Validates that `continue` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - continue; - } -} - -export function scopeContinueNested(cond: bool): void { - - // Validates that nested `continue` statements terminate flows so that no - // further releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - while (cond) { - let $1: Ref = /* __retain( */ REF /* ) */; - // __release($1) - // __release($0) - continue; - } - // __release($0) - } -} - -export function scopeThrow(cond: bool): void { - - // Validates that `throw` statements terminate flows so that no further - // releases are performed afterwards. - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - throw new Error("error"); - } -} - -export function scopeUnreachable(cond: bool): void { - - // Unreachable instructions are different in the sense that these are unsafe - // compiler intrinsics that guarantee to have no unexpected side-effects, - // hence don't terminate flows and result in an unreachable release after the - // instruction (i.e. after the program has crashed). - - while (cond) { - let $0: Ref = /* __retain( */ REF /* ) */; - // __release($0) - unreachable(); - } -} - -// @ts-ignore: decorator -@inline -function scopeInline(): void { - - // Inlined function bodies should behave like normal scopes. - - var $0 = /* __retain( */ REF /* ) */; - // __release($0) -} - -export function callInline(): void { - - // Hosts scopeInline with no own logic. - - scopeInline(); -} - -// @ts-ignore: decorator -@inline -function takeRefInline(ref: Ref): void { - - // The takeRef case but inline. Should retain and release while alive. - - // __retain(ref) - // __release(reF) -} - -export function provideRefInline(): void { - - // The provideRef case but inline. Should do nothing to the arguments while - // hosting the inlined retain and release. - - takeRefInline(REF); -} - -// @ts-ignore: decorator -@inline -function returnRefInline(): Ref { - - // The returnRef case but inline. - - return /* __retain( */ REF /* ) */; -} - -export function receiveRefInline(): void { - - // The receiveRef case but inline. - - !/* TEMP = */ returnRefInline(); - // __release(TEMP) -} - -export function receiveRefInlineDrop(): void { - - // The receiveRefDrop case but inline. - - /* __release( */ returnRefInline() /* ) */; - - // TODO: Since we have access to both the block and the surrounding code here, - // if we can prove that the last statement of the block does a retain, we can - // eliminate it together with the receiver's release. Opt pass maybe? -} - -export function provideRefIndirect(fn: (ref: Ref) => void): void { - - // An indirect call should behave just like a direct call, that is not insert - // anything when providing a reference. - - fn(REF); -} - -export function receiveRefIndirect(fn: () => Ref): void { - - // An indirect call should behave just like a direct call, that is taking care - // of release when receiving a reference. - - !/* TEMP = */ fn(); - // __release(TEMP) -} - -export function receiveRefIndirectDrop(fn: () => Ref): void { - - // An indirect call should behave just like a direct call, that is taking care - // of release when receiving a reference. - - /* __release( */ fn() /* ) */; -} - -// TODO: Optimize more immediate drops on alloc/call, like overloads, getters -// and immediately assigning to a storage target. diff --git a/tests/compiler/retain-return.json b/tests/compiler/retain-return.json deleted file mode 100644 index 93ce9d8b22..0000000000 --- a/tests/compiler/retain-return.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime half", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/retain-return.ts b/tests/compiler/retain-return.ts deleted file mode 100644 index 952c43a46b..0000000000 --- a/tests/compiler/retain-return.ts +++ /dev/null @@ -1,54 +0,0 @@ -class Ref {} - -// Normal function - -function returnNew(): Ref { - return new Ref(); // ctor retains -} -/* __release( */ returnNew() /* ) */; -/* __release( */ returnNew() /* ) */; - -function returnLocal(): Ref { - var ref = new Ref(); - return ref; // undoes autorelease -} -/* __release( */ returnLocal() /* ) */; -/* __release( */ returnLocal() /* ) */; - -var ref = new Ref(); -function returnGlobal(): Ref { - return /* __retain( */ ref /* ) */; -} -/* __release( */ returnGlobal() /* ) */; -/* __release( */ returnGlobal() /* ) */; - -// Function expression without block - -var returnNewFnExpr = (): Ref => new Ref(); // ctor retains -/* __release( */ returnNewFnExpr() /* ) */; -/* __release( */ returnNewFnExpr() /* ) */; - -var returnLocalFnExpr = (ref: Ref): Ref => ref; // undoes autorelease -/* __release( */ returnLocalFnExpr(ref) /* ) */; -/* __release( */ returnLocalFnExpr(ref) /* ) */; - -var returnGlobalFnExpr = (): Ref => /* __retain( */ ref /* ) */; -/* __release( */ returnGlobalFnExpr() /* ) */; -/* __release( */ returnGlobalFnExpr() /* ) */; - -// Function expression with block - -var returnNewFnBlock = (): Ref => { return new Ref(); }; // ctor retains -/* __release( */ returnNewFnBlock() /* ) */; -/* __release( */ returnNewFnBlock() /* ) */; - -var returnLocalFnBlock = (): Ref => { var ref = new Ref(); return ref; }; // undoes autorelease -/* __release( */ returnLocalFnBlock() /* ) */; -/* __release( */ returnLocalFnBlock() /* ) */; - -var returnGlobalFnBlock = (): Ref => { return /* __retain( */ ref /* ) */; }; -/* __release( */ returnGlobalFnBlock() /* ) */; -/* __release( */ returnGlobalFnBlock() /* ) */; - -// unleak -ref = changetype(0); diff --git a/tests/compiler/rt/finalize.json b/tests/compiler/rt/finalize.json index 93ce9d8b22..65091e5197 100644 --- a/tests/compiler/rt/finalize.json +++ b/tests/compiler/rt/finalize.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/rt/finalize.optimized.wat b/tests/compiler/rt/finalize.optimized.wat index 8cc01785b8..4eadb37ca9 100644 --- a/tests/compiler/rt/finalize.optimized.wat +++ b/tests/compiler/rt/finalize.optimized.wat @@ -2,44 +2,248 @@ (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (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_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (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&\00\00\00~\00l\00i\00b\00/\00s\00t\00a\00t\00i\00c\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1148) "<\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 1212) "<\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 1276) "<\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 1340) ",\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 1388) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s") - (data (i32.const 1436) "<\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 1500) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e") - (data (i32.const 1548) ",\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 1600) "\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$\01\00\00\00\00\00\00\"\t") + (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\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\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) " ") + (global $rt/finalize/expect (mut i32) (i32.const 0)) + (global $rt/finalize/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $rt/finalize/expected (mut i32) (i32.const 0)) - (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) - (global $rt/finalize/expectedReadIndex (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)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1660 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -55,8 +259,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 272 + i32.const 1440 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -75,8 +279,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 274 + i32.const 1440 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -118,8 +322,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 287 + i32.const 1440 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -210,8 +414,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 200 + i32.const 1440 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -224,8 +428,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 202 + i32.const 1440 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -297,8 +501,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 223 + i32.const 1440 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -352,23 +556,23 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 238 + i32.const 1440 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1296 - i32.const 239 + i32.const 1440 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -415,8 +619,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 255 + i32.const 1440 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -485,8 +689,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 380 + i32.const 1440 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -513,8 +717,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 387 + i32.const 1440 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -541,8 +745,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 400 + i32.const 1440 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -609,10 +813,10 @@ if unreachable end - i32.const 1664 + i32.const 17920 i32.const 0 i32.store - i32.const 3232 + i32.const 19488 i32.const 0 i32.store loop $for-loop|0 @@ -623,7 +827,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1664 + i32.const 17920 i32.add i32.const 0 i32.store offset=4 @@ -641,7 +845,7 @@ i32.add i32.const 2 i32.shl - i32.const 1664 + i32.const 17920 i32.add i32.const 0 i32.store offset=96 @@ -659,110 +863,304 @@ br $for-loop|0 end end - i32.const 1664 - i32.const 3236 + i32.const 17920 + i32.const 19492 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1664 + i32.const 17920 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/free (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 + local.get $0 + i32.const 17908 i32.lt_u - select - i32.eqz if + local.get $0 i32.const 0 - i32.const 1296 - 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) + i32.store offset=4 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 + i32.const 0 + i32.store offset=8 else + global.get $~lib/rt/itcms/total local.get $0 i32.load - i32.const -1 - local.get $2 - i32.const 1 - i32.add - i32.shl + i32.const -4 i32.and - local.tee $1 - if (result i32) + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + global.get $rt/finalize/expect + local.get $0 + i32.const 20 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + local.get $0 + i32.const 4 + i32.add + local.tee $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -775,8 +1173,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 346 + i32.const 1440 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -797,42 +1195,18 @@ end end ) - (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.ge_u - if - i32.const 1168 - i32.const 1296 - i32.const 461 - i32.const 30 - 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 $2 call $~lib/rt/tlsf/searchBlock local.tee $1 i32.eqz if i32.const 4 memory.size - local.tee $1 + local.tee $2 i32.const 16 i32.shl i32.const 4 @@ -841,40 +1215,24 @@ 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.const 65563 i32.add i32.const -65536 i32.and i32.const 16 i32.shr_u - local.set $3 + local.set $1 + local.get $2 local.get $1 - local.get $3 local.get $1 - local.get $3 - i32.gt_s + local.get $2 + 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 @@ -883,7 +1241,7 @@ end end local.get $0 - local.get $1 + local.get $2 i32.const 16 i32.shl memory.size @@ -891,29 +1249,28 @@ 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 1296 - i32.const 498 + i32.const 1440 + i32.const 500 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 + i32.const 28 + i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 500 + i32.const 1440 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -923,43 +1280,27 @@ call $~lib/rt/tlsf/removeBlock 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 1296 - i32.const 360 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 + local.tee $2 i32.const -4 i32.and - local.get $2 + i32.const 28 i32.sub - local.tee $4 + local.tee $3 i32.const 16 i32.ge_u if local.get $1 local.get $2 - local.get $3 i32.const 2 i32.and + i32.const 28 i32.or i32.store - local.get $2 local.get $1 - i32.const 4 - i32.add + i32.const 32 i32.add local.tee $2 - local.get $4 + local.get $3 i32.const 4 i32.sub i32.const 1 @@ -970,7 +1311,7 @@ call $~lib/rt/tlsf/insertBlock else local.get $1 - local.get $3 + local.get $2 i32.const -2 i32.and i32.store @@ -996,1285 +1337,195 @@ end 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 1168 - i32.const 1232 - 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 1660 - 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 1232 - 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 1232 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $rt/finalize/expect (param $0 i32) - (local $1 i32) - (local $2 i32) - global.get $rt/finalize/expectedWriteIndex - global.get $rt/finalize/expected - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_s - if - i32.const 0 - i32.const 1408 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedWriteIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedWriteIndex - local.get $1 - global.get $rt/finalize/expected - local.tee $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1456 - i32.const 1104 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $0 - i32.store - ) - (func $start:rt/finalize - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 40 - i32.const 3 - call $~lib/rt/pure/__new - local.tee $0 - i32.const 40 - call $~lib/memory/memory.fill - local.get $0 - call $~lib/rt/pure/__retain - global.set $rt/finalize/expected - 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 $0 - i32.const 0 - call $~lib/memory/memory.fill - local.get $0 - local.set $1 - local.get $0 - local.get $2 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $2 - local.get $1 - i32.store - local.get $2 - local.get $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 $2 - i32.load - call $rt/finalize/expect - local.get $2 - call $rt/finalize/expect - local.get $2 - call $~lib/rt/pure/__release - global.get $rt/finalize/expectedWriteIndex - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 4 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.store - i32.const 4 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 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.tee $0 - 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 - call $rt/finalize/expect - local.get $1 - call $rt/finalize/expect - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__collect - global.get $rt/finalize/expectedWriteIndex - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - call $rt/finalize/expect - global.get $rt/finalize/expected - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end - i32.const 0 - global.set $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 59 - i32.const 1 - 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/pure/finalize (param $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 1520 - i32.const 1 - local.get $0 - i32.const 20 - i32.add - local.tee $1 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - global.get $rt/finalize/expectedReadIndex - local.tee $2 - i32.const 1 - i32.add - global.set $rt/finalize/expectedReadIndex - local.get $1 - global.get $rt/finalize/expected - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.ne - if - i32.const 0 - i32.const 1408 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - ) - (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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer 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 + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid end + return end + return 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 + i32.load + local.tee $0 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 + call $~lib/rt/itcms/__visit end + return end + return end + unreachable ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $~start + (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - 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 + global.get $~started if - i32.const 0 - i32.const 1232 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $1 i32.const 1 - i32.eq + global.set $~started + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - local.get $0 - i32.const 20 - i32.add + i32.const 17936 + i32.const 17984 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 - local.get $0 - call $~lib/rt/pure/finalize - end - else - local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1600 - i32.load - i32.gt_u - if - i32.const 1456 - i32.const 1568 - i32.const 22 - i32.const 28 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.shl - i32.const 1604 - 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 $5 - 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 1660 - i32.ge_u - 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 - i32.const 4 - i32.sub - local.set $4 - local.get $1 - i32.const 15 - i32.and - i32.eqz - i32.const 0 - local.get $1 - select - if (result i32) - local.get $4 - i32.load - i32.const 1 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1296 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - 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 $5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + 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-continue|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/pure/END - global.get $~lib/rt/pure/CUR - local.set $1 + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt end - local.get $1 local.get $0 - i32.store - local.get $1 - i32.const 4 - i32.add - global.set $~lib/rt/pure/CUR + i32.const 0 + i32.gt_s + br_if $do-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end - ) - (func $~lib/rt/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 + global.get $~lib/rt/tlsf/ROOT + i32.eqz 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 + call $~lib/rt/tlsf/initialize end - ) - (func $~lib/rt/pure/scanBlack (param $0 i32) + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 local.get $0 + 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 $0 - i32.load offset=4 - i32.const -1879048193 + i32.load + i32.const -4 i32.and - i32.store offset=4 + 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.store + global.get $~lib/memory/__stack_pointer 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) + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $1 - i32.const -2147483648 - i32.and - i32.eqz + global.set $rt/finalize/expect + global.get $~lib/rt/itcms/state i32.const 0 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - select + i32.gt_s 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 - 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) - 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 + loop $while-continue|0 + global.get $~lib/rt/itcms/state 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 - local.get $5 - call $~lib/rt/pure/finalize - else - local.get $5 - local.get $2 - i32.const 2147483647 - i32.and - i32.store offset=4 - end + call $~lib/rt/itcms/step + drop + br $while-continue|0 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 + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state 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 + call $~lib/rt/itcms/step + drop + br $while-continue|1 end end - local.get $1 - global.set $~lib/rt/pure/CUR - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:rt/finalize - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.const 1660 - i32.lt_u + 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 $rt/finalize/ran + i32.eqz 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 1232 - 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 1232 - 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 1232 - i32.const 101 - i32.const 27 + i32.const 1392 + i32.const 13 + i32.const 1 call $~lib/builtins/abort unreachable end ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $folding-inner1 - block $folding-inner0 - block $invalid - block $~lib/array/Array - block $~lib/staticarray/StaticArray - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $folding-inner0 $folding-inner0 $folding-inner1 $~lib/staticarray/StaticArray $~lib/array/Array $folding-inner1 $folding-inner1 $invalid - end - return - 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 - ) ) diff --git a/tests/compiler/rt/finalize.ts b/tests/compiler/rt/finalize.ts index 2c0568d125..f57dd6bc7c 100644 --- a/tests/compiler/rt/finalize.ts +++ b/tests/compiler/rt/finalize.ts @@ -1,59 +1,13 @@ -// Add bookkeeping - -var expected = new StaticArray(10); -var expectedWriteIndex = 0; -var expectedReadIndex = 0; - -function expect(ptr: usize): void { - assert(expectedWriteIndex < expected.length); - expected[expectedWriteIndex++] = ptr; -} - -// Implement finalization hook +var expect: usize = 0; +var ran = false; // @ts-ignore @global function __finalize(ptr: usize): void { - trace("finalize", 1, ptr); - assert(ptr == unchecked(expected[expectedReadIndex++])); + assert(ptr == expect); + ran = true; } -// Simple test with locals becoming finalized immediately - -function testSimple(): void { - var a = new Array(0); - expect(changetype(a.buffer)); - expect(changetype(a)); -} -testSimple(); -assert(expectedWriteIndex == 2); -assert(expectedReadIndex == expectedWriteIndex); - -// Cyclic test with locals becoming deferred until collected - -class Foo { - bar: Bar | null; -} -class Bar { - foo: Foo | null; -} - -function testCyclic(): void { - var foo = new Foo(); - var bar = new Bar(); - foo.bar = bar; - bar.foo = foo; - expect(changetype(bar)); - expect(changetype(foo)); -} - -testCyclic(); +class Ref {} +expect = changetype(new Ref()); __collect(); -assert(expectedWriteIndex == 4); -assert(expectedReadIndex == expectedWriteIndex); - -// Unleak bookkeeping, expecting it to become finalized as well - -expect(changetype(expected)); -expected = changetype>(0); -assert(expectedWriteIndex == 5); -assert(expectedReadIndex == expectedWriteIndex); +assert(ran); diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 6a913b3e9d..9bdd72027b 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -1,185 +1,513 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param 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_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (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))) - (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (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&\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 124) "<\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 188) "<\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 252) "<\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 316) ",\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 364) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\00") - (data (i32.const 412) "<\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 476) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00n\00a\00l\00i\00z\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 524) ",\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 576) "\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$\01\00\00\00\00\00\00\"\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (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\1c\00\00\00r\00t\00/\00f\00i\00n\00a\00l\00i\00z\00e\00.\00t\00s\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) + (global $rt/finalize/expect (mut i32) (i32.const 0)) + (global $rt/finalize/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $rt/finalize/expected (mut i32) (i32.const 0)) - (global $rt/finalize/expectedWriteIndex (mut i32) (i32.const 0)) - (global $rt/finalize/expectedReadIndex (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)) + (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)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 576)) - (global $~lib/memory/__heap_base i32 (i32.const 636)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/pure/__release (param $0 i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 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 + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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/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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 272 - i32.const 272 - i32.const 14 + i32.const 96 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 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 + 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 0 - i32.const 272 - i32.const 274 - i32.const 14 + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 28 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 272 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 + ) + (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 $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=8 - end - local.get $7 + 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 $7 - local.get $6 - i32.store offset=4 + 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 $1 local.get $0 - local.set $10 - local.get $4 - local.set $9 + 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 $rt/finalize/__finalize (param $0 i32) + local.get $0 + global.get $rt/finalize/expect + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $rt/finalize/ran + ) + (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 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 @@ -259,7 +587,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -283,8 +611,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 200 + i32.const 416 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -300,8 +628,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 202 + i32.const 416 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -354,7 +682,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -395,8 +723,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 223 + i32.const 416 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -429,7 +757,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -438,7 +766,7 @@ 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 @@ -460,8 +788,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 238 + i32.const 416 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -478,8 +806,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 239 + i32.const 416 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,8 +865,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 255 + i32.const 416 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -562,15 +890,15 @@ 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 @@ -598,7 +926,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -642,8 +970,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 380 + i32.const 416 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -685,8 +1013,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 387 + i32.const 416 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -718,8 +1046,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 400 + i32.const 416 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -756,13 +1084,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 @@ -773,7 +1101,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 @@ -800,6 +1128,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 @@ -842,7 +1172,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 @@ -930,34 +1260,366 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne 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 + i32.eqz + else + i32.const 0 end - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u - if - i32.const 144 - i32.const 272 - i32.const 461 + 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 565 + 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 1 + drop + local.get $0 + i32.const 20 + i32.add + call $rt/finalize/__finalize + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 416 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1040,8 +1702,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 333 + i32.const 416 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1105,8 +1767,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 346 + i32.const 416 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1256,8 +1918,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 360 + i32.const 416 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1282,7 +1944,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 @@ -1295,7 +1957,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 @@ -1306,7 +1968,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 @@ -1336,7 +1998,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) @@ -1365,8 +2027,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 498 + i32.const 416 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1385,8 +2047,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 500 + i32.const 416 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1414,44 +2076,15 @@ 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/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 144 - i32.const 208 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) 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) @@ -1608,2538 +2241,206 @@ 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 208 - 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 208 - 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/staticarray/StaticArray#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 83 - 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 3 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - ) - (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 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 336 - 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/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#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (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 432 - i32.const 80 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/staticarray/StaticArray#__uset - ) - (func $rt/finalize/expect (param $0 i32) - (local $1 i32) - global.get $rt/finalize/expectedWriteIndex - global.get $rt/finalize/expected - call $~lib/staticarray/StaticArray#get:length - i32.lt_s - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedWriteIndex - local.get $1 - local.get $0 - call $~lib/staticarray/StaticArray#__set - ) - (func $rt/finalize/testSimple - (local $0 i32) - i32.const 0 - i32.const 0 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - i32.load - call $rt/finalize/expect - local.get $0 - call $rt/finalize/expect - local.get $0 - call $~lib/rt/pure/__release - ) - (func $rt/finalize/Foo#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - 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 - ) - (func $rt/finalize/Bar#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 $rt/finalize/testCyclic - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - call $rt/finalize/Foo#constructor - local.set $0 - i32.const 0 - call $rt/finalize/Bar#constructor - local.set $1 - local.get $0 - local.tee $2 - local.get $1 - local.tee $3 - 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 $3 - i32.store - local.get $1 - local.tee $4 - local.get $0 - local.tee $3 - local.get $4 - i32.load - local.tee $2 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $3 - i32.store - local.get $1 - call $rt/finalize/expect - local.get $0 - call $rt/finalize/expect - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:rt/finalize - (local $0 i32) - (local $1 i32) - i32.const 0 - i32.const 10 - call $~lib/staticarray/StaticArray#constructor - global.set $rt/finalize/expected - call $rt/finalize/testSimple - global.get $rt/finalize/expectedWriteIndex - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 28 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 29 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - call $rt/finalize/testCyclic - call $~lib/rt/pure/__collect - global.get $rt/finalize/expectedWriteIndex - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 51 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 52 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expected - call $rt/finalize/expect - i32.const 0 - local.tee $0 - global.get $rt/finalize/expected - 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 - end - local.get $0 - global.set $rt/finalize/expected - global.get $rt/finalize/expectedWriteIndex - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 58 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $rt/finalize/expectedReadIndex - global.get $rt/finalize/expectedWriteIndex - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 59 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/staticarray/StaticArray#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $rt/finalize/__finalize (param $0 i32) - (local $1 i32) - i32.const 496 - i32.const 1 - local.get $0 - f64.convert_i32_u - f64.const 0 - f64.const 0 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - local.get $0 - global.get $rt/finalize/expected - global.get $rt/finalize/expectedReadIndex - local.tee $1 - i32.const 1 - i32.add - global.set $rt/finalize/expectedReadIndex - local.get $1 - call $~lib/staticarray/StaticArray#__uget - i32.eq - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 17 - 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 - i32.const 0 - drop - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/finalize (param $0 i32) - i32.const 1 - drop - local.get $0 - i32.const 20 - i32.add - call $rt/finalize/__finalize - 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 432 - i32.const 544 - 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/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/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 272 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (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 208 - 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 208 - 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 + 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 4 - i32.add - local.set $3 - br $for-loop|2 + 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 - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:rt/finalize ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u + i32.const 1073741804 + i32.ge_u if - return + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort + unreachable end - i32.const 0 - drop + 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.const 20 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 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 208 - 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 208 - 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 + 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/__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 - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 end - i32.const 1 - drop + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state i32.const 0 - i32.eqz + i32.ne + local.set $0 + local.get $0 if - i32.const 0 - i32.const 208 - i32.const 101 - i32.const 27 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold i32.const 0 drop - ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end 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 $rt/finalize/Foo~visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.tee $2 + (func $start:rt/finalize + 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 $rt/finalize/Ref#constructor + global.set $rt/finalize/expect + call $~lib/rt/itcms/__collect + global.get $rt/finalize/ran + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 368 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable end ) - (func $rt/finalize/Bar~visit (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 i32.load @@ -4147,59 +2448,82 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) block $invalid - block $rt/finalize/Bar - block $rt/finalize/Foo - block $~lib/array/Array - 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 $~lib/array/Array $rt/finalize/Foo $rt/finalize/Bar $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 + block $rt/finalize/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $rt/finalize/Ref $invalid end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray~visit return end - local.get $0 - local.get $1 - call $~lib/array/Array~visit return end local.get $0 local.get $1 - call $rt/finalize/Foo~visit + call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $rt/finalize/Bar~visit return end unreachable ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:rt/finalize + ) + (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 $rt/finalize/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 + 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 + ) ) diff --git a/tests/compiler/rt/flags.json b/tests/compiler/rt/flags.json index 97694deda8..be2492774d 100644 --- a/tests/compiler/rt/flags.json +++ b/tests/compiler/rt/flags.json @@ -3,6 +3,5 @@ "simd" ], "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index f85b0d61f9..226e38f4e9 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -4,14 +4,14 @@ (type $i32_=>_i32 (func (param 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$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1100) ",\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 1148) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") - (data (i32.const 1200) "D\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\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 ") - (data (i32.const 1660) "\02A\00\00\00\00\00\00 ") - (data (i32.const 1684) "\08A\00\00\00\00\00\00 ") - (data (i32.const 1708) "\10\t\82") - (data (i32.const 1724) "\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\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 1100) ",") + (data (i32.const 1112) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1148) ",") + (data (i32.const 1160) "\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s") + (data (i32.const 1200) "4\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1228) "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\00\00\00B\08\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\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00H\08\00\00\00\00\00\00H\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\08\04\00\00\00\00\00\00\08A\00\00\00\00\00\00\08a\00\00\00\00\00\00P\08\08\00\00\00\00\00\90\08\14\00\00\00\00\00\10\t\12\00\00\00\00\00\10\n\11\00\00\00\00\00\10\84\10\00\00\00\00\00P\08\82\00\00\00\00\00P\08\c2\00\00\00\00\00\10\c1\10\00\00\00\00\00\10\e1\10\00\00\00\00\00\10a\c2\00\00\00\00\00\10\t2") (export "memory" (memory $0)) (start $~start) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) @@ -38,285 +38,242 @@ block $folding-inner0 i32.const 3 call $~lib/rt/__typeinfo - i32.const 2145 + i32.const 2113 i32.ne br_if $folding-inner0 i32.const 4 call $~lib/rt/__typeinfo - i32.const 97 + i32.const 65 i32.ne br_if $folding-inner0 i32.const 5 call $~lib/rt/__typeinfo - i32.const 97 + i32.const 65 i32.ne br_if $folding-inner0 i32.const 6 call $~lib/rt/__typeinfo - i32.const 2209 + i32.const 2177 i32.ne br_if $folding-inner0 i32.const 7 call $~lib/rt/__typeinfo - i32.const 161 + i32.const 129 i32.ne br_if $folding-inner0 i32.const 8 call $~lib/rt/__typeinfo - i32.const 2337 + i32.const 2305 i32.ne br_if $folding-inner0 i32.const 9 call $~lib/rt/__typeinfo - i32.const 289 + i32.const 257 i32.ne br_if $folding-inner0 i32.const 10 call $~lib/rt/__typeinfo - i32.const 2593 + i32.const 2561 i32.ne br_if $folding-inner0 i32.const 11 call $~lib/rt/__typeinfo - i32.const 545 + i32.const 513 i32.ne br_if $folding-inner0 i32.const 12 call $~lib/rt/__typeinfo - i32.const 6433 + i32.const 6401 i32.ne br_if $folding-inner0 i32.const 13 call $~lib/rt/__typeinfo - i32.const 6689 + i32.const 6657 i32.ne br_if $folding-inner0 i32.const 14 call $~lib/rt/__typeinfo - i32.const 2146 + i32.const 2114 i32.ne br_if $folding-inner0 i32.const 15 call $~lib/rt/__typeinfo - i32.const 98 + i32.const 66 i32.ne br_if $folding-inner0 i32.const 16 call $~lib/rt/__typeinfo - i32.const 2210 + i32.const 2178 i32.ne br_if $folding-inner0 i32.const 17 call $~lib/rt/__typeinfo - i32.const 162 + i32.const 130 i32.ne br_if $folding-inner0 i32.const 18 call $~lib/rt/__typeinfo - i32.const 2338 + i32.const 2306 i32.ne br_if $folding-inner0 i32.const 19 call $~lib/rt/__typeinfo - i32.const 290 + i32.const 258 i32.ne br_if $folding-inner0 i32.const 20 call $~lib/rt/__typeinfo - i32.const 2594 + i32.const 2562 i32.ne br_if $folding-inner0 i32.const 21 call $~lib/rt/__typeinfo - i32.const 546 + i32.const 514 i32.ne br_if $folding-inner0 i32.const 22 call $~lib/rt/__typeinfo - i32.const 6434 + i32.const 6402 i32.ne br_if $folding-inner0 i32.const 23 call $~lib/rt/__typeinfo - i32.const 6690 + i32.const 6658 i32.ne br_if $folding-inner0 i32.const 24 call $~lib/rt/__typeinfo - i32.const 1058 + i32.const 1026 i32.ne br_if $folding-inner0 i32.const 26 call $~lib/rt/__typeinfo - i32.const 16674 + i32.const 16642 i32.ne br_if $folding-inner0 i32.const 27 call $~lib/rt/__typeinfo - i32.const 24866 + i32.const 24834 i32.ne br_if $folding-inner0 i32.const 28 call $~lib/rt/__typeinfo - i32.const 2152 + i32.const 2120 i32.ne br_if $folding-inner0 i32.const 29 call $~lib/rt/__typeinfo - i32.const 104 + i32.const 72 i32.ne br_if $folding-inner0 i32.const 30 call $~lib/rt/__typeinfo - i32.const 2216 + i32.const 2184 i32.ne br_if $folding-inner0 i32.const 31 call $~lib/rt/__typeinfo - i32.const 168 + i32.const 136 i32.ne br_if $folding-inner0 i32.const 32 call $~lib/rt/__typeinfo - i32.const 2344 + i32.const 2312 i32.ne br_if $folding-inner0 i32.const 33 call $~lib/rt/__typeinfo - i32.const 296 + i32.const 264 i32.ne br_if $folding-inner0 i32.const 34 call $~lib/rt/__typeinfo - i32.const 2600 + i32.const 2568 i32.ne br_if $folding-inner0 i32.const 35 call $~lib/rt/__typeinfo - i32.const 552 + i32.const 520 i32.ne br_if $folding-inner0 i32.const 36 call $~lib/rt/__typeinfo - i32.const 6440 + i32.const 6408 i32.ne br_if $folding-inner0 i32.const 37 call $~lib/rt/__typeinfo - i32.const 6696 + i32.const 6664 i32.ne br_if $folding-inner0 i32.const 38 call $~lib/rt/__typeinfo - i32.const 1064 + i32.const 1032 i32.ne br_if $folding-inner0 i32.const 39 call $~lib/rt/__typeinfo - i32.const 16680 + i32.const 16648 i32.ne br_if $folding-inner0 i32.const 40 call $~lib/rt/__typeinfo - i32.const 24872 + i32.const 24840 i32.ne br_if $folding-inner0 i32.const 41 call $~lib/rt/__typeinfo - i32.const 526448 + i32.const 526416 i32.ne br_if $folding-inner0 i32.const 42 call $~lib/rt/__typeinfo - i32.const 1312944 + i32.const 1312912 i32.ne br_if $folding-inner0 i32.const 43 call $~lib/rt/__typeinfo - i32.const 1182000 + i32.const 1181968 i32.ne br_if $folding-inner0 i32.const 44 call $~lib/rt/__typeinfo - i32.const 1116720 + i32.const 1116688 i32.ne br_if $folding-inner0 i32.const 45 call $~lib/rt/__typeinfo - i32.const 1082416 + i32.const 1082384 i32.ne br_if $folding-inner0 i32.const 46 call $~lib/rt/__typeinfo - i32.const 8521840 + i32.const 8521808 i32.ne br_if $folding-inner0 i32.const 47 call $~lib/rt/__typeinfo - i32.const 12716144 + i32.const 12716112 i32.ne br_if $folding-inner0 i32.const 48 call $~lib/rt/__typeinfo - i32.const 1098032 + i32.const 1098000 i32.ne br_if $folding-inner0 i32.const 49 call $~lib/rt/__typeinfo - i32.const 1106224 + i32.const 1106192 i32.ne br_if $folding-inner0 i32.const 50 call $~lib/rt/__typeinfo - i32.const 12738864 + i32.const 12738832 i32.ne br_if $folding-inner0 i32.const 51 call $~lib/rt/__typeinfo - i32.const 3279152 - i32.ne - br_if $folding-inner0 - i32.const 52 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 53 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 54 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 56 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 58 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 59 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 61 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 62 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 64 - call $~lib/rt/__typeinfo - br_if $folding-inner0 - i32.const 66 - call $~lib/rt/__typeinfo - i32.const 32 - i32.ne - br_if $folding-inner0 - i32.const 67 - call $~lib/rt/__typeinfo - i32.const 32 + i32.const 3279120 i32.ne br_if $folding-inner0 return diff --git a/tests/compiler/rt/flags.ts b/tests/compiler/rt/flags.ts index 9777acf83d..526c2ddb69 100644 --- a/tests/compiler/rt/flags.ts +++ b/tests/compiler/rt/flags.ts @@ -12,136 +12,59 @@ function test(flags: TypeinfoFlags): void { // structure flags -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_0); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_1); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test(TypeinfoFlags.ARRAYBUFFERVIEW | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); class Ref {} const VALUE_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.VALUE_ALIGN_2 : TypeinfoFlags.VALUE_ALIGN_3; const KEY_ALIGN_REF = sizeof() == 4 ? TypeinfoFlags.KEY_ALIGN_2 : TypeinfoFlags.KEY_ALIGN_3; -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); -test>(TypeinfoFlags.ARRAY | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); - -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_0); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_1); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); -test>(TypeinfoFlags.SET | TypeinfoFlags.ACYCLIC | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); - -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_4 | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_3 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_1 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_4); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | KEY_ALIGN_REF | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC |KEY_ALIGN_REF | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | KEY_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); -test>(TypeinfoFlags.MAP | TypeinfoFlags.ACYCLIC | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.KEY_FLOAT | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); - -// cycle detection - -class NoCycle { - a: i32; -} - -test(TypeinfoFlags.ACYCLIC); - -class DirectCycle { - a: DirectCycle; -} - -test(TypeinfoFlags.NONE); - -class IndirectCycle { - a: IndirectCycleBack; -} -class IndirectCycleBack { - a: IndirectCycle; -} - -test(TypeinfoFlags.NONE); - -// array - -class IndirectCycleArray { - a: Array; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleArray { - a: IndirectCycleArray; -} - -test(TypeinfoFlags.ACYCLIC); - -// set - -class IndirectCycleSet { - a: Set; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleSet { - a: IndirectCycleSet; -} - -test(TypeinfoFlags.ACYCLIC); - -// map - -class IndirectCycleMapKey { - a: Map; -} - -test(TypeinfoFlags.NONE); - -class IndirectCycleMapValue { - a: Map; -} - -test(TypeinfoFlags.NONE); - -class InnerCycleMapKey { - a: IndirectCycleMapKey; -} - -test(TypeinfoFlags.ACYCLIC); - -class InnerCycleMapValue { - a: IndirectCycleMapValue; -} - -test(TypeinfoFlags.ACYCLIC); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_0); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_1); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.ARRAY | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.ARRAY | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.ARRAY | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); + +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_0); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_1); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED | TypeinfoFlags.VALUE_FLOAT); +test>(TypeinfoFlags.SET | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.SET | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_MANAGED); +test>(TypeinfoFlags.SET | VALUE_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED); + +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_4 | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_3 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_1 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_1 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_3 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_ALIGN_4); +test>(TypeinfoFlags.MAP | KEY_ALIGN_REF | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | KEY_ALIGN_REF | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | TypeinfoFlags.VALUE_ALIGN_0 | TypeinfoFlags.VALUE_SIGNED); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_0 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_NULLABLE | TypeinfoFlags.KEY_MANAGED | KEY_ALIGN_REF | TypeinfoFlags.VALUE_NULLABLE | TypeinfoFlags.VALUE_MANAGED | VALUE_ALIGN_REF); +test>(TypeinfoFlags.MAP | TypeinfoFlags.KEY_ALIGN_2 | TypeinfoFlags.KEY_SIGNED | TypeinfoFlags.KEY_FLOAT | TypeinfoFlags.VALUE_ALIGN_2 | TypeinfoFlags.VALUE_SIGNED); diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index 68f8d7be5d..2080d47cc3 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -5,14 +5,17 @@ (type $i32_=>_i32 (func (param i32) (result 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\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 76) ",\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 124) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") - (data (i32.const 176) "D\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\a1\08\00\00\02\00\00\00\a1\00\00\00\02\00\00\00!\t\00\00\02\00\00\00!\01\00\00\02\00\00\00!\n\00\00\02\00\00\00!\02\00\00\02\00\00\00!\19\00\00\02\00\00\00!\1a\00\00\02\00\00\00b\08\00\00\00\00\00\00b\00\00\00\00\00\00\00\a2\08\00\00\00\00\00\00\a2\00\00\00\00\00\00\00\"\t\00\00\00\00\00\00\"\01\00\00\00\00\00\00\"\n\00\00\00\00\00\00\"\02\00\00\00\00\00\00\"\19\00\00\00\00\00\00\"\1a\00\00\00\00\00\00\"\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\"A\00\00\00\00\00\00\"a\00\00\00\00\00\00h\08\00\00\00\00\00\00h\00\00\00\00\00\00\00\a8\08\00\00\00\00\00\00\a8\00\00\00\00\00\00\00(\t\00\00\00\00\00\00(\01\00\00\00\00\00\00(\n\00\00\00\00\00\00(\02\00\00\00\00\00\00(\19\00\00\00\00\00\00(\1a\00\00\00\00\00\00(\04\00\00\00\00\00\00(A\00\00\00\00\00\00(a\00\00\00\00\00\00p\08\08\00\00\00\00\00\b0\08\14\00\00\00\00\000\t\12\00\00\00\00\000\n\11\00\00\00\00\000\84\10\00\00\00\00\00p\08\82\00\00\00\00\00p\08\c2\00\00\00\00\000\c1\10\00\00\00\00\000\e1\10\00\00\00\00\000a\c2\00\00\00\00\000\t2\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\08A\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\t\82\00\00\00\00\00\00\00\00\00\00\00\00\00\10A\12\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00") + (data (i32.const 12) "<\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 76) ",\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 124) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00r\00t\00/\00f\00l\00a\00g\00s\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 176) "4\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\00B\08\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\t\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02\00\00\00\00\00\00\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02\04\00\00\00\00\00\00 \00\00\00\00\00\00\00\02A\00\00\00\00\00\00\02a\00\00\00\00\00\00H\08\00\00\00\00\00\00H\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\08\04\00\00\00\00\00\00\08A\00\00\00\00\00\00\08a\00\00\00\00\00\00P\08\08\00\00\00\00\00\90\08\14\00\00\00\00\00\10\t\12\00\00\00\00\00\10\n\11\00\00\00\00\00\10\84\10\00\00\00\00\00P\08\82\00\00\00\00\00P\08\c2\00\00\00\00\00\10\c1\10\00\00\00\00\00\10\e1\10\00\00\00\00\00\10a\c2\00\00\00\00\00\10\t2\00\00\00\00\00") (table $0 1 funcref) (global $rt/flags/VALUE_ALIGN_REF i32 (i32.const 256)) (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 131072)) (global $~lib/rt/__rtti_base i32 (i32.const 176)) + (global $~lib/memory/__data_end i32 (i32.const 596)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16980)) + (global $~lib/memory/__heap_base i32 (i32.const 16980)) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/__typeinfo (param $0 i32) (result i32) @@ -760,237 +763,52 @@ unreachable end ) - (func $rt/flags/test (param $0 i32) - i32.const 52 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 53 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 54 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 56 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 58 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 59 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 61 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 62 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 64 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 66 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) - (func $rt/flags/test (param $0 i32) - i32.const 67 - call $~lib/rt/__typeinfo - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 6 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - ) (func $start:rt/flags i32.const 1 - i32.const 32 - i32.or i32.const 64 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/typedarray/Int8Array> i32.const 1 - i32.const 32 - i32.or i32.const 64 i32.or call $rt/flags/test<~lib/typedarray/Uint8Array> i32.const 1 - i32.const 32 - i32.or i32.const 64 i32.or call $rt/flags/test<~lib/typedarray/Uint8ClampedArray> i32.const 1 - i32.const 32 - i32.or i32.const 128 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/typedarray/Int16Array> i32.const 1 - i32.const 32 - i32.or i32.const 128 i32.or call $rt/flags/test<~lib/typedarray/Uint16Array> i32.const 1 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/typedarray/Int32Array> i32.const 1 - i32.const 32 - i32.or i32.const 256 i32.or call $rt/flags/test<~lib/typedarray/Uint32Array> i32.const 1 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/typedarray/Int64Array> i32.const 1 - i32.const 32 - i32.or i32.const 512 i32.or call $rt/flags/test<~lib/typedarray/Uint64Array> i32.const 1 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 @@ -999,8 +817,6 @@ i32.or call $rt/flags/test<~lib/typedarray/Float32Array> i32.const 1 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 @@ -1009,64 +825,46 @@ i32.or call $rt/flags/test<~lib/typedarray/Float64Array> i32.const 2 - i32.const 32 - i32.or i32.const 64 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 64 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 128 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 128 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 256 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 512 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 @@ -1075,8 +873,6 @@ i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 @@ -1085,22 +881,16 @@ i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or i32.const 1024 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or global.get $rt/flags/VALUE_ALIGN_REF i32.or i32.const 16384 i32.or call $rt/flags/test<~lib/array/Array> i32.const 2 - i32.const 32 - i32.or global.get $rt/flags/VALUE_ALIGN_REF i32.or i32.const 8192 @@ -1109,64 +899,46 @@ i32.or call $rt/flags/test<~lib/array/Array> i32.const 8 - i32.const 32 - i32.or i32.const 64 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 64 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 128 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 128 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 256 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 512 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 256 i32.or i32.const 2048 @@ -1175,8 +947,6 @@ i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 512 i32.or i32.const 2048 @@ -1185,22 +955,16 @@ i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or i32.const 1024 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or global.get $rt/flags/VALUE_ALIGN_REF i32.or i32.const 16384 i32.or call $rt/flags/test<~lib/set/Set> i32.const 8 - i32.const 32 - i32.or global.get $rt/flags/VALUE_ALIGN_REF i32.or i32.const 8192 @@ -1209,8 +973,6 @@ i32.or call $rt/flags/test<~lib/set/Set> i32.const 16 - i32.const 32 - i32.or i32.const 524288 i32.or i32.const 64 @@ -1219,8 +981,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 262144 i32.or i32.const 1048576 @@ -1231,8 +991,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 131072 i32.or i32.const 1048576 @@ -1243,8 +1001,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 65536 i32.or i32.const 1048576 @@ -1255,8 +1011,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 32768 i32.or i32.const 1048576 @@ -1265,8 +1019,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or global.get $rt/flags/KEY_ALIGN_REF i32.or i32.const 8388608 @@ -1277,8 +1029,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or global.get $rt/flags/KEY_ALIGN_REF i32.or i32.const 4194304 @@ -1291,8 +1041,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 32768 i32.or i32.const 1048576 @@ -1303,8 +1051,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 32768 i32.or i32.const 1048576 @@ -1317,8 +1063,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 4194304 i32.or i32.const 8388608 @@ -1333,8 +1077,6 @@ i32.or call $rt/flags/test<~lib/map/Map> i32.const 16 - i32.const 32 - i32.or i32.const 131072 i32.or i32.const 1048576 @@ -1346,28 +1088,6 @@ i32.const 2048 i32.or call $rt/flags/test<~lib/map/Map> - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 0 - call $rt/flags/test - i32.const 32 - call $rt/flags/test - i32.const 32 - call $rt/flags/test ) (func $~start call $start:rt/flags diff --git a/tests/compiler/rt/ids.json b/tests/compiler/rt/ids.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/rt/ids.json +++ b/tests/compiler/rt/ids.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/rt/ids.untouched.wat b/tests/compiler/rt/ids.untouched.wat index f066c481fb..296f47bd89 100644 --- a/tests/compiler/rt/ids.untouched.wat +++ b/tests/compiler/rt/ids.untouched.wat @@ -2,6 +2,9 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $start:rt/ids diff --git a/tests/compiler/rt/instanceof.json b/tests/compiler/rt/instanceof.json index bf222c4d2d..65091e5197 100644 --- a/tests/compiler/rt/instanceof.json +++ b/tests/compiler/rt/instanceof.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 85161cd681..c52cba730f 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -1,67 +1,1259 @@ (module - (type $none_=>_none (func)) (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_=>_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 (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) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") - (data (i32.const 1104) "\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\03\00\00\00 \00\00\00\04") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") + (data (i32.const 1504) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1532) " \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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)) (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17940)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $rt/instanceof/animal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/cat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/blackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableAnimal + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableCat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableBlackcat + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17940 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1504 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1508 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17952 + i32.const 0 + i32.store + i32.const 19520 + 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 17952 + 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 17952 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17940 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17940 + 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 $1 + i32.const 17940 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $3 - i32.const 28 - i32.add + local.get $0 + call $~lib/rt/tlsf/searchBlock local.tee $1 - memory.size - local.tee $4 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 - i32.gt_u + i32.eqz if - local.get $4 - local.get $1 - local.get $2 + i32.const 4 + memory.size + local.tee $2 + i32.const 16 + i32.shl + i32.const 4 i32.sub - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -69,45 +1261,178 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.store offset=12 local.get $1 - i32.const 0 - i32.store offset=16 - local.get $3 + 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.add - ) - (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + 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 - call $~lib/rt/stub/__new - local.set $0 - end - local.get $0 - if (result i32) + i32.sub + i32.const 1 + i32.or + i32.store local.get $0 + local.get $2 + call $~lib/rt/tlsf/insertBlock else - i32.const 3 - call $~lib/rt/stub/__new + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + 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 $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/__instanceof (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -115,7 +1440,7 @@ i32.sub i32.load offset=12 local.tee $0 - i32.const 1104 + i32.const 1504 i32.load i32.le_u if @@ -130,7 +1455,7 @@ local.get $0 i32.const 3 i32.shl - i32.const 1108 + i32.const 1508 i32.add i32.load offset=4 local.tee $0 @@ -141,20 +1466,36 @@ ) (func $start:rt/instanceof (local $0 i32) - i32.const 1164 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__new + global.get $~lib/memory/__stack_pointer + i32.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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $rt/instanceof/Animal#constructor global.set $rt/instanceof/animal i32.const 0 call $rt/instanceof/Cat#constructor global.set $rt/instanceof/cat - i32.const 5 - call $~lib/rt/stub/__new - call $rt/instanceof/Cat#constructor + call $rt/instanceof/BlackCat#constructor global.set $rt/instanceof/blackcat + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/animal local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -164,14 +1505,17 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/animal local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -181,14 +1525,17 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/cat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -199,14 +1546,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/cat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -216,14 +1566,17 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/blackcat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -234,14 +1587,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/blackcat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -252,34 +1608,35 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3 - call $~lib/rt/stub/__new + i32.const 0 + call $rt/instanceof/Animal#constructor global.set $rt/instanceof/nullableAnimal i32.const 0 call $rt/instanceof/Cat#constructor global.set $rt/instanceof/nullableCat - i32.const 5 - call $~lib/rt/stub/__new - call $rt/instanceof/Cat#constructor + call $rt/instanceof/BlackCat#constructor global.set $rt/instanceof/nullableBlackcat global.get $rt/instanceof/nullableAnimal i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableAnimal local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -289,14 +1646,17 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableAnimal local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -306,7 +1666,7 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -316,14 +1676,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableCat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -334,14 +1697,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableCat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -351,7 +1717,7 @@ end if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -361,14 +1727,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableBlackcat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 4 @@ -379,14 +1748,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableBlackcat local.tee $0 + i32.store + local.get $0 if (result i32) local.get $0 i32.const 5 @@ -397,12 +1769,69 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 35 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $rt/instanceof/BlackCat + block $rt/instanceof/Cat + block $rt/instanceof/Animal + 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 $rt/instanceof/Animal $rt/instanceof/Cat $rt/instanceof/BlackCat $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + unreachable ) (func $~start global.get $~started @@ -413,4 +1842,102 @@ global.set $~started call $start:rt/instanceof ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1556 + i32.lt_s + if + i32.const 17968 + i32.const 18016 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $rt/instanceof/Animal#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $rt/instanceof/BlackCat#constructor (result i32) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $rt/instanceof/Cat#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 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 + ) ) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 0f751cc27f..b17ecbd9a3 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -1,16 +1,38 @@ (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_=>_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))) + (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))) (memory $0 1) - (data (i32.const 12) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 80) "\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\03\00\00\00 \00\00\00\04\00\00\00") + (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\00r\00t\00/\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 480) "\06\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00 \00\00\00\03\00\00\00 \00\00\00\04\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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)) @@ -20,190 +42,2301 @@ (global $rt/instanceof/nullAnimal (mut i32) (i32.const 0)) (global $rt/instanceof/nullCat (mut i32) (i32.const 0)) (global $rt/instanceof/nullBlackcat (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 480)) + (global $~lib/memory/__data_end i32 (i32.const 532)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16916)) + (global $~lib/memory/__heap_base i32 (i32.const 16916)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 80)) - (global $~lib/memory/__heap_base i32 (i32.const 132)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + return end - i32.const 16 local.get $0 - i32.add - call $~lib/rt/stub/__alloc + 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 - 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.load + i32.const 3 + i32.const -1 + i32.xor + i32.and i32.add ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) - (func $rt/instanceof/Animal#constructor (param $0 i32) (result i32) + (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 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 368 + i32.const 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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 - local.get $0 ) - (func $rt/instanceof/Cat#constructor (param $0 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.eqz + i32.const 1073741804 + i32.ge_u if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $rt/instanceof/Animal#constructor - local.set $0 - local.get $0 - ) - (func $rt/instanceof/BlackCat#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 0 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - call $rt/instanceof/Cat#constructor - local.set $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/__instanceof (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -247,20 +2380,23 @@ ) (func $start:rt/instanceof (local $0 i32) - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $rt/instanceof/Animal#constructor global.set $rt/instanceof/animal @@ -272,8 +2408,11 @@ global.set $rt/instanceof/blackcat i32.const 1 drop + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/animal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -286,14 +2425,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/animal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -306,7 +2448,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 11 i32.const 1 call $~lib/builtins/abort @@ -314,8 +2456,11 @@ end i32.const 1 drop + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/cat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -327,14 +2472,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/cat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -347,7 +2495,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 15 i32.const 1 call $~lib/builtins/abort @@ -355,8 +2503,11 @@ end i32.const 1 drop + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/blackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -368,14 +2519,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/blackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -387,7 +2541,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 19 i32.const 1 call $~lib/builtins/abort @@ -408,14 +2562,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableAnimal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -428,14 +2585,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableAnimal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -448,7 +2608,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 27 i32.const 1 call $~lib/builtins/abort @@ -460,14 +2620,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 29 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableCat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -479,14 +2642,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 30 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableCat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -499,7 +2665,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 31 i32.const 1 call $~lib/builtins/abort @@ -511,14 +2677,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 33 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableBlackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -530,14 +2699,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 34 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullableBlackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -549,7 +2721,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 35 i32.const 1 call $~lib/builtins/abort @@ -562,14 +2734,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullAnimal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -582,14 +2757,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullAnimal local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -602,7 +2780,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 43 i32.const 1 call $~lib/builtins/abort @@ -615,14 +2793,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullCat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -635,14 +2816,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullCat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -655,7 +2839,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 47 i32.const 1 call $~lib/builtins/abort @@ -668,14 +2852,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullBlackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -688,14 +2875,17 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $rt/instanceof/nullBlackcat local.tee $0 + i32.store + local.get $0 i32.eqz if (result i32) i32.const 0 @@ -708,12 +2898,130 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $rt/instanceof/animal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/cat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/blackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullableBlackcat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullAnimal + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullCat + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $rt/instanceof/nullBlackcat + 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 $rt/instanceof/BlackCat + block $rt/instanceof/Cat + block $rt/instanceof/Animal + 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 $rt/instanceof/Animal $rt/instanceof/Cat $rt/instanceof/BlackCat $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 global.get $~started @@ -724,4 +3032,121 @@ global.set $~started call $start:rt/instanceof ) + (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 $rt/instanceof/Cat#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $rt/instanceof/Animal#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $rt/instanceof/BlackCat#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $rt/instanceof/Cat#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $rt/instanceof/Animal#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 + ) ) diff --git a/tests/compiler/rt/runtime-incremental-export.json b/tests/compiler/rt/runtime-incremental-export.json new file mode 100644 index 0000000000..45a22d0d52 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "incremental", + "--exportRuntime" + ] +} \ No newline at end of file diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat new file mode 100644 index 0000000000..ff25c17101 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -0,0 +1,1859 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (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\00O\00b\00j\00e\00c\00t\00 \00a\00l\00r\00e\00a\00d\00y\00 \00p\00i\00n\00n\00e\00d") + (data (i32.const 1500) "<") + (data (i32.const 1512) "\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 1568) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/rt/__rtti_base i32 (i32.const 1568)) + (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) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1520 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 17980 + 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 + return + end + local.get $0 + i32.load offset=8 + local.tee $0 + 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 $0 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:next + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $2 + local.get $0 + local.tee $1 + i32.load offset=12 + local.tee $0 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1568 + i32.load + i32.gt_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 1572 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $0 + local.get $1 + local.get $2 + local.get $0 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17984 + i32.const 0 + i32.store + i32.const 19552 + 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 17984 + 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 17984 + 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 17984 + i32.const 19556 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17984 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + i32.const 17980 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17980 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17980 + 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 $1 + i32.const 17980 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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.ge_u + if + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 + 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 $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 1392 + i32.const 500 + 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 1392 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.eq + if + i32.const 1456 + i32.const 1120 + i32.const 333 + 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.get $0 + i32.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 1520 + i32.const 1120 + i32.const 347 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $0 + call $~lib/rt/itcms/Object#unlink + local.get $0 + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + 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) + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/runtime-full.ts b/tests/compiler/rt/runtime-incremental-export.ts similarity index 100% rename from tests/compiler/runtime-full.ts rename to tests/compiler/rt/runtime-incremental-export.ts diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat new file mode 100644 index 0000000000..3c8703c4f4 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -0,0 +1,2518 @@ +(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 $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))) + (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\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 476) "<\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 544) "\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") + (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/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)) + (global $~lib/memory/__heap_base i32 (i32.const 16956)) + (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) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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/__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 432 + i32.const 96 + i32.const 333 + 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 496 + i32.const 96 + i32.const 347 + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + 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 + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 496 + 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 $~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 $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + ) +) diff --git a/tests/compiler/rt/runtime-incremental.json b/tests/compiler/rt/runtime-incremental.json new file mode 100644 index 0000000000..5509d05509 --- /dev/null +++ b/tests/compiler/rt/runtime-incremental.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "incremental" + ] +} \ No newline at end of file diff --git a/tests/compiler/runtime-half.optimized.wat b/tests/compiler/rt/runtime-incremental.optimized.wat similarity index 100% rename from tests/compiler/runtime-half.optimized.wat rename to tests/compiler/rt/runtime-incremental.optimized.wat diff --git a/tests/compiler/runtime-half.ts b/tests/compiler/rt/runtime-incremental.ts similarity index 100% rename from tests/compiler/runtime-half.ts rename to tests/compiler/rt/runtime-incremental.ts diff --git a/tests/compiler/rt/runtime-incremental.untouched.wat b/tests/compiler/rt/runtime-incremental.untouched.wat new file mode 100644 index 0000000000..525dea1bed --- /dev/null +++ b/tests/compiler/rt/runtime-incremental.untouched.wat @@ -0,0 +1,8 @@ +(module + (memory $0 0) + (table $0 1 funcref) + (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)) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-minimal-export.json b/tests/compiler/rt/runtime-minimal-export.json new file mode 100644 index 0000000000..e331f5f8b0 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "minimal", + "--exportRuntime" + ] +} \ No newline at end of file diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/rt/runtime-minimal-export.optimized.wat similarity index 67% rename from tests/compiler/runtime-full.optimized.wat rename to tests/compiler/rt/runtime-minimal-export.optimized.wat index b60a13b641..bfae443782 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/rt/runtime-minimal-export.optimized.wat @@ -1,26 +1,38 @@ (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_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (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(\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 1232) "\03\00\00\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (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\00c\00m\00s\00.\00t\00s") + (data (i32.const 1164) "<") + (data (i32.const 1176) "\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 1260) "<") + (data (i32.const 1272) "\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 1356) "<") + (data (i32.const 1368) "\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 1456) "\03\00\00\00 \00\00\00\00\00\00\00 ") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 1232)) - (export "memory" (memory $0)) - (export "__new" (func $~lib/rt/pure/__new)) - (export "__renew" (func $~lib/rt/pure/__renew)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) + (global $~lib/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1456)) + (export "__new" (func $~lib/rt/tcms/__new)) + (export "__pin" (func $~lib/rt/tcms/__pin)) + (export "__unpin" (func $~lib/rt/tcms/__unpin)) + (export "__collect" (func $~lib/rt/tcms/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -35,7 +47,7 @@ if i32.const 0 i32.const 1184 - i32.const 272 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -55,7 +67,7 @@ if i32.const 0 i32.const 1184 - i32.const 274 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -98,7 +110,7 @@ if i32.const 0 i32.const 1184 - i32.const 287 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -190,7 +202,7 @@ if i32.const 0 i32.const 1184 - i32.const 200 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -204,7 +216,7 @@ if i32.const 0 i32.const 1184 - i32.const 202 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -277,7 +289,7 @@ if i32.const 0 i32.const 1184 - i32.const 223 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -332,22 +344,22 @@ if i32.const 0 i32.const 1184 - i32.const 238 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -395,7 +407,7 @@ if i32.const 0 i32.const 1184 - i32.const 255 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -465,7 +477,7 @@ if i32.const 0 i32.const 1184 - i32.const 380 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -493,7 +505,7 @@ if i32.const 0 i32.const 1184 - i32.const 387 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -521,7 +533,7 @@ if i32.const 0 i32.const 1184 - i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -588,10 +600,10 @@ if unreachable end - i32.const 1264 + i32.const 1488 i32.const 0 i32.store - i32.const 2832 + i32.const 3056 i32.const 0 i32.store loop $for-loop|0 @@ -602,7 +614,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1264 + i32.const 1488 i32.add i32.const 0 i32.store offset=4 @@ -620,7 +632,7 @@ i32.add i32.const 2 i32.shl - i32.const 1264 + i32.const 1488 i32.add i32.const 0 i32.store offset=96 @@ -638,40 +650,15 @@ br $for-loop|0 end end - i32.const 1264 - i32.const 2836 + i32.const 1488 + i32.const 3060 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1264 + i32.const 1488 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 1056 - i32.const 1184 - 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 @@ -728,7 +715,7 @@ if i32.const 0 i32.const 1184 - i32.const 333 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -780,7 +767,7 @@ if i32.const 0 i32.const 1184 - i32.const 346 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -801,89 +788,34 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 + i32.const 1056 i32.const 1184 - i32.const 360 - i32.const 14 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 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 + i32.const 12 + i32.le_u + select local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -957,7 +889,7 @@ if i32.const 0 i32.const 1184 - i32.const 498 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -972,7 +904,7 @@ if i32.const 0 i32.const 1184 - i32.const 500 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -980,23 +912,130 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock + 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 1184 + i32.const 361 + 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 $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 $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 + local.get $1 + ) + (func $~lib/rt/tcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/tcms/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 + i32.store offset=4 + ) + (func $~lib/rt/tcms/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 - call $~lib/rt/tlsf/prepareBlock + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/tcms/Object#set:next local.get $1 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) local.get $0 i32.const 1073741804 - i32.gt_u + i32.ge_u if i32.const 1056 i32.const 1120 - i32.const 275 - i32.const 30 + i32.const 125 + i32.const 31 call $~lib/builtins/abort unreachable end @@ -1012,539 +1051,404 @@ global.get $~lib/rt/tlsf/ROOT local.get $2 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + local.get $2 + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo + global.get $~lib/rt/tcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/tcms/total + local.get $2 + i32.const 20 i32.add ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (func $~lib/rt/tcms/Object#unlink (param $0 i32) (local $1 i32) local.get $0 - i32.const 4 - i32.sub - local.set $1 - local.get $0 - i32.const 15 + i32.load offset=4 + i32.const -4 i32.and + local.tee $1 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 + if i32.const 0 + local.get $0 + i32.const 1484 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 101 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return end + local.get $0 + i32.load offset=8 + local.tee $0 i32.eqz if i32.const 0 - i32.const 1184 - i32.const 563 - i32.const 3 + i32.const 1120 + i32.const 105 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/tcms/Object#set:next ) - (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 + (func $~lib/rt/tcms/__pin (param $0 i32) (result i32) + (local $1 i32) + local.get $0 + if local.get $0 - local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 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 1280 + i32.const 1120 + i32.const 181 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 + call $~lib/builtins/abort + unreachable end + local.get $1 + call $~lib/rt/tcms/Object#unlink + local.get $1 + global.get $~lib/rt/tcms/pinSpace + i32.const 3 + call $~lib/rt/tcms/Object#linkTo 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/tcms/__unpin (param $0 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.eqz + if + return + end + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 i32.and - call $~lib/memory/memory.copy - local.get $1 - i32.const 1260 - i32.ge_u + i32.const 3 + i32.ne if - local.get $0 - local.get $1 - call $~lib/rt/tlsf/freeBlock + i32.const 1376 + i32.const 1120 + i32.const 195 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $2 + local.get $0 + call $~lib/rt/tcms/Object#unlink + local.get $0 + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tcms/__collect + (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.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1056 - i32.const 1120 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable + i32.const 1056 + call $~lib/rt/tcms/__visit + i32.const 1280 + call $~lib/rt/tcms/__visit + i32.const 1376 + call $~lib/rt/tcms/__visit + global.get $~lib/rt/tcms/white + i32.eqz + local.set $5 + global.get $~lib/rt/tcms/toSpace + local.tee $6 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $6 + i32.ne + if + local.get $5 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 214 + 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 - local.get $0 - i32.const 16 - i32.sub + global.get $~lib/rt/tcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and local.set $0 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize + loop $while-continue|1 + 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 223 + 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|1 + end end - local.get $1 - i32.const 16 - i32.add - local.set $2 - local.get $0 - i32.const 1260 - i32.lt_u - if - global.get $~lib/rt/tlsf/ROOT + global.get $~lib/rt/tcms/fromSpace + local.tee $2 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 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 + i32.ne + if + global.get $~lib/rt/tcms/white 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 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 232 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.get $0 + i32.const 1484 + 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/tcms/total 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 + i32.sub + global.set $~lib/rt/tcms/total local.get $0 - i32.load - i32.const -4 - i32.and + i32.const 4 i32.add - local.tee $7 - i32.load - local.tee $8 - i32.const 1 - i32.and + local.tee $4 + i32.const 1484 + i32.ge_u if - local.get $5 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $4 i32.const 4 - i32.add - local.get $8 - i32.const -4 + i32.sub + local.set $3 + local.get $4 + i32.const 15 i32.and - i32.add - local.tee $4 - i32.le_u - if + i32.eqz + i32.const 0 + local.get $4 + select + if (result i32) local.get $3 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $4 - local.get $6 - i32.const 3 + i32.load + i32.const 1 i32.and - i32.or - i32.store - br $folding-inner0 + i32.eqz + else + i32.const 0 end + i32.eqz + if + i32.const 0 + i32.const 1184 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $3 + i32.load + i32.const 1 + i32.or + i32.store + local.get $3 + call $~lib/rt/tlsf/insertBlock 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/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1260 - 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 + local.set $0 + br $while-continue|2 end end - local.get $0 + local.get $2 + local.get $2 + i32.store offset=4 + local.get $2 + local.get $2 + i32.store offset=8 + local.get $6 + global.set $~lib/rt/tcms/fromSpace + local.get $2 + global.set $~lib/rt/tcms/toSpace + local.get $5 + global.set $~lib/rt/tcms/white ) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/tcms/__visit (param $0 i32) local.get $0 - i32.const 1260 - i32.gt_u + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + return end - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + global.get $~lib/rt/tcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.tee $2 - i32.const 268435455 + i32.const 3 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 $invalid - block $~lib/arraybuffer/ArrayBufferView + local.get $0 + call $~lib/rt/tcms/Object#unlink + local.get $0 + global.get $~lib/rt/tcms/toSpace + global.get $~lib/rt/tcms/white + i32.eqz + call $~lib/rt/tcms/Object#linkTo + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - i32.const 12 - i32.add + i32.const 8 + i32.sub i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $~lib/arraybuffer/ArrayBufferView $invalid - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - i32.const 1260 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid end - br $__inlined_func$~lib/rt/__visit_members + return end - unreachable - 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 + return end - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $1 - i32.eqz + i32.load + local.tee $0 if - i32.const 0 - i32.const 1120 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/tcms/__visit 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 + return end + unreachable + ) + (func $~start + i32.const 1232 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/fromSpace + i32.const 1328 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/pinSpace + i32.const 1424 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/toSpace ) ) diff --git a/tests/compiler/runtime-none.ts b/tests/compiler/rt/runtime-minimal-export.ts similarity index 100% rename from tests/compiler/runtime-none.ts rename to tests/compiler/rt/runtime-minimal-export.ts diff --git a/tests/compiler/rt/runtime-minimal-export.untouched.wat b/tests/compiler/rt/runtime-minimal-export.untouched.wat new file mode 100644 index 0000000000..0dd11c77bc --- /dev/null +++ b/tests/compiler/rt/runtime-minimal-export.untouched.wat @@ -0,0 +1,1979 @@ +(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))) + (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(\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/\00t\00c\00m\00s\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\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 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 304) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 332) "<\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 400) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 432) "\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") + (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/rt/tcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 432)) + (global $~lib/memory/__heap_base i32 (i32.const 460)) + (export "__new" (func $~lib/rt/tcms/__new)) + (export "__pin" (func $~lib/rt/tcms/__pin)) + (export "__unpin" (func $~lib/rt/tcms/__unpin)) + (export "__collect" (func $~lib/rt/tcms/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (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 160 + i32.const 273 + 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 160 + i32.const 275 + 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 160 + i32.const 288 + 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 160 + 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 160 + 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 $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 160 + i32.const 224 + 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 160 + i32.const 239 + 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 160 + i32.const 240 + 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 160 + i32.const 256 + 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 160 + i32.const 381 + 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 160 + i32.const 388 + 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 160 + i32.const 401 + 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 32 + i32.const 160 + i32.const 462 + 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 160 + i32.const 334 + 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 160 + i32.const 347 + 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 160 + i32.const 361 + 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 160 + i32.const 500 + 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 160 + i32.const 502 + 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/tcms/Object#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/tcms/Object#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/rt/tcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/tcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/tcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $0 + local.get $0 + call $~lib/rt/tcms/Object#set:prev + local.get $0 + ) + (func $~lib/rt/tcms/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/tcms/Object#set:nextWithColor + ) + (func $~lib/rt/tcms/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/tcms/Object#set:nextWithColor + local.get $0 + local.get $3 + call $~lib/rt/tcms/Object#set:prev + local.get $3 + local.get $0 + call $~lib/rt/tcms/Object#set:next + local.get $1 + local.get $0 + call $~lib/rt/tcms/Object#set:prev + ) + (func $~lib/rt/tcms/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/tcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 125 + i32.const 31 + call $~lib/builtins/abort + unreachable + 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/tcms/Object#set:rtId + local.get $2 + local.get $0 + call $~lib/rt/tcms/Object#set:rtSize + local.get $2 + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo + global.get $~lib/rt/tcms/total + local.get $2 + call $~lib/rt/tcms/Object#get:size + i32.add + global.set $~lib/rt/tcms/total + local.get $2 + i32.const 20 + i32.add + ) + (func $~lib/rt/tcms/Object#get:color (param $0 i32) (result i32) + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + ) + (func $~lib/rt/tcms/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/tcms/Object#unlink (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/tcms/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 101 + 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 105 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/rt/tcms/Object#set:prev + local.get $2 + local.get $1 + call $~lib/rt/tcms/Object#set:next + ) + (func $~lib/rt/tcms/__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/tcms/Object#get:color + i32.const 3 + i32.eq + if + i32.const 256 + i32.const 96 + i32.const 181 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + local.get $1 + global.get $~lib/rt/tcms/pinSpace + i32.const 3 + call $~lib/rt/tcms/Object#linkTo + end + local.get $0 + ) + (func $~lib/rt/tcms/__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/tcms/Object#get:color + i32.const 3 + i32.ne + if + i32.const 352 + i32.const 96 + i32.const 195 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tcms/Object#unlink + local.get $1 + global.get $~lib/rt/tcms/fromSpace + global.get $~lib/rt/tcms/white + call $~lib/rt/tcms/Object#linkTo + ) + (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 160 + i32.const 565 + 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/tcms/__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 + i32.const 0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/tcms/white + i32.eqz + local.set $0 + global.get $~lib/rt/tcms/toSpace + local.set $1 + local.get $1 + call $~lib/rt/tcms/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/tcms/Object#get:color + local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 214 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/tcms/Object#get:next + local.set $2 + br $while-continue|0 + end + end + global.get $~lib/rt/tcms/pinSpace + local.set $4 + local.get $4 + call $~lib/rt/tcms/Object#get:next + local.set $2 + loop $while-continue|1 + local.get $2 + local.get $4 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/tcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 223 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + local.get $2 + call $~lib/rt/tcms/Object#get:next + local.set $2 + br $while-continue|1 + end + end + global.get $~lib/rt/tcms/fromSpace + local.set $5 + local.get $5 + call $~lib/rt/tcms/Object#get:next + local.set $2 + loop $while-continue|2 + local.get $2 + local.get $5 + i32.ne + local.set $3 + local.get $3 + if + i32.const 1 + drop + local.get $2 + call $~lib/rt/tcms/Object#get:color + global.get $~lib/rt/tcms/white + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 232 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $2 + call $~lib/rt/tcms/Object#get:next + local.set $6 + local.get $2 + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $2 + i32.const 0 + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $2 + i32.const 0 + call $~lib/rt/tcms/Object#set:prev + else + global.get $~lib/rt/tcms/total + local.get $2 + call $~lib/rt/tcms/Object#get:size + i32.sub + global.set $~lib/rt/tcms/total + i32.const 0 + drop + local.get $2 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + local.get $6 + local.set $2 + br $while-continue|2 + end + end + local.get $5 + local.get $5 + call $~lib/rt/tcms/Object#set:nextWithColor + local.get $5 + local.get $5 + call $~lib/rt/tcms/Object#set:prev + local.get $1 + global.set $~lib/rt/tcms/fromSpace + local.get $5 + global.set $~lib/rt/tcms/toSpace + local.get $0 + global.set $~lib/rt/tcms/white + i32.const 0 + drop + i32.const 0 + drop + ) + (func $~lib/rt/tcms/__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/tcms/Object#get:color + global.get $~lib/rt/tcms/white + i32.eq + if + local.get $2 + call $~lib/rt/tcms/Object#unlink + local.get $2 + global.get $~lib/rt/tcms/toSpace + global.get $~lib/rt/tcms/white + i32.eqz + call $~lib/rt/tcms/Object#linkTo + end + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 32 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 256 + local.get $0 + call $~lib/rt/tcms/__visit + i32.const 352 + local.get $0 + call $~lib/rt/tcms/__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/tcms/__visit + end + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + i32.const 208 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/fromSpace + i32.const 304 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/pinSpace + i32.const 400 + call $~lib/rt/tcms/initLazy + global.set $~lib/rt/tcms/toSpace + ) +) diff --git a/tests/compiler/rt/runtime-minimal.json b/tests/compiler/rt/runtime-minimal.json new file mode 100644 index 0000000000..db5353b1d0 --- /dev/null +++ b/tests/compiler/rt/runtime-minimal.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "minimal" + ] +} \ No newline at end of file diff --git a/tests/compiler/runtime-none.optimized.wat b/tests/compiler/rt/runtime-minimal.optimized.wat similarity index 100% rename from tests/compiler/runtime-none.optimized.wat rename to tests/compiler/rt/runtime-minimal.optimized.wat diff --git a/tests/compiler/runtime-stub.ts b/tests/compiler/rt/runtime-minimal.ts similarity index 100% rename from tests/compiler/runtime-stub.ts rename to tests/compiler/rt/runtime-minimal.ts diff --git a/tests/compiler/runtime-half.untouched.wat b/tests/compiler/rt/runtime-minimal.untouched.wat similarity index 100% rename from tests/compiler/runtime-half.untouched.wat rename to tests/compiler/rt/runtime-minimal.untouched.wat diff --git a/tests/compiler/rt/runtime-stub-export.json b/tests/compiler/rt/runtime-stub-export.json new file mode 100644 index 0000000000..e0084d52c2 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.json @@ -0,0 +1,6 @@ +{ + "asc_flags": [ + "--runtime", "stub", + "--exportRuntime" + ] +} \ No newline at end of file diff --git a/tests/compiler/rt/runtime-stub-export.optimized.wat b/tests/compiler/rt/runtime-stub-export.optimized.wat new file mode 100644 index 0000000000..bfc4b030d1 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.optimized.wat @@ -0,0 +1,145 @@ +(module + (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 (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) "<") + (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") + (data (i32.const 1168) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1168)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__pin" (func $~lib/rt/stub/__pin)) + (export "__unpin" (func $~lib/rt/stub/__unpin)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.const 1073741804 + i32.gt_u + if + i32.const 1056 + i32.const 1120 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.add + local.tee $2 + 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 + 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 $~lib/rt/stub/__pin (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__unpin (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect + nop + ) + (func $~start + i32.const 1196 + global.set $~lib/rt/stub/offset + ) +) diff --git a/tests/compiler/rt/runtime-stub-export.ts b/tests/compiler/rt/runtime-stub-export.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/compiler/rt/runtime-stub-export.untouched.wat b/tests/compiler/rt/runtime-stub-export.untouched.wat new file mode 100644 index 0000000000..0a166c4f56 --- /dev/null +++ b/tests/compiler/rt/runtime-stub-export.untouched.wat @@ -0,0 +1,219 @@ +(module + (type $i32_i32_=>_none (func (param i32 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 (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) "<\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") + (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\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/rt/__rtti_base i32 (i32.const 144)) + (global $~lib/memory/__heap_base i32 (i32.const 172)) + (export "__new" (func $~lib/rt/stub/__new)) + (export "__pin" (func $~lib/rt/stub/__pin)) + (export "__unpin" (func $~lib/rt/stub/__unpin)) + (export "__collect" (func $~lib/rt/stub/__collect)) + (export "__rtti_base" (global $~lib/rt/__rtti_base)) + (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/rt/common/OBJECT#set:gcInfo (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/common/OBJECT#set:gcInfo2 (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/rt/common/OBJECT#set:rtId (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/rt/common/OBJECT#set:rtSize (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 + i32.const 32 + i32.const 96 + i32.const 86 + i32.const 30 + call $~lib/builtins/abort + 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 + call $~lib/rt/common/OBJECT#set:gcInfo + local.get $3 + i32.const 0 + call $~lib/rt/common/OBJECT#set:gcInfo2 + local.get $3 + local.get $1 + call $~lib/rt/common/OBJECT#set:rtId + local.get $3 + local.get $0 + call $~lib/rt/common/OBJECT#set:rtSize + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/stub/__pin (param $0 i32) (result i32) + local.get $0 + ) + (func $~lib/rt/stub/__unpin (param $0 i32) + nop + ) + (func $~lib/rt/stub/__collect + nop + ) + (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/compiler/rt/runtime-stub.json b/tests/compiler/rt/runtime-stub.json new file mode 100644 index 0000000000..c974f19a29 --- /dev/null +++ b/tests/compiler/rt/runtime-stub.json @@ -0,0 +1,5 @@ +{ + "asc_flags": [ + "--runtime", "stub" + ] +} \ No newline at end of file diff --git a/tests/compiler/rt/runtime-stub.optimized.wat b/tests/compiler/rt/runtime-stub.optimized.wat new file mode 100644 index 0000000000..23da3862e2 --- /dev/null +++ b/tests/compiler/rt/runtime-stub.optimized.wat @@ -0,0 +1,4 @@ +(module + (memory $0 0) + (export "memory" (memory $0)) +) diff --git a/tests/compiler/rt/runtime-stub.ts b/tests/compiler/rt/runtime-stub.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/compiler/runtime-none.untouched.wat b/tests/compiler/rt/runtime-stub.untouched.wat similarity index 100% rename from tests/compiler/runtime-none.untouched.wat rename to tests/compiler/rt/runtime-stub.untouched.wat diff --git a/tests/compiler/rt/stub-realloc.json b/tests/compiler/rt/stub-realloc.json deleted file mode 100644 index 59636d75fa..0000000000 --- a/tests/compiler/rt/stub-realloc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "asc_flags": [ - "--runtime stub", - "--explicitStart" - ] -} \ No newline at end of file diff --git a/tests/compiler/rt/stub-realloc.ts b/tests/compiler/rt/stub-realloc.ts deleted file mode 100644 index 1ae9a266c6..0000000000 --- a/tests/compiler/rt/stub-realloc.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { BLOCK_OVERHEAD } from "rt/common"; - -// size calculation: ((size + BLOCK_OVERHEAD + AL_MASK) & ~AL_MASK) - BLOCK_OVERHEAD -// BLOCK_OVERHEAD=4 -> 12, 28, 44, ... - -var ptr = __alloc(10); // initial allocation -var originalPtr = ptr; - -ptr = __realloc(ptr, 12); // just resizes (<= 12) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 13); // resizes checking for grow (<= 28) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 33); // last: resizes checking for grow (<= 44) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 20); // last: shrinks again (<= 28, see *) - -var newLastPtr = __alloc(1); -assert(newLastPtr == originalPtr + 28 + BLOCK_OVERHEAD); // * - -ptr = __realloc(ptr, 24); // just resizes (<= 28) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 28); // just resizes (<= 28) -assert(ptr == originalPtr); - -ptr = __realloc(ptr, 29); // not last anymore: copies -assert(ptr > originalPtr); - -__free(ptr); // discards last - -assert(__alloc(1) == ptr); diff --git a/tests/compiler/runtime-half.json b/tests/compiler/runtime-half.json deleted file mode 100644 index 8e2a32c1e2..0000000000 --- a/tests/compiler/runtime-half.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime half" - ] -} diff --git a/tests/compiler/runtime-none.json b/tests/compiler/runtime-none.json deleted file mode 100644 index 453cb07770..0000000000 --- a/tests/compiler/runtime-none.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "asc_flags": [ - "--runtime none" - ] -} diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat deleted file mode 100644 index 5e671f446d..0000000000 --- a/tests/compiler/runtime-stub.optimized.wat +++ /dev/null @@ -1,433 +0,0 @@ -(module - (type $none_=>_none (func)) - (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))) - (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 1104) "\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 $~lib/rt/__rtti_base i32 (i32.const 1104)) - (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)) - (start $~start) - (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/__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.get $1 - i32.const 1073741804 - i32.gt_u - if - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.set $3 - local.get $0 - i32.const 16 - i32.sub - 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 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 $5 - i32.load - local.tee $4 - i32.add - i32.eq - local.set $6 - local.get $3 - call $~lib/rt/stub/computeSize - local.set $2 - local.get $3 - local.get $4 - i32.gt_u - if - local.get $6 - if - local.get $3 - i32.const 1073741820 - i32.gt_u - if - unreachable - end - local.get $0 - local.get $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $5 - local.get $2 - i32.store - else - local.get $2 - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - local.get $2 - local.get $3 - i32.gt_u - select - call $~lib/rt/stub/__alloc - local.tee $2 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $2 - local.set $0 - end - else - local.get $6 - if - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $5 - local.get $2 - i32.store - end - end - local.get $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 - i32.const 1132 - global.set $~lib/rt/stub/startOffset - i32.const 1132 - global.set $~lib/rt/stub/offset - ) -) diff --git a/tests/compiler/scoped.json b/tests/compiler/scoped.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/scoped.json +++ b/tests/compiler/scoped.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index c41737758b..e8be71845f 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -6,6 +6,9 @@ (global $scoped/aGlobal (mut i32) (i32.const 1)) (global $scoped/aConstant i32 (i32.const 3)) (global $scoped/aStartFunctionLocal (mut i32) (i32.const 2)) + (global $~lib/memory/__data_end i32 (i32.const 8)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16392)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) (export "memory" (memory $0)) (start $~start) (func $scoped/fn (param $0 i32) diff --git a/tests/compiler/static-this.json b/tests/compiler/static-this.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/static-this.json +++ b/tests/compiler/static-this.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/static-this.optimized.wat b/tests/compiler/static-this.optimized.wat index 5052db2972..2dc719fe1d 100644 --- a/tests/compiler/static-this.optimized.wat +++ b/tests/compiler/static-this.optimized.wat @@ -1,5 +1,6 @@ (module (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\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat index 8ef244744d..b61315fd8a 100644 --- a/tests/compiler/static-this.untouched.wat +++ b/tests/compiler/static-this.untouched.wat @@ -4,9 +4,12 @@ (type $none_=>_i32 (func (result 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\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1c\00\00\00s\00t\00a\00t\00i\00c\00-\00t\00h\00i\00s\00.\00t\00s\00") (table $0 1 funcref) (global $static-this/Foo.bar (mut i32) (i32.const 42)) + (global $~lib/memory/__data_end i32 (i32.const 60)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16444)) + (global $~lib/memory/__heap_base i32 (i32.const 16444)) (export "memory" (memory $0)) (start $~start) (func $static-this/Foo.getBar (result i32) diff --git a/tests/compiler/std-wasi/console.json b/tests/compiler/std-wasi/console.json new file mode 100644 index 0000000000..cce2bd869a --- /dev/null +++ b/tests/compiler/std-wasi/console.json @@ -0,0 +1,13 @@ +{ + "asc_flags": [ + "--explicitStart" + ], + "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.optimized.wat new file mode 100644 index 0000000000..164b200604 --- /dev/null +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -0,0 +1,4565 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param 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_=>_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 $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $none_=>_i64 (func (result i64))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) + (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\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1212) "\1c") + (data (i32.const 1224) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1244) "\1c") + (data (i32.const 1256) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1276) ",") + (data (i32.const 1288) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1324) ",") + (data (i32.const 1336) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1372) ",") + (data (i32.const 1384) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1420) "\1c") + (data (i32.const 1432) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 1452) ",") + (data (i32.const 1464) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 1500) "\1c") + (data (i32.const 1512) "\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 1532) "\1c") + (data (i32.const 1544) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 1564) "\1c") + (data (i32.const 1576) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 1596) ",") + (data (i32.const 1608) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 1644) "\1c") + (data (i32.const 1656) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 1676) ",") + (data (i32.const 1688) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 1724) ",") + (data (i32.const 1736) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 1772) ",") + (data (i32.const 1784) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 1820) "\1c") + (data (i32.const 1832) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 1852) ",") + (data (i32.const 1864) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 1900) "\1c") + (data (i32.const 1912) "\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 1932) "\1c") + (data (i32.const 1944) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 1964) "\1c") + (data (i32.const 1976) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 1996) "\1c") + (data (i32.const 2008) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 2028) "\1c") + (data (i32.const 2040) "\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2060) ",") + (data (i32.const 2072) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2108) "\1c") + (data (i32.const 2120) "\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2140) "\1c") + (data (i32.const 2152) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2172) ",") + (data (i32.const 2184) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2220) "\1c") + (data (i32.const 2232) "\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2252) "\1c") + (data (i32.const 2264) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2284) "\1c") + (data (i32.const 2296) "\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2316) "\1c") + (data (i32.const 2328) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2348) "\1c") + (data (i32.const 2360) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2380) "\1c") + (data (i32.const 2392) "\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2412) "\1c") + (data (i32.const 2424) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 2444) "\1c") + (data (i32.const 2456) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 2476) ",") + (data (i32.const 2488) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 2524) ",") + (data (i32.const 2536) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 2572) ",") + (data (i32.const 2584) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 2620) ",") + (data (i32.const 2632) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 2668) ",") + (data (i32.const 2680) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 2716) ",") + (data (i32.const 2728) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2764) "\1c") + (data (i32.const 2776) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 2796) "\1c") + (data (i32.const 2808) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 2828) "\1c") + (data (i32.const 2840) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 2860) "\1c") + (data (i32.const 2872) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 2892) "\1c") + (data (i32.const 2904) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 2924) "\1c") + (data (i32.const 2936) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 2956) "\1c") + (data (i32.const 2968) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 2988) "\1c") + (data (i32.const 3000) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 3020) "\1c") + (data (i32.const 3032) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3052) ",") + (data (i32.const 3064) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3100) "\1c") + (data (i32.const 3112) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3132) "\1c") + (data (i32.const 3144) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3164) ",") + (data (i32.const 3176) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3212) "\1c") + (data (i32.const 3224) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3244) ",") + (data (i32.const 3256) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3292) ",") + (data (i32.const 3304) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3340) ",") + (data (i32.const 3352) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3388) "\1c") + (data (i32.const 3400) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3420) "\1c") + (data (i32.const 3432) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 3452) "\1c") + (data (i32.const 3464) "\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 3484) ",") + (data (i32.const 3496) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 3532) ",") + (data (i32.const 3544) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 3580) "\1c") + (data (i32.const 3592) "\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 3612) "\1c") + (data (i32.const 3624) "\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 3644) "\1c") + (data (i32.const 3656) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 3676) ",") + (data (i32.const 3688) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 3724) ",") + (data (i32.const 3736) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 3772) "\1c") + (data (i32.const 3784) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 3804) "\1c") + (data (i32.const 3816) "\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 3836) "\1c") + (data (i32.const 3848) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 3868) "\1c") + (data (i32.const 3880) "\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 3900) "\1c") + (data (i32.const 3912) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 3932) ",") + (data (i32.const 3944) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 3980) "\1c") + (data (i32.const 3992) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 4012) "\1c") + (data (i32.const 4024) "\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 4044) ",") + (data (i32.const 4056) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4092) ",") + (data (i32.const 4104) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4140) "<") + (data (i32.const 4152) "\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 4204) "<") + (data (i32.const 4216) "\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 4268) "<") + (data (i32.const 4280) "\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 4332) "\1c") + (data (i32.const 4344) "\01\00\00\00\02\00\00\00\n") + (data (i32.const 4364) "\1c") + (data (i32.const 4376) "\01\00\00\00\08\00\00\00p\00h\00e\00w") + (data (i32.const 4396) ",") + (data (i32.const 4408) "\01\00\00\00\12\00\00\00h\00e\00l\00l\00o\00 \00l\00o\00g") + (data (i32.const 4444) ",") + (data (i32.const 4456) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00d\00e\00b\00u\00g") + (data (i32.const 4492) ",") + (data (i32.const 4504) "\01\00\00\00\0e\00\00\00D\00e\00b\00u\00g\00:\00 ") + (data (i32.const 4540) ",") + (data (i32.const 4552) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00i\00n\00f\00o") + (data (i32.const 4588) "\1c") + (data (i32.const 4600) "\01\00\00\00\0c\00\00\00I\00n\00f\00o\00:\00 ") + (data (i32.const 4620) ",") + (data (i32.const 4632) "\01\00\00\00\14\00\00\00h\00e\00l\00l\00o\00 \00w\00a\00r\00n") + (data (i32.const 4668) ",") + (data (i32.const 4680) "\01\00\00\00\12\00\00\00W\00a\00r\00n\00i\00n\00g\00:\00 ") + (data (i32.const 4716) ",") + (data (i32.const 4728) "\01\00\00\00\16\00\00\00h\00e\00l\00l\00o\00 \00e\00r\00r\00o\00r") + (data (i32.const 4764) ",") + (data (i32.const 4776) "\01\00\00\00\0e\00\00\00E\00r\00r\00o\00r\00:\00 ") + (data (i32.const 4812) ",") + (data (i32.const 4824) "\01\00\00\00\12\00\00\00s\00o\00m\00e\00L\00a\00b\00e\00l") + (data (i32.const 4860) "<") + (data (i32.const 4872) "\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 4988) "<") + (data (i32.const 5000) "\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 5052) ",") + (data (i32.const 5064) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 5132) ",") + (data (i32.const 5144) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 5180) "<") + (data (i32.const 5192) "\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 5244) "<") + (data (i32.const 5256) "\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 5308) "\\") + (data (i32.const 5320) "\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 5404) "L") + (data (i32.const 5416) "\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 5484) "L") + (data (i32.const 5496) "\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 5564) "<") + (data (i32.const 5576) "\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 5628) ",") + (data (i32.const 5640) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 5676) "|") + (data (i32.const 5688) "\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 5804) "<") + (data (i32.const 5816) "\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 5868) "\1c") + (data (i32.const 5880) "\01\00\00\00\02\00\00\000") + (data (i32.const 5900) "\\") + (data (i32.const 5912) "\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 5996) "\1c") + (data (i32.const 6008) "\01\00\00\00\04\00\00\00:\00 ") + (data (i32.const 6028) "\1c") + (data (i32.const 6040) "\01\00\00\00\06\00\00\00m\00s\00\n") + (data (i32.const 6060) "L") + (data (i32.const 6072) "\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 6140) ",") + (data (i32.const 6152) "\01\00\00\00\14\00\00\00w\00r\00o\00n\00g\00L\00a\00b\00e\00l") + (data (i32.const 6188) ",") + (data (i32.const 6200) "\01\00\00\00\1c\00\00\00d\00u\00p\00l\00i\00c\00a\00t\00e\00L\00a\00b\00e\00l") + (data (i32.const 6236) "\1c") + (data (i32.const 6248) "\01\00\00\00\02\00\00\001") + (data (i32.const 6268) "\1c") + (data (i32.const 6280) "\01\00\00\00\04\00\00\001\002") + (data (i32.const 6300) "\1c") + (data (i32.const 6312) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 6332) "\1c") + (data (i32.const 6344) "\01\00\00\00\08\00\00\001\002\003\004") + (data (i32.const 6368) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 6396) "\10\02\82") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/console/timers (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22788)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.store8 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $1 + i32.const 3 + i32.add + end + end + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $2 + i32.sub + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $case13|0 $case14|0 $case15|0 $case16|0 $case17|0 $case18|0 $case19|0 $case20|0 $case21|0 $case22|0 $case23|0 $case24|0 $case25|0 $case26|0 $case27|0 $case28|0 $case29|0 $case30|0 $case31|0 $case32|0 $case33|0 $case34|0 $case35|0 $case36|0 $case37|0 $case38|0 $case39|0 $case40|0 $case41|0 $case42|0 $case43|0 $case44|0 $case45|0 $case46|0 $case47|0 $case48|0 $case49|0 $case50|0 $case51|0 $case52|0 $case53|0 $case54|0 $case55|0 $case56|0 $case57|0 $case58|0 $case59|0 $case60|0 $case61|0 $case62|0 $case63|0 $case64|0 $case65|0 $case66|0 $case67|0 $case68|0 $case69|0 $case70|0 $case71|0 $case72|0 $case73|0 $case74|0 $case75|0 $case76|0 $break|0 + end + i32.const 1184 + return + end + i32.const 1232 + return + end + i32.const 1264 + return + end + i32.const 1296 + return + end + i32.const 1344 + return + end + i32.const 1392 + return + end + i32.const 1440 + return + end + i32.const 1472 + return + end + i32.const 1520 + return + end + i32.const 1552 + return + end + i32.const 1584 + return + end + i32.const 1616 + return + end + i32.const 1664 + return + end + i32.const 1696 + return + end + i32.const 1744 + return + end + i32.const 1792 + return + end + i32.const 1840 + return + end + i32.const 1872 + return + end + i32.const 1920 + return + end + i32.const 1952 + return + end + i32.const 1984 + return + end + i32.const 2016 + return + end + i32.const 2048 + return + end + i32.const 2080 + return + end + i32.const 2128 + return + end + i32.const 2160 + return + end + i32.const 2192 + return + end + i32.const 2240 + return + end + i32.const 2272 + return + end + i32.const 2304 + return + end + i32.const 2336 + return + end + i32.const 2368 + return + end + i32.const 2400 + return + end + i32.const 2432 + return + end + i32.const 2464 + return + end + i32.const 2496 + return + end + i32.const 2544 + return + end + i32.const 2592 + return + end + i32.const 2640 + return + end + i32.const 2688 + return + end + i32.const 2736 + return + end + i32.const 2784 + return + end + i32.const 2816 + return + end + i32.const 2848 + return + end + i32.const 2880 + return + end + i32.const 2912 + return + end + i32.const 2944 + return + end + i32.const 2976 + return + end + i32.const 3008 + return + end + i32.const 3040 + return + end + i32.const 3072 + return + end + i32.const 3120 + return + end + i32.const 3152 + return + end + i32.const 3184 + return + end + i32.const 3232 + return + end + i32.const 3264 + return + end + i32.const 3312 + return + end + i32.const 3360 + return + end + i32.const 3408 + return + end + i32.const 3440 + return + end + i32.const 3472 + return + end + i32.const 3504 + return + end + i32.const 3552 + return + end + i32.const 3600 + return + end + i32.const 3632 + return + end + i32.const 3664 + return + end + i32.const 3696 + return + end + i32.const 3744 + return + end + i32.const 3792 + return + end + i32.const 3824 + return + end + i32.const 3856 + return + end + i32.const 3888 + return + end + i32.const 3920 + return + end + i32.const 3952 + return + end + i32.const 4000 + return + end + i32.const 4032 + return + end + i32.const 4064 + return + end + i32.const 4112 + ) + (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 4224 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 4224 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 4224 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 4224 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 4224 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 22800 + i32.const 0 + i32.store + i32.const 24368 + 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 22800 + 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 22800 + 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 22800 + i32.const 24372 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 22800 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + 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 4224 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/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 4224 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 4288 + i32.const 4224 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + 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 4224 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 4224 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + 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 4224 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 $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 $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 + 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/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 22788 + 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.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 4224 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $~lib/console/timers + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 5008 + call $~lib/rt/itcms/__visit + i32.const 5152 + call $~lib/rt/itcms/__visit + i32.const 5584 + call $~lib/rt/itcms/__visit + i32.const 4288 + call $~lib/rt/itcms/__visit + i32.const 5920 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 4880 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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 22788 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 4880 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 4880 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 6368 + i32.load + i32.gt_u + if + i32.const 5008 + i32.const 5072 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 6372 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 22788 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 4880 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 22788 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 4288 + i32.const 4880 + i32.const 256 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4880 + i32.const 290 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/map/Map<~lib/string/String,u64>#set:buckets (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/map/Map<~lib/string/String,u64>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/process/process.hrtime (result i64) + (local $0 i32) + i32.const 1 + i64.const 0 + i32.const 1136 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4160 + i32.const 59 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1136 + i64.load + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + block $~lib/map/Map<~lib/string/String,u64> + 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,u64> $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 24 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/console + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 6404 + i32.lt_s + if + i32.const 22816 + i32.const 22864 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + i32.store + i32.const 12 + i64.const 9071471065260641 + i64.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + else + i32.const 19 + end + local.tee $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $4 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $4 + i32.add + local.set $4 + end + local.get $4 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.tee $0 + local.get $4 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $2 + i32.const 10 + i32.div_u + local.tee $2 + br_if $do-continue|0 + end + local.get $0 + local.get $4 + i32.add + local.tee $0 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.tee $1 + local.get $0 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $3 + i32.const 10 + i32.div_u + local.tee $3 + br_if $do-continue|1 + end + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 2601 + i32.store16 + i32.const 4 + local.get $0 + i32.const 10 + i32.sub + i32.store + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/writeString (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $4 + i32.const -1 + local.set $5 + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $1 + i32.load16_u offset=6 + local.tee $2 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $1 + i32.load16_u offset=4 + local.tee $5 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $1 + i32.load16_u offset=2 + local.tee $4 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $1 + i32.load16_u + local.tee $3 + i32.const 128 + i32.ge_u + br_if $break|0 + i32.const 1136 + i32.const 1144 + i32.store + i32.const 1140 + local.get $4 + i32.const -1 + i32.ne + i32.const 1 + i32.add + local.get $5 + i32.const -1 + i32.ne + i32.add + local.get $2 + i32.const -1 + i32.ne + i32.add + i32.store + i32.const 1144 + local.get $3 + local.get $4 + i32.const 8 + i32.shl + i32.or + local.get $5 + i32.const 16 + i32.shl + i32.or + local.get $2 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $0 + i32.const 1136 + i32.const 1 + i32.const 1148 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4160 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $4 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_u + if + local.get $2 + i32.load16_u + local.tee $5 + i32.const 128 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.add + else + local.get $5 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $3 + i32.const 2 + i32.add + else + local.get $4 + local.get $2 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $5 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $3 + i32.const 3 + i32.add + end + end + local.set $3 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $3 + call $~lib/rt/tlsf/__alloc + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $2 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $3 + i32.ne + if + i32.const 0 + i32.const 4160 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1136 + local.get $2 + i32.store + i32.const 1140 + local.get $3 + i32.store + local.get $0 + i32.const 1136 + i32.const 1 + i32.const 1144 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $0 + local.get $2 + call $~lib/rt/tlsf/__free + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4160 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~lib/string/String> (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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.assert (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 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 2 + i32.const 1088 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 2 + local.get $1 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 2 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (param $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/map/Map<~lib/string/String,u64>#find (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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=16 + local.tee $3 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + call $~lib/string/String.__eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $3 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/map/Map<~lib/string/String,u64>#has (param $0 i32) (param $1 i32) (result 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,u64>#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#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 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 + 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 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load + local.tee $7 + i32.store offset=8 + local.get $2 + local.get $7 + i32.store + local.get $2 + local.get $8 + i64.load offset=8 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hashStr + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=16 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $8 + i32.const 24 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map<~lib/string/String,u64>#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,u64>#set:entries + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/util/hash/hashStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i64.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.time (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/map/Map<~lib/string/String,u64>#has + if + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=4 + i32.const 1 + i32.const 5264 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=4 + i32.const 1 + i32.const 5328 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/process/process.hrtime + call $~lib/map/Map<~lib/string/String,u64>#set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/timeLogImpl (param $0 i32) + (local $1 i32) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + global.get $~lib/console/timers + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $1 + local.get $0 + local.get $0 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $1 + i32.eqz + if + i32.const 5584 + i32.const 5648 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i64.load offset=8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + call $~lib/process/process.hrtime + local.get $2 + i64.sub + i64.const 1000000 + i64.div_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/util/number/utoa64 + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 6016 + i32.store offset=4 + i32.const 1 + i32.const 6016 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 1 + local.get $1 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 6048 + i32.store offset=4 + i32.const 1 + i32.const 6048 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + call $~lib/map/Map<~lib/string/String,u64>#has + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=4 + i32.const 1 + i32.const 5424 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 1 + local.get $1 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 5504 + i32.store offset=4 + i32.const 1 + i32.const 5504 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,u64>#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=16 + i32.const 1 + i32.or + i32.store offset=16 + 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 $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeEnd (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + local.get $1 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/map/Map<~lib/string/String,u64>#has + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=4 + i32.const 1 + i32.const 5424 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 6080 + i32.store offset=4 + i32.const 1 + i32.const 6080 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + global.get $~lib/console/timers + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/map/Map<~lib/string/String,u64>#delete + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 0 + i32.const 1056 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4384 + i32.store + i32.const 1 + i32.const 4384 + call $~lib/console/console.assert + global.get $~lib/memory/__stack_pointer + i32.const 4416 + i32.store offset=4 + i32.const 4416 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 4512 + i32.store + i32.const 1 + i32.const 4512 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store + i32.const 1 + i32.const 4464 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + 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 4560 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 4608 + i32.store + i32.const 1 + i32.const 4608 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store + i32.const 1 + i32.const 4560 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + 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 4640 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 4688 + i32.store + i32.const 1 + i32.const 4688 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4640 + i32.store + i32.const 1 + i32.const 4640 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + 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 4736 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 4784 + i32.store + i32.const 1 + i32.const 4784 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4736 + i32.store + i32.const 1 + i32.const 4736 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4352 + i32.store + i32.const 1 + i32.const 4352 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4928 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 4960 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 5104 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,u64>#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 96 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,u64>#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/console/timers + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 4832 + i32.store offset=4 + i32.const 4832 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=4 + i32.const 6160 + call $~lib/console/console.timeLog + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=4 + i32.const 6160 + call $~lib/console/console.timeEnd + global.get $~lib/memory/__stack_pointer + i32.const 6208 + i32.store offset=4 + i32.const 6208 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 6208 + i32.store offset=4 + i32.const 6208 + call $~lib/console/console.time + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store offset=4 + i32.const 6256 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store offset=4 + i32.const 6288 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store offset=4 + i32.const 6320 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store offset=4 + i32.const 6352 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 1073741820 + i32.gt_u + if + i32.const 5152 + i32.const 5200 + i32.const 49 + i32.const 43 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/utoa64 (param $0 i64) (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 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5888 + return + end + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.tee $3 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $do-continue|0 + local.get $2 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $3 + i32.const 10 + i32.div_u + local.tee $3 + br_if $do-continue|0 + end + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 + i64.lt_u + select + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000000 + i64.lt_u + select + local.get $0 + i64.const 1000000000000000 + i64.lt_u + select + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + loop $do-continue|00 + local.get $2 + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + local.get $0 + i64.const 10 + i64.div_u + local.tee $0 + i64.const 0 + i64.ne + br_if $do-continue|00 + end + end + 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/std-wasi/console.ts b/tests/compiler/std-wasi/console.ts new file mode 100644 index 0000000000..007cbb67e3 --- /dev/null +++ b/tests/compiler/std-wasi/console.ts @@ -0,0 +1,27 @@ +import "wasi"; + +// 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-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat new file mode 100644 index 0000000000..3b88df2d2a --- /dev/null +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -0,0 +1,6675 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (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 $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 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_i64_=>_i32 (func (param i32 i32 i64) (result i32))) + (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $none_=>_i64 (func (result i64))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) + (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) "<\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 \00\00\00\00\00\00\00\00\00") + (data (i32.const 112) "\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\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S\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\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G\00") + (data (i32.const 220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S\00\00\00") + (data (i32.const 252) ",\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\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\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L\00\00\00\00\00") + (data (i32.const 348) ",\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\00\00\00\00\00\00\00") + (data (i32.const 396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N\00\00\00") + (data (i32.const 428) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 476) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F\00\00\00\00\00") + (data (i32.const 508) "\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\00") + (data (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y\00\00\00\00\00") + (data (i32.const 572) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D\00\00\00") + (data (i32.const 652) ",\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\00\00\00\00\00\00\00") + (data (i32.const 700) ",\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\00\00\00\00\00\00\00") + (data (i32.const 748) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 796) "\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\00") + (data (i32.const 828) ",\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\00\00\00\00\00\00\00") + (data (i32.const 876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M\00\00\00\00\00\00\00") + (data (i32.const 908) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T\00\00\00") + (data (i32.const 940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T\00\00\00") + (data (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T\00\00\00") + (data (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G\00\00\00\00\00") + (data (i32.const 1036) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M\00\00\00\00\00") + (data (i32.const 1116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q\00\00\00") + (data (i32.const 1148) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 1196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R\00\00\00\00\00") + (data (i32.const 1228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L\00\00\00") + (data (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O\00\00\00\00\00\00\00\00\00") + (data (i32.const 1292) "\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\00") + (data (i32.const 1324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R\00\00\00") + (data (i32.const 1356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P\00\00\00\00\00") + (data (i32.const 1388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E\00\00\00") + (data (i32.const 1420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K\00\00\00") + (data (i32.const 1452) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1500) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1548) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1596) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1644) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1692) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E\00\00\00") + (data (i32.const 1772) "\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\00") + (data (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V\00\00\00") + (data (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T\00\00\00") + (data (i32.const 1868) "\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\00") + (data (i32.const 1900) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K\00\00\00") + (data (i32.const 1932) "\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\00") + (data (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M\00\00\00") + (data (i32.const 1996) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G\00\00\00") + (data (i32.const 2028) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 2076) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C\00\00\00") + (data (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S\00\00\00") + (data (i32.const 2140) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2188) "\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\00") + (data (i32.const 2220) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2268) ",\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\00") + (data (i32.const 2316) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\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\00N\00O\00T\00S\00U\00P\00") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y\00\00\00") + (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O\00\00\00\00\00") + (data (i32.const 2460) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2508) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M\00\00\00\00\00") + (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E\00\00\00\00\00") + (data (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O\00\00\00") + (data (i32.const 2652) ",\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\00") + (data (i32.const 2700) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E\00\00\00") + (data (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S\00\00\00\00\00") + (data (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E\00\00\00") + (data (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H\00\00\00\00\00") + (data (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E\00\00\00") + (data (i32.const 2908) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2956) "\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\00") + (data (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V\00\00\00\00\00") + (data (i32.const 3020) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 3068) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3116) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3180) "<\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 3244) "<\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 3308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3340) "\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 3372) ",\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 3420) ",\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 3468) ",\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 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3516) ",\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 3564) "\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 \00") + (data (i32.const 3596) ",\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 3644) ",\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 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3692) ",\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 3740) ",\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 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3788) ",\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 3836) "<\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 3904) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3936) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3964) "<\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 4028) ",\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 4080) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4108) ",\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 4156) "<\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 4220) "<\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\'\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4284) "\\\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\00\00\00\00\00") + (data (i32.const 4380) "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\'\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4460) "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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4540) "<\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 4604) ",\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\00\00\00\00\00\00\00") + (data (i32.const 4652) "|\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 4780) "<\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 4844) "\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 4876) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 5276) "\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 6332) "\\\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 6428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00:\00 \00\00\00\00\00\00\00\00\00") + (data (i32.const 6460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00m\00s\00\n\00\00\00\00\00\00\00") + (data (i32.const 6492) "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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6572) ",\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 6620) ",\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 6668) "\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 6700) "\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 6732) "\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 6764) "\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") + (data (i32.const 6800) "\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\00\00\00\00\00") + (table $0 1 funcref) + (global $~lib/process/process.stderr i32 (i32.const 2)) + (global $~lib/process/iobuf i32 (i32.const 112)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/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 1024)) + (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (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 6800)) + (global $~lib/memory/__data_end i32 (i32.const 6836)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 23220)) + (global $~lib/memory/__heap_base i32 (i32.const 23220)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~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/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/string/String.UTF8.encodeUnsafe (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 $12 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + i32.load16_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $5 + local.get $7 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + else + local.get $7 + i32.const 2048 + i32.lt_u + if + local.get $7 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.set $8 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $9 + local.get $5 + local.get $9 + i32.const 8 + i32.shl + local.get $8 + i32.or + i32.store16 + local.get $5 + i32.const 2 + i32.add + local.set $5 + else + local.get $7 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + else + i32.const 0 + end + if + local.get $0 + i32.load16_u offset=2 + local.set $9 + local.get $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $7 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $9 + i32.const 1023 + i32.and + i32.or + local.set $7 + local.get $7 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + local.set $8 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $10 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $5 + local.get $12 + i32.const 24 + i32.shl + local.get $11 + i32.const 16 + i32.shl + i32.or + local.get $10 + i32.const 8 + i32.shl + i32.or + local.get $8 + i32.or + i32.store + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $7 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.set $9 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $5 + local.get $12 + i32.const 8 + i32.shl + local.get $9 + i32.or + i32.store16 + local.get $5 + local.get $11 + i32.store8 offset=2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $3 + if + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + i32.const 0 + i32.store8 + end + local.get $5 + local.get $2 + i32.sub + ) + (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/bindings/wasi_snapshot_preview1/iovec#set:buf_len (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + (local $1 i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + 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 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 4 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 5 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 6 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 7 + i32.eq + br_if $case7|0 + local.get $1 + i32.const 8 + i32.eq + br_if $case8|0 + local.get $1 + i32.const 9 + i32.eq + br_if $case9|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case10|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case11|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case12|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case13|0 + local.get $1 + i32.const 14 + i32.eq + br_if $case14|0 + local.get $1 + i32.const 15 + i32.eq + br_if $case15|0 + local.get $1 + i32.const 16 + i32.eq + br_if $case16|0 + local.get $1 + i32.const 17 + i32.eq + br_if $case17|0 + local.get $1 + i32.const 18 + i32.eq + br_if $case18|0 + local.get $1 + i32.const 19 + i32.eq + br_if $case19|0 + local.get $1 + i32.const 20 + i32.eq + br_if $case20|0 + local.get $1 + i32.const 21 + i32.eq + br_if $case21|0 + local.get $1 + i32.const 22 + i32.eq + br_if $case22|0 + local.get $1 + i32.const 23 + i32.eq + br_if $case23|0 + local.get $1 + i32.const 24 + i32.eq + br_if $case24|0 + local.get $1 + i32.const 25 + i32.eq + br_if $case25|0 + local.get $1 + i32.const 26 + i32.eq + br_if $case26|0 + local.get $1 + i32.const 27 + i32.eq + br_if $case27|0 + local.get $1 + i32.const 28 + i32.eq + br_if $case28|0 + local.get $1 + i32.const 29 + i32.eq + br_if $case29|0 + local.get $1 + i32.const 30 + i32.eq + br_if $case30|0 + local.get $1 + i32.const 31 + i32.eq + br_if $case31|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case32|0 + local.get $1 + i32.const 33 + i32.eq + br_if $case33|0 + local.get $1 + i32.const 34 + i32.eq + br_if $case34|0 + local.get $1 + i32.const 35 + i32.eq + br_if $case35|0 + local.get $1 + i32.const 36 + i32.eq + br_if $case36|0 + local.get $1 + i32.const 37 + i32.eq + br_if $case37|0 + local.get $1 + i32.const 38 + i32.eq + br_if $case38|0 + local.get $1 + i32.const 39 + i32.eq + br_if $case39|0 + local.get $1 + i32.const 40 + i32.eq + br_if $case40|0 + local.get $1 + i32.const 41 + i32.eq + br_if $case41|0 + local.get $1 + i32.const 42 + i32.eq + br_if $case42|0 + local.get $1 + i32.const 43 + i32.eq + br_if $case43|0 + local.get $1 + i32.const 44 + i32.eq + br_if $case44|0 + local.get $1 + i32.const 45 + i32.eq + br_if $case45|0 + local.get $1 + i32.const 46 + i32.eq + br_if $case46|0 + local.get $1 + i32.const 47 + i32.eq + br_if $case47|0 + local.get $1 + i32.const 48 + i32.eq + br_if $case48|0 + local.get $1 + i32.const 49 + i32.eq + br_if $case49|0 + local.get $1 + i32.const 50 + i32.eq + br_if $case50|0 + local.get $1 + i32.const 51 + i32.eq + br_if $case51|0 + local.get $1 + i32.const 52 + i32.eq + br_if $case52|0 + local.get $1 + i32.const 53 + i32.eq + br_if $case53|0 + local.get $1 + i32.const 54 + i32.eq + br_if $case54|0 + local.get $1 + i32.const 55 + i32.eq + br_if $case55|0 + local.get $1 + i32.const 56 + i32.eq + br_if $case56|0 + local.get $1 + i32.const 57 + i32.eq + br_if $case57|0 + local.get $1 + i32.const 58 + i32.eq + br_if $case58|0 + local.get $1 + i32.const 59 + i32.eq + br_if $case59|0 + local.get $1 + i32.const 60 + i32.eq + br_if $case60|0 + local.get $1 + i32.const 61 + i32.eq + br_if $case61|0 + local.get $1 + i32.const 62 + i32.eq + br_if $case62|0 + local.get $1 + i32.const 63 + i32.eq + br_if $case63|0 + local.get $1 + i32.const 64 + i32.eq + br_if $case64|0 + local.get $1 + i32.const 65 + i32.eq + br_if $case65|0 + local.get $1 + i32.const 66 + i32.eq + br_if $case66|0 + local.get $1 + i32.const 67 + i32.eq + br_if $case67|0 + local.get $1 + i32.const 68 + i32.eq + br_if $case68|0 + local.get $1 + i32.const 69 + i32.eq + br_if $case69|0 + local.get $1 + i32.const 70 + i32.eq + br_if $case70|0 + local.get $1 + i32.const 71 + i32.eq + br_if $case71|0 + local.get $1 + i32.const 72 + i32.eq + br_if $case72|0 + local.get $1 + i32.const 73 + i32.eq + br_if $case73|0 + local.get $1 + i32.const 74 + i32.eq + br_if $case74|0 + local.get $1 + i32.const 75 + i32.eq + br_if $case75|0 + local.get $1 + i32.const 76 + i32.eq + br_if $case76|0 + br $break|0 + end + i32.const 160 + return + end + i32.const 208 + return + end + i32.const 240 + return + end + i32.const 272 + return + end + i32.const 320 + return + end + i32.const 368 + return + end + i32.const 416 + return + end + i32.const 448 + return + end + i32.const 496 + return + end + i32.const 528 + return + end + i32.const 560 + return + end + i32.const 592 + return + end + i32.const 640 + return + end + i32.const 672 + return + end + i32.const 720 + return + end + i32.const 768 + return + end + i32.const 816 + return + end + i32.const 848 + return + end + i32.const 896 + return + end + i32.const 928 + return + end + i32.const 960 + return + end + i32.const 992 + return + end + i32.const 1024 + return + end + i32.const 1056 + return + end + i32.const 1104 + return + end + i32.const 1136 + return + end + i32.const 1168 + return + end + i32.const 1216 + return + end + i32.const 1248 + return + end + i32.const 1280 + return + end + i32.const 1312 + return + end + i32.const 1344 + return + end + i32.const 1376 + return + end + i32.const 1408 + return + end + i32.const 1440 + return + end + i32.const 1472 + return + end + i32.const 1520 + return + end + i32.const 1568 + return + end + i32.const 1616 + return + end + i32.const 1664 + return + end + i32.const 1712 + return + end + i32.const 1760 + return + end + i32.const 1792 + return + end + i32.const 1824 + return + end + i32.const 1856 + return + end + i32.const 1888 + return + end + i32.const 1920 + return + end + i32.const 1952 + return + end + i32.const 1984 + return + end + i32.const 2016 + return + end + i32.const 2048 + return + end + i32.const 2096 + return + end + i32.const 2128 + return + end + i32.const 2160 + return + end + i32.const 2208 + return + end + i32.const 2240 + return + end + i32.const 2288 + return + end + i32.const 2336 + return + end + i32.const 2384 + return + end + i32.const 2416 + return + end + i32.const 2448 + return + end + i32.const 2480 + return + end + i32.const 2528 + return + end + i32.const 2576 + return + end + i32.const 2608 + return + end + i32.const 2640 + return + end + i32.const 2672 + return + end + i32.const 2720 + return + end + i32.const 2768 + return + end + i32.const 2800 + return + end + i32.const 2832 + return + end + i32.const 2864 + return + end + i32.const 2896 + return + end + i32.const 2928 + return + end + i32.const 2976 + return + end + i32.const 3008 + return + end + i32.const 3040 + return + end + i32.const 3088 + ) + (func $~lib/string/String.UTF8.byteLength (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 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + local.get $1 + i32.const 0 + i32.ne + local.set $4 + block $while-break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + local.get $6 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end + end + local.get $4 + ) + (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 3200 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 3200 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 3200 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 3264 + i32.const 3200 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/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 3200 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/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 3200 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 3200 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 3200 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/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/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 3200 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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/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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 3856 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 3856 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/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 3984 + i32.const 4048 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/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 3856 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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/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 + 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 + 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 3856 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/itcms/Object#set:rtId (param $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 + 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/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 3264 + i32.const 3856 + i32.const 256 + 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 3856 + i32.const 290 + 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/map/Map<~lib/string/String,u64>#set:buckets (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/map/Map<~lib/string/String,u64>#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map<~lib/string/String,u64>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map<~lib/string/String,u64>#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map<~lib/string/String,u64>#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map<~lib/string/String,u64>#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + 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-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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/process/process.hrtime (result i64) + (local $0 i32) + i32.const 1 + i64.const 0 + global.get $~lib/process/iobuf + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3136 + i32.const 59 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + i64.load + ) + (func $~lib/map/MapEntry<~lib/string/String,u64>#set:value (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=8 + ) + (func $~lib/map/MapEntry<~lib/string/String,u64>#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry<~lib/string/String,u64>#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + 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 4876 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 4876 + 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 + i32.const 1 + i32.shl + i32.add + 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 4876 + 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 4876 + 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/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 4876 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 4876 + 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 4876 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 4876 + 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/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 5296 + 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 5296 + 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 $7 i32) + 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-continue|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 6352 + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 6352 + 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 + local.set $7 + local.get $7 + br_if $do-continue|1 + end + end + ) + (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/utoa64 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $~lib/console/timers + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 3984 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 4128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 4560 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3264 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5296 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 6352 + 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/map/Map<~lib/string/String,u64>#__visit (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 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + local.get $2 + local.set $3 + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $4 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $3 + local.set $6 + local.get $6 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $6 + i32.load + local.set $7 + i32.const 0 + drop + local.get $7 + local.get $1 + call $~lib/rt/itcms/__visit + i32.const 0 + drop + end + local.get $3 + i32.const 24 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map<~lib/string/String,u64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,u64>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/map/Map<~lib/string/String,u64> + 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,u64> $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/map/Map<~lib/string/String,u64>~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/console + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 23248 + i32.const 23296 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf + i32.const 12 + local.set $4 + local.get $4 + i64.const 9071471065260641 + i64.store + local.get $4 + i32.const 7 + i32.add + local.set $4 + local.get $0 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + if + local.get $4 + local.get $1 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|0 + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $2 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $5 + local.set $2 + local.get $2 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|1 + local.get $3 + i32.const 10 + i32.div_u + local.set $7 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $3 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $7 + local.set $3 + local.get $3 + local.set $8 + local.get $8 + br_if $do-continue|1 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + i32.const 2601 + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.sub + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/writeString (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $2 + i32.const -1 + local.set $3 + i32.const -1 + local.set $4 + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $5 + local.get $5 + i32.const 4 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 3 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case3|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $1 + i32.load16_u offset=6 + local.set $4 + local.get $4 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=4 + local.set $3 + local.get $3 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=2 + local.set $2 + local.get $2 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.ge_s + if + br $break|0 + end + global.get $~lib/process/iobuf + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + i32.store + global.get $~lib/process/iobuf + i32.const 1 + local.get $2 + i32.const -1 + i32.ne + i32.add + local.get $3 + i32.const -1 + i32.ne + i32.add + local.get $4 + i32.const -1 + i32.ne + i32.add + i32.store offset=4 + global.get $~lib/process/iobuf + local.get $5 + local.get $2 + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 3 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $6 + local.get $6 + i32.const 65535 + i32.and + if + local.get $6 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3136 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $7 + local.get $7 + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $1 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.get $8 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 3136 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + local.get $8 + i32.store + global.get $~lib/process/iobuf + local.get $7 + i32.store offset=4 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $9 + local.get $8 + call $~lib/rt/tlsf/__free + local.get $9 + i32.const 65535 + i32.and + if + local.get $9 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3136 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~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 + i32.const 1 + drop + local.get $0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.assert (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/process/process.stderr + local.set $2 + local.get $2 + i32.const 64 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $2 + i32.const 3328 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/process/WritableStream#write<~lib/string/String> + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (param $0 i32) + (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/process/process.stdout + local.set $1 + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3328 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.debug (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + i32.const 3488 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3328 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.info (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + i32.const 3584 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3328 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.warn (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + i32.const 3664 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3328 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.error (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + i32.const 3760 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3328 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + 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 $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 + 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.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=16 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__eq + else + i32.const 0 + end + if + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/map/Map<~lib/string/String,u64>#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=8 + i32.const 1 + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + end + call $~lib/map/Map<~lib/string/String,u64>#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/map/Map<~lib/string/String,u64>#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 24 + 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 24 + 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=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load + local.tee $12 + i32.store offset=8 + local.get $11 + local.get $12 + call $~lib/map/MapEntry<~lib/string/String,u64>#set:key + local.get $11 + local.get $10 + i64.load offset=8 + call $~lib/map/MapEntry<~lib/string/String,u64>#set:value + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $12 + local.tee $13 + i32.store offset=12 + i32.const 1 + drop + local.get $13 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=16 + local.get $15 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + end + 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<~lib/string/String,u64>#set:taggedNext + local.get $14 + local.get $8 + i32.store + local.get $8 + i32.const 24 + i32.add + local.set $8 + end + local.get $6 + i32.const 24 + i32.add + local.set $6 + br $while-continue|0 + end + end + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,u64>#set:buckets + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,u64>#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/map/Map<~lib/string/String,u64>#set:entries + local.get $0 + local.get $4 + call $~lib/map/Map<~lib/string/String,u64>#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/map/Map<~lib/string/String,u64>#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#set (param $0 i32) (param $1 i32) (param $2 i64) (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $3 + i32.store + i32.const 1 + drop + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $4 + call $~lib/map/Map<~lib/string/String,u64>#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,u64>#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map<~lib/string/String,u64>#set:entriesOffset + local.get $6 + i32.const 24 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry<~lib/string/String,u64>#set:key + i32.const 1 + drop + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $5 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,u64>#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map<~lib/string/String,u64>#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry<~lib/string/String,u64>#set:taggedNext + local.get $6 + local.get $5 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $~lib/console/console.time (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/process/process.stdout + local.set $1 + global.get $~lib/console/timers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#has + if + local.get $1 + i32.const 4240 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 4304 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/console/timers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/process.hrtime + call $~lib/map/Map<~lib/string/String,u64>#set + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#get (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=8 + i32.const 1 + drop + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 + end + call $~lib/map/Map<~lib/string/String,u64>#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 4560 + i32.const 4624 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $3 + i64.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/console/timeLogImpl (param $0 i32) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/console/timers + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/map/Map<~lib/string/String,u64>#get + local.set $1 + call $~lib/process/process.hrtime + local.set $2 + local.get $2 + local.get $1 + i64.sub + local.set $3 + local.get $3 + i64.const 1000000 + i64.div_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 10 + call $~lib/number/U64#toString + local.tee $5 + i32.store offset=8 + global.get $~lib/process/process.stdout + local.set $6 + local.get $6 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $6 + i32.const 6448 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $6 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $6 + i32.const 6480 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.timeLog (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/process/process.stdout + local.set $1 + global.get $~lib/console/timers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#has + i32.eqz + if + local.get $1 + i32.const 4400 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 4480 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/console/timeLogImpl + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,u64>#delete (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=8 + i32.const 1 + drop + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.4 + end + call $~lib/map/Map<~lib/string/String,u64>#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $3 + local.get $3 + i32.load offset=16 + i32.const 1 + i32.or + call $~lib/map/MapEntry<~lib/string/String,u64>#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map<~lib/string/String,u64>#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/map/Map<~lib/string/String,u64>#rehash + end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/console/console.timeEnd (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/process/process.stdout + local.set $1 + global.get $~lib/console/timers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#has + i32.eqz + if + local.get $1 + i32.const 4400 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 6512 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/console/timeLogImpl + global.get $~lib/console/timers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/map/Map<~lib/string/String,u64>#delete + drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/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 3360 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.assert + i32.const 3392 + 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 3440 + 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 3536 + 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 3616 + 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 3712 + 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 3904 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 3936 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 4080 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $~lib/map/Map<~lib/string/String,u64>#constructor + global.set $~lib/console/timers + i32.const 3808 + 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 3808 + 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 3808 + 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 6592 + 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 6592 + 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 6640 + 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 6640 + 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 6688 + 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 6720 + 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 6752 + 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 6784 + 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 + ) + (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 4128 + i32.const 4176 + i32.const 49 + i32.const 43 + call $~lib/wasi/index/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 + local.get $2 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/map/Map<~lib/string/String,u64>#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 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,u64>#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map<~lib/string/String,u64>#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,u64>#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map<~lib/string/String,u64>#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,u64>#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,u64>#set:entriesCount + 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/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 4 + 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 + end + if + i32.const 4672 + i32.const 4800 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 4864 + 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 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) +) diff --git a/tests/compiler/std-wasi/crypto.json b/tests/compiler/std-wasi/crypto.json new file mode 100644 index 0000000000..cce2bd869a --- /dev/null +++ b/tests/compiler/std-wasi/crypto.json @@ -0,0 +1,13 @@ +{ + "asc_flags": [ + "--explicitStart" + ], + "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.optimized.wat new file mode 100644 index 0000000000..424fca6ce6 --- /dev/null +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -0,0 +1,3845 @@ +(module + (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_=>_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_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) + (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\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1660) ",") + (data (i32.const 1672) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1708) ",") + (data (i32.const 1720) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1756) ",") + (data (i32.const 1768) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1804) "\1c") + (data (i32.const 1816) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 1836) ",") + (data (i32.const 1848) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 1884) "\1c") + (data (i32.const 1896) "\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 1916) "\1c") + (data (i32.const 1928) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 1948) "\1c") + (data (i32.const 1960) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 1980) ",") + (data (i32.const 1992) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 2028) "\1c") + (data (i32.const 2040) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 2060) ",") + (data (i32.const 2072) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 2108) ",") + (data (i32.const 2120) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 2156) ",") + (data (i32.const 2168) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 2204) "\1c") + (data (i32.const 2216) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 2236) ",") + (data (i32.const 2248) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 2284) "\1c") + (data (i32.const 2296) "\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 2316) "\1c") + (data (i32.const 2328) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 2348) "\1c") + (data (i32.const 2360) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 2380) "\1c") + (data (i32.const 2392) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 2412) "\1c") + (data (i32.const 2424) "\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2444) ",") + (data (i32.const 2456) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2492) "\1c") + (data (i32.const 2504) "\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2524) "\1c") + (data (i32.const 2536) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2556) ",") + (data (i32.const 2568) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2604) "\1c") + (data (i32.const 2616) "\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2636) "\1c") + (data (i32.const 2648) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2668) "\1c") + (data (i32.const 2680) "\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2700) "\1c") + (data (i32.const 2712) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2732) "\1c") + (data (i32.const 2744) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2764) "\1c") + (data (i32.const 2776) "\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2796) "\1c") + (data (i32.const 2808) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 2828) "\1c") + (data (i32.const 2840) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 2860) ",") + (data (i32.const 2872) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 2908) ",") + (data (i32.const 2920) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 2956) ",") + (data (i32.const 2968) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 3004) ",") + (data (i32.const 3016) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 3052) ",") + (data (i32.const 3064) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 3100) ",") + (data (i32.const 3112) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 3148) "\1c") + (data (i32.const 3160) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 3180) "\1c") + (data (i32.const 3192) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 3212) "\1c") + (data (i32.const 3224) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 3244) "\1c") + (data (i32.const 3256) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 3276) "\1c") + (data (i32.const 3288) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 3308) "\1c") + (data (i32.const 3320) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 3340) "\1c") + (data (i32.const 3352) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 3372) "\1c") + (data (i32.const 3384) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 3404) "\1c") + (data (i32.const 3416) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3436) ",") + (data (i32.const 3448) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3484) "\1c") + (data (i32.const 3496) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3516) "\1c") + (data (i32.const 3528) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3548) ",") + (data (i32.const 3560) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3596) "\1c") + (data (i32.const 3608) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3628) ",") + (data (i32.const 3640) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3676) ",") + (data (i32.const 3688) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3724) ",") + (data (i32.const 3736) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3772) "\1c") + (data (i32.const 3784) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3804) "\1c") + (data (i32.const 3816) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 3836) "\1c") + (data (i32.const 3848) "\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 3868) ",") + (data (i32.const 3880) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 3916) ",") + (data (i32.const 3928) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 3964) "\1c") + (data (i32.const 3976) "\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 3996) "\1c") + (data (i32.const 4008) "\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 4028) "\1c") + (data (i32.const 4040) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 4060) ",") + (data (i32.const 4072) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 4108) ",") + (data (i32.const 4120) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 4156) "\1c") + (data (i32.const 4168) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 4188) "\1c") + (data (i32.const 4200) "\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 4220) "\1c") + (data (i32.const 4232) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 4252) "\1c") + (data (i32.const 4264) "\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 4284) "\1c") + (data (i32.const 4296) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 4316) ",") + (data (i32.const 4328) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 4364) "\1c") + (data (i32.const 4376) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 4396) "\1c") + (data (i32.const 4408) "\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 4428) ",") + (data (i32.const 4440) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4476) ",") + (data (i32.const 4488) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4524) ",") + (data (i32.const 4536) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00c\00r\00y\00p\00t\00o\00.\00t\00s") + (data (i32.const 4572) "L") + (data (i32.const 4584) "\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 4652) "\1c") + (data (i32.const 4664) "\01") + (data (i32.const 4684) "|") + (data (i32.const 4696) "\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 4812) "<") + (data (i32.const 4824) "\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 4876) "\1c") + (data (i32.const 4888) "\01\00\00\00\02\00\00\000") + (data (i32.const 4908) "\\") + (data (i32.const 4920) "\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 5004) "\1c") + (data (i32.const 5016) "\01\00\00\00\02\00\00\00,") + (data (i32.const 5036) "\1c") + (data (i32.const 5048) "\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 5100) "<") + (data (i32.const 5112) "\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 5164) "\1c") + (data (i32.const 5176) "\01\00\00\00\02\00\00\00\n") + (data (i32.const 5200) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 5228) "A\00\00\00\02") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std-wasi/crypto/buf (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 21620)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.store8 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $1 + i32.const 3 + i32.add + end + end + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $2 + i32.sub + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $std-wasi/crypto/buf + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 4928 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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 21620 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 1232 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 5200 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 5204 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 1504 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1504 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 1504 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 1504 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 21632 + i32.const 0 + i32.store + i32.const 23200 + 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 21632 + 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 21632 + 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 21632 + i32.const 23204 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 21632 + 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 21620 + 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.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 1504 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 21620 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 21620 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1504 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + local.get $0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 1168 + i32.const 1504 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + 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 1504 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 1504 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + 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 1504 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 $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 $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 + 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/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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1168 + i32.const 1232 + i32.const 256 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.store + local.get $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 290 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end + ) + (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $case13|0 $case14|0 $case15|0 $case16|0 $case17|0 $case18|0 $case19|0 $case20|0 $case21|0 $case22|0 $case23|0 $case24|0 $case25|0 $case26|0 $case27|0 $case28|0 $case29|0 $case30|0 $case31|0 $case32|0 $case33|0 $case34|0 $case35|0 $case36|0 $case37|0 $case38|0 $case39|0 $case40|0 $case41|0 $case42|0 $case43|0 $case44|0 $case45|0 $case46|0 $case47|0 $case48|0 $case49|0 $case50|0 $case51|0 $case52|0 $case53|0 $case54|0 $case55|0 $case56|0 $case57|0 $case58|0 $case59|0 $case60|0 $case61|0 $case62|0 $case63|0 $case64|0 $case65|0 $case66|0 $case67|0 $case68|0 $case69|0 $case70|0 $case71|0 $case72|0 $case73|0 $case74|0 $case75|0 $case76|0 $break|0 + end + i32.const 1568 + return + end + i32.const 1616 + return + end + i32.const 1648 + return + end + i32.const 1680 + return + end + i32.const 1728 + return + end + i32.const 1776 + return + end + i32.const 1824 + return + end + i32.const 1856 + return + end + i32.const 1904 + return + end + i32.const 1936 + return + end + i32.const 1968 + return + end + i32.const 2000 + return + end + i32.const 2048 + return + end + i32.const 2080 + return + end + i32.const 2128 + return + end + i32.const 2176 + return + end + i32.const 2224 + return + end + i32.const 2256 + return + end + i32.const 2304 + return + end + i32.const 2336 + return + end + i32.const 2368 + return + end + i32.const 2400 + return + end + i32.const 2432 + return + end + i32.const 2464 + return + end + i32.const 2512 + return + end + i32.const 2544 + return + end + i32.const 2576 + return + end + i32.const 2624 + return + end + i32.const 2656 + return + end + i32.const 2688 + return + end + i32.const 2720 + return + end + i32.const 2752 + return + end + i32.const 2784 + return + end + i32.const 2816 + return + end + i32.const 2848 + return + end + i32.const 2880 + return + end + i32.const 2928 + return + end + i32.const 2976 + return + end + i32.const 3024 + return + end + i32.const 3072 + return + end + i32.const 3120 + return + end + i32.const 3168 + return + end + i32.const 3200 + return + end + i32.const 3232 + return + end + i32.const 3264 + return + end + i32.const 3296 + return + end + i32.const 3328 + return + end + i32.const 3360 + return + end + i32.const 3392 + return + end + i32.const 3424 + return + end + i32.const 3456 + return + end + i32.const 3504 + return + end + i32.const 3536 + return + end + i32.const 3568 + return + end + i32.const 3616 + return + end + i32.const 3648 + return + end + i32.const 3696 + return + end + i32.const 3744 + return + end + i32.const 3792 + return + end + i32.const 3824 + return + end + i32.const 3856 + return + end + i32.const 3888 + return + end + i32.const 3936 + return + end + i32.const 3984 + return + end + i32.const 4016 + return + end + i32.const 4048 + return + end + i32.const 4080 + return + end + i32.const 4128 + return + end + i32.const 4176 + return + end + i32.const 4208 + return + end + i32.const 4240 + return + end + i32.const 4272 + return + end + i32.const 4304 + return + end + i32.const 4336 + return + end + i32.const 4384 + return + end + i32.const 4416 + return + end + i32.const 4448 + return + end + i32.const 4496 + ) + (func $~lib/crypto/crypto.getRandomValues (param $0 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=8 + call $~lib/bindings/wasi_snapshot_preview1/random_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4544 + i32.const 9 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 255 + i32.and + 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 $1 + i32.const 255 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + 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/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/crypto + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 5236 + i32.lt_s + if + i32.const 21648 + i32.const 21696 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + i32.store + i32.const 12 + i64.const 9071471065260641 + i64.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + else + i32.const 19 + end + local.tee $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $4 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $4 + i32.add + local.set $4 + end + local.get $4 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.tee $0 + local.get $4 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $2 + i32.const 10 + i32.div_u + local.tee $2 + br_if $do-continue|0 + end + local.get $0 + local.get $4 + i32.add + local.tee $0 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.tee $1 + local.get $0 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $3 + i32.const 10 + i32.div_u + local.tee $3 + br_if $do-continue|1 + end + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 2601 + i32.store16 + i32.const 4 + local.get $0 + i32.const 10 + i32.sub + i32.store + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4672 + return + end + i32.const 0 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/string/joinIntegerArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4672 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load8_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 $__inlined_func$~lib/util/number/utoa32 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4896 + local.set $0 + br $__inlined_func$~lib/util/number/utoa32 + end + local.get $1 + call $~lib/util/number/decimalCount32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + 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 $2 + call $~lib/util/number/utoa_dec_simple + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 5024 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 5020 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 5024 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5024 + i32.store + call $~lib/util/string/joinIntegerArray + 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 + ) + (func $~lib/string/String.__concat (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 5056 + i32.store + i32.const 5056 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + i32.const 4588 + i32.load + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $__inlined_func$~lib/string/String#concat + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + 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 + i32.add + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4672 + local.set $1 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 + i32.const 4592 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/process/writeString (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $3 + i32.const -1 + local.set $4 + i32.const -1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load16_u offset=6 + local.tee $1 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u offset=4 + local.tee $4 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u offset=2 + local.tee $3 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u + local.tee $2 + i32.const 128 + i32.ge_u + br_if $break|0 + i32.const 5072 + i32.const 5080 + i32.store + i32.const 5076 + local.get $3 + i32.const -1 + i32.ne + i32.const 1 + i32.add + local.get $4 + i32.const -1 + i32.ne + i32.add + local.get $1 + i32.const -1 + i32.ne + i32.add + i32.store + i32.const 5080 + local.get $2 + local.get $3 + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 16 + i32.shl + i32.or + local.get $1 + i32.const 24 + i32.shl + i32.or + i32.store + i32.const 1 + i32.const 5072 + i32.const 1 + i32.const 5084 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 5120 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $1 + i32.const 0 + local.set $2 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load16_u + local.tee $4 + i32.const 128 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.add + else + local.get $4 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $3 + local.get $1 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $4 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $1 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $1 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $2 + i32.ne + if + i32.const 0 + i32.const 5120 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + i32.const 5072 + local.get $1 + i32.store + i32.const 5076 + local.get $2 + i32.store + i32.const 1 + i32.const 5072 + i32.const 1 + i32.const 5080 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $0 + local.get $1 + call $~lib/rt/tlsf/__free + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 5120 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~lib/string/String> (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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 5184 + i32.store + i32.const 5184 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/crypto + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 8 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std-wasi/crypto/buf + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/crypto/buf + local.tee $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) +) diff --git a/tests/compiler/std-wasi/crypto.ts b/tests/compiler/std-wasi/crypto.ts new file mode 100644 index 0000000000..d2247bc387 --- /dev/null +++ b/tests/compiler/std-wasi/crypto.ts @@ -0,0 +1,12 @@ +import "wasi"; + +var buf = new Uint8Array(8); + +crypto.getRandomValues(buf); +console.log("crypto.getRandomValues: " + buf.toString()); + +crypto.getRandomValues(buf); +console.log("crypto.getRandomValues: " + buf.toString()); + +crypto.getRandomValues(buf); +console.log("crypto.getRandomValues: " + buf.toString()); diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat new file mode 100644 index 0000000000..e502817620 --- /dev/null +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -0,0 +1,6691 @@ +(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 $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_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) + (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&\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 124) "<\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 188) "<\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 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\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\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 380) ",\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 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) "<\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 524) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) "\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\00") + (data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S\00\00\00") + (data (i32.const 636) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 684) ",\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\00\00\00\00\00") + (data (i32.const 732) ",\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\00\00\00\00\00\00\00") + (data (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N\00\00\00") + (data (i32.const 812) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F\00\00\00\00\00") + (data (i32.const 892) "\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\00") + (data (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y\00\00\00\00\00") + (data (i32.const 956) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D\00\00\00") + (data (i32.const 1036) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1084) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1132) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1180) "\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\00") + (data (i32.const 1212) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M\00\00\00\00\00\00\00") + (data (i32.const 1292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T\00\00\00") + (data (i32.const 1324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T\00\00\00") + (data (i32.const 1356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T\00\00\00") + (data (i32.const 1388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G\00\00\00\00\00") + (data (i32.const 1420) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M\00\00\00\00\00") + (data (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q\00\00\00") + (data (i32.const 1532) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R\00\00\00\00\00") + (data (i32.const 1612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L\00\00\00") + (data (i32.const 1644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O\00\00\00\00\00\00\00\00\00") + (data (i32.const 1676) "\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\00") + (data (i32.const 1708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R\00\00\00") + (data (i32.const 1740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P\00\00\00\00\00") + (data (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E\00\00\00") + (data (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K\00\00\00") + (data (i32.const 1836) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1884) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1932) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1980) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2028) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2076) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E\00\00\00") + (data (i32.const 2156) "\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\00") + (data (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V\00\00\00") + (data (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T\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\00N\00O\00E\00X\00E\00C\00") + (data (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K\00\00\00") + (data (i32.const 2316) "\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\00") + (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M\00\00\00") + (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G\00\00\00") + (data (i32.const 2412) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C\00\00\00") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S\00\00\00") + (data (i32.const 2524) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2572) "\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\00") + (data (i32.const 2604) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2652) ",\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\00") + (data (i32.const 2700) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2748) "\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\00") + (data (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y\00\00\00") + (data (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O\00\00\00\00\00") + (data (i32.const 2844) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2892) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M\00\00\00\00\00") + (data (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E\00\00\00\00\00") + (data (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O\00\00\00") + (data (i32.const 3036) ",\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\00") + (data (i32.const 3084) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E\00\00\00") + (data (i32.const 3164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S\00\00\00\00\00") + (data (i32.const 3196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E\00\00\00") + (data (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H\00\00\00\00\00") + (data (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E\00\00\00") + (data (i32.const 3292) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3340) "\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\00") + (data (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V\00\00\00\00\00") + (data (i32.const 3404) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 3452) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3500) ",\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\00") + (data (i32.const 3548) "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 \00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3628) "\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 3660) "|\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 3788) "<\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 3852) "\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 3884) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 4284) "\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 5340) "\\\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 5436) "\1c\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") + (data (i32.const 5468) "\1c\00\00\00\00\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 5504) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5532) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5596) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5632) "\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\00\00\00") + (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $std-wasi/crypto/buf (mut i32) (i32.const 0)) + (global $~lib/process/process.stdout i32 (i32.const 1)) + (global $~lib/process/iobuf i32 (i32.const 5504)) + (global $~lib/rt/__rtti_base i32 (i32.const 5632)) + (global $~lib/memory/__data_end i32 (i32.const 5668)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22052)) + (global $~lib/memory/__heap_base i32 (i32.const 22052)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (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.UTF8.encodeUnsafe (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 $12 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + i32.load16_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $5 + local.get $7 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + else + local.get $7 + i32.const 2048 + i32.lt_u + if + local.get $7 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.set $8 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $9 + local.get $5 + local.get $9 + i32.const 8 + i32.shl + local.get $8 + i32.or + i32.store16 + local.get $5 + i32.const 2 + i32.add + local.set $5 + else + local.get $7 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + else + i32.const 0 + end + if + local.get $0 + i32.load16_u offset=2 + local.set $9 + local.get $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $7 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $9 + i32.const 1023 + i32.and + i32.or + local.set $7 + local.get $7 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + local.set $8 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $10 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $5 + local.get $12 + i32.const 24 + i32.shl + local.get $11 + i32.const 16 + i32.shl + i32.or + local.get $10 + i32.const 8 + i32.shl + i32.or + local.get $8 + i32.or + i32.store + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $7 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.set $9 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $5 + local.get $12 + i32.const 8 + i32.shl + local.get $9 + i32.or + i32.store16 + local.get $5 + local.get $11 + i32.store8 offset=2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $3 + if + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + i32.const 0 + i32.store8 + end + local.get $5 + local.get $2 + i32.sub + ) + (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/bindings/wasi_snapshot_preview1/iovec#set:buf_len (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 208 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 208 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/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 336 + i32.const 400 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/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 208 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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 480 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 480 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 480 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 480 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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 + 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 + 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 208 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 144 + i32.const 480 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/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 480 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/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 480 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 480 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 480 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/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 + 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/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 144 + i32.const 208 + i32.const 256 + 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 208 + i32.const 290 + 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#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/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + (local $1 i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + 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 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 4 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 5 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 6 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 7 + i32.eq + br_if $case7|0 + local.get $1 + i32.const 8 + i32.eq + br_if $case8|0 + local.get $1 + i32.const 9 + i32.eq + br_if $case9|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case10|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case11|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case12|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case13|0 + local.get $1 + i32.const 14 + i32.eq + br_if $case14|0 + local.get $1 + i32.const 15 + i32.eq + br_if $case15|0 + local.get $1 + i32.const 16 + i32.eq + br_if $case16|0 + local.get $1 + i32.const 17 + i32.eq + br_if $case17|0 + local.get $1 + i32.const 18 + i32.eq + br_if $case18|0 + local.get $1 + i32.const 19 + i32.eq + br_if $case19|0 + local.get $1 + i32.const 20 + i32.eq + br_if $case20|0 + local.get $1 + i32.const 21 + i32.eq + br_if $case21|0 + local.get $1 + i32.const 22 + i32.eq + br_if $case22|0 + local.get $1 + i32.const 23 + i32.eq + br_if $case23|0 + local.get $1 + i32.const 24 + i32.eq + br_if $case24|0 + local.get $1 + i32.const 25 + i32.eq + br_if $case25|0 + local.get $1 + i32.const 26 + i32.eq + br_if $case26|0 + local.get $1 + i32.const 27 + i32.eq + br_if $case27|0 + local.get $1 + i32.const 28 + i32.eq + br_if $case28|0 + local.get $1 + i32.const 29 + i32.eq + br_if $case29|0 + local.get $1 + i32.const 30 + i32.eq + br_if $case30|0 + local.get $1 + i32.const 31 + i32.eq + br_if $case31|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case32|0 + local.get $1 + i32.const 33 + i32.eq + br_if $case33|0 + local.get $1 + i32.const 34 + i32.eq + br_if $case34|0 + local.get $1 + i32.const 35 + i32.eq + br_if $case35|0 + local.get $1 + i32.const 36 + i32.eq + br_if $case36|0 + local.get $1 + i32.const 37 + i32.eq + br_if $case37|0 + local.get $1 + i32.const 38 + i32.eq + br_if $case38|0 + local.get $1 + i32.const 39 + i32.eq + br_if $case39|0 + local.get $1 + i32.const 40 + i32.eq + br_if $case40|0 + local.get $1 + i32.const 41 + i32.eq + br_if $case41|0 + local.get $1 + i32.const 42 + i32.eq + br_if $case42|0 + local.get $1 + i32.const 43 + i32.eq + br_if $case43|0 + local.get $1 + i32.const 44 + i32.eq + br_if $case44|0 + local.get $1 + i32.const 45 + i32.eq + br_if $case45|0 + local.get $1 + i32.const 46 + i32.eq + br_if $case46|0 + local.get $1 + i32.const 47 + i32.eq + br_if $case47|0 + local.get $1 + i32.const 48 + i32.eq + br_if $case48|0 + local.get $1 + i32.const 49 + i32.eq + br_if $case49|0 + local.get $1 + i32.const 50 + i32.eq + br_if $case50|0 + local.get $1 + i32.const 51 + i32.eq + br_if $case51|0 + local.get $1 + i32.const 52 + i32.eq + br_if $case52|0 + local.get $1 + i32.const 53 + i32.eq + br_if $case53|0 + local.get $1 + i32.const 54 + i32.eq + br_if $case54|0 + local.get $1 + i32.const 55 + i32.eq + br_if $case55|0 + local.get $1 + i32.const 56 + i32.eq + br_if $case56|0 + local.get $1 + i32.const 57 + i32.eq + br_if $case57|0 + local.get $1 + i32.const 58 + i32.eq + br_if $case58|0 + local.get $1 + i32.const 59 + i32.eq + br_if $case59|0 + local.get $1 + i32.const 60 + i32.eq + br_if $case60|0 + local.get $1 + i32.const 61 + i32.eq + br_if $case61|0 + local.get $1 + i32.const 62 + i32.eq + br_if $case62|0 + local.get $1 + i32.const 63 + i32.eq + br_if $case63|0 + local.get $1 + i32.const 64 + i32.eq + br_if $case64|0 + local.get $1 + i32.const 65 + i32.eq + br_if $case65|0 + local.get $1 + i32.const 66 + i32.eq + br_if $case66|0 + local.get $1 + i32.const 67 + i32.eq + br_if $case67|0 + local.get $1 + i32.const 68 + i32.eq + br_if $case68|0 + local.get $1 + i32.const 69 + i32.eq + br_if $case69|0 + local.get $1 + i32.const 70 + i32.eq + br_if $case70|0 + local.get $1 + i32.const 71 + i32.eq + br_if $case71|0 + local.get $1 + i32.const 72 + i32.eq + br_if $case72|0 + local.get $1 + i32.const 73 + i32.eq + br_if $case73|0 + local.get $1 + i32.const 74 + i32.eq + br_if $case74|0 + local.get $1 + i32.const 75 + i32.eq + br_if $case75|0 + local.get $1 + i32.const 76 + i32.eq + br_if $case76|0 + br $break|0 + end + i32.const 544 + return + end + i32.const 592 + return + end + i32.const 624 + return + end + i32.const 656 + return + end + i32.const 704 + return + end + i32.const 752 + return + end + i32.const 800 + return + end + i32.const 832 + return + end + i32.const 880 + return + end + i32.const 912 + return + end + i32.const 944 + return + end + i32.const 976 + return + end + i32.const 1024 + return + end + i32.const 1056 + return + end + i32.const 1104 + return + end + i32.const 1152 + return + end + i32.const 1200 + return + end + i32.const 1232 + return + end + i32.const 1280 + return + end + i32.const 1312 + return + end + i32.const 1344 + return + end + i32.const 1376 + return + end + i32.const 1408 + return + end + i32.const 1440 + return + end + i32.const 1488 + return + end + i32.const 1520 + return + end + i32.const 1552 + return + end + i32.const 1600 + return + end + i32.const 1632 + return + end + i32.const 1664 + return + end + i32.const 1696 + return + end + i32.const 1728 + return + end + i32.const 1760 + return + end + i32.const 1792 + return + end + i32.const 1824 + return + end + i32.const 1856 + return + end + i32.const 1904 + return + end + i32.const 1952 + return + end + i32.const 2000 + return + end + i32.const 2048 + return + end + i32.const 2096 + return + end + i32.const 2144 + return + end + i32.const 2176 + return + end + i32.const 2208 + return + end + i32.const 2240 + return + end + i32.const 2272 + return + end + i32.const 2304 + return + end + i32.const 2336 + return + end + i32.const 2368 + return + end + i32.const 2400 + return + end + i32.const 2432 + return + end + i32.const 2480 + return + end + i32.const 2512 + return + end + i32.const 2544 + return + end + i32.const 2592 + return + end + i32.const 2624 + return + end + i32.const 2672 + return + end + i32.const 2720 + return + end + i32.const 2768 + return + end + i32.const 2800 + return + end + i32.const 2832 + return + end + i32.const 2864 + return + end + i32.const 2912 + return + end + i32.const 2960 + return + end + i32.const 2992 + return + end + i32.const 3024 + return + end + i32.const 3056 + return + end + i32.const 3104 + return + end + i32.const 3152 + return + end + i32.const 3184 + return + end + i32.const 3216 + return + end + i32.const 3248 + return + end + i32.const 3280 + return + end + i32.const 3312 + return + end + i32.const 3360 + return + end + i32.const 3392 + return + end + i32.const 3424 + return + end + i32.const 3472 + ) + (func $~lib/crypto/crypto.getRandomValues (param $0 i32) + (local $1 i32) + local.get $0 + i32.load + local.get $0 + i32.load offset=8 + call $~lib/bindings/wasi_snapshot_preview1/random_get + local.set $1 + local.get $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3520 + i32.const 9 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/typedarray/Uint8Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=8 + ) + (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 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + 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 3884 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 3884 + 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 + i32.const 1 + i32.shl + i32.add + 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 3884 + 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 3884 + 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 4304 + 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 4304 + 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 $7 i32) + 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-continue|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 5360 + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 5360 + 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 + local.set $7 + local.get $7 + br_if $do-continue|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.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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.UTF8.byteLength (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 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + local.get $1 + i32.const 0 + i32.ne + local.set $4 + block $while-break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + local.get $6 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end + end + local.get $4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std-wasi/crypto/buf + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 4304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5360 + 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/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/typedarray/Uint8Array + block $~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/Uint8Array $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/Uint8Array~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/crypto + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 22080 + i32.const 22128 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf + i32.const 12 + local.set $4 + local.get $4 + i64.const 9071471065260641 + i64.store + local.get $4 + i32.const 7 + i32.add + local.set $4 + local.get $0 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + if + local.get $4 + local.get $1 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|0 + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $2 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $5 + local.set $2 + local.get $2 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|1 + local.get $3 + i32.const 10 + i32.div_u + local.set $7 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $3 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $7 + local.set $3 + local.get $3 + local.set $8 + local.get $8 + br_if $do-continue|1 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + i32.const 2601 + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.sub + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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 8 + 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 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + 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 + 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 + local.set $10 + local.get $10 + i32.eqz + if + i32.const 3648 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 3648 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $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 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 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 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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 5456 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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 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 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 5488 + local.tee $1 + i32.store + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 3648 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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 offset=8 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String.__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 + i64.const 0 + i64.store + local.get $0 + i32.const 5488 + local.get $0 + i32.const 0 + i32.ne + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/process/writeString (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $2 + i32.const -1 + local.set $3 + i32.const -1 + local.set $4 + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $5 + local.get $5 + i32.const 4 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 3 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case3|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $1 + i32.load16_u offset=6 + local.set $4 + local.get $4 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=4 + local.set $3 + local.get $3 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=2 + local.set $2 + local.get $2 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.ge_s + if + br $break|0 + end + global.get $~lib/process/iobuf + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + i32.store + global.get $~lib/process/iobuf + i32.const 1 + local.get $2 + i32.const -1 + i32.ne + i32.add + local.get $3 + i32.const -1 + i32.ne + i32.add + local.get $4 + i32.const -1 + i32.ne + i32.add + i32.store offset=4 + global.get $~lib/process/iobuf + local.get $5 + local.get $2 + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 3 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $6 + local.get $6 + i32.const 65535 + i32.and + if + local.get $6 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 5552 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $7 + local.get $7 + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $1 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.get $8 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 5552 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + local.get $8 + i32.store + global.get $~lib/process/iobuf + local.get $7 + i32.store offset=4 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $9 + local.get $8 + call $~lib/rt/tlsf/__free + local.get $9 + i32.const 65535 + i32.and + if + local.get $9 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 5552 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~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 + i32.const 1 + drop + local.get $0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 5616 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std-wasi/crypto + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 8 + call $~lib/typedarray/Uint8Array#constructor + global.set $std-wasi/crypto/buf + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + i32.const 3568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + i32.const 3568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/crypto/crypto.getRandomValues + i32.const 3568 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + global.get $std-wasi/crypto/buf + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + call $~lib/typedarray/Uint8Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 32 + i32.const 80 + i32.const 18 + i32.const 57 + call $~lib/wasi/index/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 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/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 4 + 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 + end + if + i32.const 3680 + i32.const 3808 + i32.const 350 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 3872 + 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 + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) +) diff --git a/tests/compiler/std-wasi/process.json b/tests/compiler/std-wasi/process.json new file mode 100644 index 0000000000..ca8bfd0d09 --- /dev/null +++ b/tests/compiler/std-wasi/process.json @@ -0,0 +1,21 @@ +{ + "asc_flags": [ + "--explicitStart" + ], + "asc_wasi": { + "args": [ + "firstArg", + "secondArg", + "thirdArg" + ], + "env": { + "FIRSTENV": "firstEnv", + "SECONDENV": "secondEnv", + "THIRDENV": "thirdEnv" + }, + "returnOnExit": true + }, + "features": [ + "bigint-integration" + ] +} diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat new file mode 100644 index 0000000000..f6421a3dc6 --- /dev/null +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -0,0 +1,5515 @@ +(module + (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 $i32_=>_i32 (func (param i32) (result 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 (func (param i32 i32 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "args_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/args_sizes_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "args_get" (func $~lib/bindings/wasi_snapshot_preview1/args_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "environ_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "environ_get" (func $~lib/bindings/wasi_snapshot_preview1/environ_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) + (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\0e\00\00\00S\00U\00C\00C\00E\00S\00S") + (data (i32.const 1164) "\1c") + (data (i32.const 1176) "\01\00\00\00\0c\00\00\00T\00O\00O\00B\00I\00G") + (data (i32.const 1196) "\1c") + (data (i32.const 1208) "\01\00\00\00\n\00\00\00A\00C\00C\00E\00S") + (data (i32.const 1228) ",") + (data (i32.const 1240) "\01\00\00\00\12\00\00\00A\00D\00D\00R\00I\00N\00U\00S\00E") + (data (i32.const 1276) ",") + (data (i32.const 1288) "\01\00\00\00\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L") + (data (i32.const 1324) ",") + (data (i32.const 1336) "\01\00\00\00\16\00\00\00A\00F\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 1372) "\1c") + (data (i32.const 1384) "\01\00\00\00\n\00\00\00A\00G\00A\00I\00N") + (data (i32.const 1404) ",") + (data (i32.const 1416) "\01\00\00\00\0e\00\00\00A\00L\00R\00E\00A\00D\00Y") + (data (i32.const 1452) "\1c") + (data (i32.const 1464) "\01\00\00\00\08\00\00\00B\00A\00D\00F") + (data (i32.const 1484) "\1c") + (data (i32.const 1496) "\01\00\00\00\0c\00\00\00B\00A\00D\00M\00S\00G") + (data (i32.const 1516) "\1c") + (data (i32.const 1528) "\01\00\00\00\08\00\00\00B\00U\00S\00Y") + (data (i32.const 1548) ",") + (data (i32.const 1560) "\01\00\00\00\10\00\00\00C\00A\00N\00C\00E\00L\00E\00D") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\n\00\00\00C\00H\00I\00L\00D") + (data (i32.const 1628) ",") + (data (i32.const 1640) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00A\00B\00O\00R\00T\00E\00D") + (data (i32.const 1676) ",") + (data (i32.const 1688) "\01\00\00\00\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D") + (data (i32.const 1724) ",") + (data (i32.const 1736) "\01\00\00\00\12\00\00\00C\00O\00N\00N\00R\00E\00S\00E\00T") + (data (i32.const 1772) "\1c") + (data (i32.const 1784) "\01\00\00\00\0c\00\00\00D\00E\00A\00D\00L\00K") + (data (i32.const 1804) ",") + (data (i32.const 1816) "\01\00\00\00\16\00\00\00D\00E\00S\00T\00A\00D\00D\00R\00R\00E\00Q") + (data (i32.const 1852) "\1c") + (data (i32.const 1864) "\01\00\00\00\06\00\00\00D\00O\00M") + (data (i32.const 1884) "\1c") + (data (i32.const 1896) "\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T") + (data (i32.const 1916) "\1c") + (data (i32.const 1928) "\01\00\00\00\n\00\00\00E\00X\00I\00S\00T") + (data (i32.const 1948) "\1c") + (data (i32.const 1960) "\01\00\00\00\n\00\00\00F\00A\00U\00L\00T") + (data (i32.const 1980) "\1c") + (data (i32.const 1992) "\01\00\00\00\08\00\00\00F\00B\00I\00G") + (data (i32.const 2012) ",") + (data (i32.const 2024) "\01\00\00\00\16\00\00\00H\00O\00S\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2060) "\1c") + (data (i32.const 2072) "\01\00\00\00\08\00\00\00I\00D\00R\00M") + (data (i32.const 2092) "\1c") + (data (i32.const 2104) "\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q") + (data (i32.const 2124) ",") + (data (i32.const 2136) "\01\00\00\00\14\00\00\00I\00N\00P\00R\00O\00G\00R\00E\00S\00S") + (data (i32.const 2172) "\1c") + (data (i32.const 2184) "\01\00\00\00\08\00\00\00I\00N\00T\00R") + (data (i32.const 2204) "\1c") + (data (i32.const 2216) "\01\00\00\00\n\00\00\00I\00N\00V\00A\00L") + (data (i32.const 2236) "\1c") + (data (i32.const 2248) "\01\00\00\00\04\00\00\00I\00O") + (data (i32.const 2268) "\1c") + (data (i32.const 2280) "\01\00\00\00\0c\00\00\00I\00S\00C\00O\00N\00N") + (data (i32.const 2300) "\1c") + (data (i32.const 2312) "\01\00\00\00\n\00\00\00I\00S\00D\00I\00R") + (data (i32.const 2332) "\1c") + (data (i32.const 2344) "\01\00\00\00\08\00\00\00L\00O\00O\00P") + (data (i32.const 2364) "\1c") + (data (i32.const 2376) "\01\00\00\00\n\00\00\00M\00F\00I\00L\00E") + (data (i32.const 2396) "\1c") + (data (i32.const 2408) "\01\00\00\00\n\00\00\00M\00L\00I\00N\00K") + (data (i32.const 2428) ",") + (data (i32.const 2440) "\01\00\00\00\0e\00\00\00M\00S\00G\00S\00I\00Z\00E") + (data (i32.const 2476) ",") + (data (i32.const 2488) "\01\00\00\00\10\00\00\00M\00U\00L\00T\00I\00H\00O\00P") + (data (i32.const 2524) ",") + (data (i32.const 2536) "\01\00\00\00\16\00\00\00N\00A\00M\00E\00T\00O\00O\00L\00O\00N\00G") + (data (i32.const 2572) ",") + (data (i32.const 2584) "\01\00\00\00\0e\00\00\00N\00E\00T\00D\00O\00W\00N") + (data (i32.const 2620) ",") + (data (i32.const 2632) "\01\00\00\00\10\00\00\00N\00E\00T\00R\00E\00S\00E\00T") + (data (i32.const 2668) ",") + (data (i32.const 2680) "\01\00\00\00\14\00\00\00N\00E\00T\00U\00N\00R\00E\00A\00C\00H") + (data (i32.const 2716) "\1c") + (data (i32.const 2728) "\01\00\00\00\n\00\00\00N\00F\00I\00L\00E") + (data (i32.const 2748) "\1c") + (data (i32.const 2760) "\01\00\00\00\0c\00\00\00N\00O\00B\00U\00F\00S") + (data (i32.const 2780) "\1c") + (data (i32.const 2792) "\01\00\00\00\n\00\00\00N\00O\00D\00E\00V") + (data (i32.const 2812) "\1c") + (data (i32.const 2824) "\01\00\00\00\n\00\00\00N\00O\00E\00N\00T") + (data (i32.const 2844) "\1c") + (data (i32.const 2856) "\01\00\00\00\0c\00\00\00N\00O\00E\00X\00E\00C") + (data (i32.const 2876) "\1c") + (data (i32.const 2888) "\01\00\00\00\n\00\00\00N\00O\00L\00C\00K") + (data (i32.const 2908) "\1c") + (data (i32.const 2920) "\01\00\00\00\0c\00\00\00N\00O\00L\00I\00N\00K") + (data (i32.const 2940) "\1c") + (data (i32.const 2952) "\01\00\00\00\n\00\00\00N\00O\00M\00E\00M") + (data (i32.const 2972) "\1c") + (data (i32.const 2984) "\01\00\00\00\n\00\00\00N\00O\00M\00S\00G") + (data (i32.const 3004) ",") + (data (i32.const 3016) "\01\00\00\00\14\00\00\00N\00O\00P\00R\00O\00T\00O\00O\00P\00T") + (data (i32.const 3052) "\1c") + (data (i32.const 3064) "\01\00\00\00\n\00\00\00N\00O\00S\00P\00C") + (data (i32.const 3084) "\1c") + (data (i32.const 3096) "\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S") + (data (i32.const 3116) ",") + (data (i32.const 3128) "\01\00\00\00\0e\00\00\00N\00O\00T\00C\00O\00N\00N") + (data (i32.const 3164) "\1c") + (data (i32.const 3176) "\01\00\00\00\0c\00\00\00N\00O\00T\00D\00I\00R") + (data (i32.const 3196) ",") + (data (i32.const 3208) "\01\00\00\00\10\00\00\00N\00O\00T\00E\00M\00P\00T\00Y") + (data (i32.const 3244) ",") + (data (i32.const 3256) "\01\00\00\00\1c\00\00\00N\00O\00T\00R\00E\00C\00O\00V\00E\00R\00A\00B\00L\00E") + (data (i32.const 3292) ",") + (data (i32.const 3304) "\01\00\00\00\0e\00\00\00N\00O\00T\00S\00O\00C\00K") + (data (i32.const 3340) "\1c") + (data (i32.const 3352) "\01\00\00\00\0c\00\00\00N\00O\00T\00S\00U\00P") + (data (i32.const 3372) "\1c") + (data (i32.const 3384) "\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y") + (data (i32.const 3404) "\1c") + (data (i32.const 3416) "\01\00\00\00\08\00\00\00N\00X\00I\00O") + (data (i32.const 3436) ",") + (data (i32.const 3448) "\01\00\00\00\10\00\00\00O\00V\00E\00R\00F\00L\00O\00W") + (data (i32.const 3484) ",") + (data (i32.const 3496) "\01\00\00\00\12\00\00\00O\00W\00N\00E\00R\00D\00E\00A\00D") + (data (i32.const 3532) "\1c") + (data (i32.const 3544) "\01\00\00\00\08\00\00\00P\00E\00R\00M") + (data (i32.const 3564) "\1c") + (data (i32.const 3576) "\01\00\00\00\08\00\00\00P\00I\00P\00E") + (data (i32.const 3596) "\1c") + (data (i32.const 3608) "\01\00\00\00\n\00\00\00P\00R\00O\00T\00O") + (data (i32.const 3628) ",") + (data (i32.const 3640) "\01\00\00\00\1c\00\00\00P\00R\00O\00T\00O\00N\00O\00S\00U\00P\00P\00O\00R\00T") + (data (i32.const 3676) ",") + (data (i32.const 3688) "\01\00\00\00\12\00\00\00P\00R\00O\00T\00O\00T\00Y\00P\00E") + (data (i32.const 3724) "\1c") + (data (i32.const 3736) "\01\00\00\00\n\00\00\00R\00A\00N\00G\00E") + (data (i32.const 3756) "\1c") + (data (i32.const 3768) "\01\00\00\00\08\00\00\00R\00O\00F\00S") + (data (i32.const 3788) "\1c") + (data (i32.const 3800) "\01\00\00\00\n\00\00\00S\00P\00I\00P\00E") + (data (i32.const 3820) "\1c") + (data (i32.const 3832) "\01\00\00\00\08\00\00\00S\00R\00C\00H") + (data (i32.const 3852) "\1c") + (data (i32.const 3864) "\01\00\00\00\n\00\00\00S\00T\00A\00L\00E") + (data (i32.const 3884) ",") + (data (i32.const 3896) "\01\00\00\00\10\00\00\00T\00I\00M\00E\00D\00O\00U\00T") + (data (i32.const 3932) "\1c") + (data (i32.const 3944) "\01\00\00\00\0c\00\00\00T\00X\00T\00B\00S\00Y") + (data (i32.const 3964) "\1c") + (data (i32.const 3976) "\01\00\00\00\08\00\00\00X\00D\00E\00V") + (data (i32.const 3996) ",") + (data (i32.const 4008) "\01\00\00\00\14\00\00\00N\00O\00T\00C\00A\00P\00A\00B\00L\00E") + (data (i32.const 4044) ",") + (data (i32.const 4056) "\01\00\00\00\0e\00\00\00U\00N\00K\00N\00O\00W\00N") + (data (i32.const 4092) "<") + (data (i32.const 4104) "\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 4156) "<") + (data (i32.const 4168) "\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 4220) "<") + (data (i32.const 4232) "\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 4284) "\1c") + (data (i32.const 4296) "\01\00\00\00\02\00\00\00\n") + (data (i32.const 4316) "\1c") + (data (i32.const 4328) "\01\00\00\00\0c\00\00\00w\00a\00s\00m\003\002") + (data (i32.const 4348) ",") + (data (i32.const 4360) "\01\00\00\00\1c\00\00\00=\00=\00 \00p\00l\00a\00t\00f\00o\00r\00m\00 \00=\00=") + (data (i32.const 4396) "\1c") + (data (i32.const 4408) "\01\00\00\00\08\00\00\00w\00a\00s\00m") + (data (i32.const 4428) ",") + (data (i32.const 4440) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 4476) ",") + (data (i32.const 4488) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 4524) "<") + (data (i32.const 4536) "\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 4652) "<") + (data (i32.const 4664) "\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 4716) ",") + (data (i32.const 4728) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 4796) ",") + (data (i32.const 4808) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 4844) ",") + (data (i32.const 4856) "\01\00\00\00\14\00\00\00=\00=\00 \00a\00r\00g\00v\00 \00=\00=") + (data (i32.const 4892) "|") + (data (i32.const 4904) "\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 5020) "<") + (data (i32.const 5032) "\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 5084) "\1c") + (data (i32.const 5096) "\01\00\00\00\02\00\00\00=") + (data (i32.const 5116) "\1c") + (data (i32.const 5128) "\01") + (data (i32.const 5148) ",") + (data (i32.const 5160) "\01\00\00\00\12\00\00\00=\00=\00 \00e\00n\00v\00 \00=\00=") + (data (i32.const 5196) "\1c") + (data (i32.const 5208) "\01\00\00\00\n\00\00\00k\00e\00y\00:\00 ") + (data (i32.const 5228) "\1c") + (data (i32.const 5240) "\01\00\00\00\n\00\00\00v\00a\00l\00:\00 ") + (data (i32.const 5260) "<") + (data (i32.const 5272) "\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 5324) ",") + (data (i32.const 5336) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 5372) ",") + (data (i32.const 5384) "\01\00\00\00\14\00\00\00=\00=\00 \00t\00i\00m\00e\00 \00=\00=") + (data (i32.const 5420) "|") + (data (i32.const 5432) "\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 5548) "<") + (data (i32.const 5560) "\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 5612) "\1c") + (data (i32.const 5624) "\01\00\00\00\02\00\00\000") + (data (i32.const 5644) "\\") + (data (i32.const 5656) "\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 5740) ",") + (data (i32.const 5752) "\01\00\00\00\18\00\00\00=\00=\00 \00h\00r\00t\00i\00m\00e\00 \00=\00=") + (data (i32.const 5788) ",") + (data (i32.const 5800) "\01\00\00\00\14\00\00\00=\00=\00 \00e\00x\00i\00t\00 \00=\00=") + (data (i32.const 5840) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 5868) "\02A\00\00\00\00\00\00\10A\82") + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/process/process.argv (mut i32) (i32.const 0)) + (global $std-wasi/process/argv (mut i32) (i32.const 0)) + (global $~lib/process/process.env (mut i32) (i32.const 0)) + (global $std-wasi/process/env (mut i32) (i32.const 0)) + (global $std-wasi/process/envKeys (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22268)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.store8 + local.get $1 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $1 + i32.const 3 + i32.add + end + end + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $2 + i32.sub + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 $case12|0 $case13|0 $case14|0 $case15|0 $case16|0 $case17|0 $case18|0 $case19|0 $case20|0 $case21|0 $case22|0 $case23|0 $case24|0 $case25|0 $case26|0 $case27|0 $case28|0 $case29|0 $case30|0 $case31|0 $case32|0 $case33|0 $case34|0 $case35|0 $case36|0 $case37|0 $case38|0 $case39|0 $case40|0 $case41|0 $case42|0 $case43|0 $case44|0 $case45|0 $case46|0 $case47|0 $case48|0 $case49|0 $case50|0 $case51|0 $case52|0 $case53|0 $case54|0 $case55|0 $case56|0 $case57|0 $case58|0 $case59|0 $case60|0 $case61|0 $case62|0 $case63|0 $case64|0 $case65|0 $case66|0 $case67|0 $case68|0 $case69|0 $case70|0 $case71|0 $case72|0 $case73|0 $case74|0 $case75|0 $case76|0 $break|0 + end + i32.const 1136 + return + end + i32.const 1184 + return + end + i32.const 1216 + return + end + i32.const 1248 + return + end + i32.const 1296 + return + end + i32.const 1344 + return + end + i32.const 1392 + return + end + i32.const 1424 + return + end + i32.const 1472 + return + end + i32.const 1504 + return + end + i32.const 1536 + return + end + i32.const 1568 + return + end + i32.const 1616 + return + end + i32.const 1648 + return + end + i32.const 1696 + return + end + i32.const 1744 + return + end + i32.const 1792 + return + end + i32.const 1824 + return + end + i32.const 1872 + return + end + i32.const 1904 + return + end + i32.const 1936 + return + end + i32.const 1968 + return + end + i32.const 2000 + return + end + i32.const 2032 + return + end + i32.const 2080 + return + end + i32.const 2112 + return + end + i32.const 2144 + return + end + i32.const 2192 + return + end + i32.const 2224 + return + end + i32.const 2256 + return + end + i32.const 2288 + return + end + i32.const 2320 + return + end + i32.const 2352 + return + end + i32.const 2384 + return + end + i32.const 2416 + return + end + i32.const 2448 + return + end + i32.const 2496 + return + end + i32.const 2544 + return + end + i32.const 2592 + return + end + i32.const 2640 + return + end + i32.const 2688 + return + end + i32.const 2736 + return + end + i32.const 2768 + return + end + i32.const 2800 + return + end + i32.const 2832 + return + end + i32.const 2864 + return + end + i32.const 2896 + return + end + i32.const 2928 + return + end + i32.const 2960 + return + end + i32.const 2992 + return + end + i32.const 3024 + return + end + i32.const 3072 + return + end + i32.const 3104 + return + end + i32.const 3136 + return + end + i32.const 3184 + return + end + i32.const 3216 + return + end + i32.const 3264 + return + end + i32.const 3312 + return + end + i32.const 3360 + return + end + i32.const 3392 + return + end + i32.const 3424 + return + end + i32.const 3456 + return + end + i32.const 3504 + return + end + i32.const 3552 + return + end + i32.const 3584 + return + end + i32.const 3616 + return + end + i32.const 3648 + return + end + i32.const 3696 + return + end + i32.const 3744 + return + end + i32.const 3776 + return + end + i32.const 3808 + return + end + i32.const 3840 + return + end + i32.const 3872 + return + end + i32.const 3904 + return + end + i32.const 3952 + return + end + i32.const 3984 + return + end + i32.const 4016 + return + end + i32.const 4064 + ) + (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 4176 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 4176 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 4176 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 4176 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 4176 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 22272 + i32.const 0 + i32.store + i32.const 23840 + 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 22272 + 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 22272 + 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 22272 + i32.const 23844 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 22272 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + 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 4176 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/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 4176 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 4240 + i32.const 4176 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.get $1 + i32.const 12 + i32.le_u + select + 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 4176 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 4176 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + 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 4176 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 $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 $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 + 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/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 22268 + 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.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 4176 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 4336 + call $~lib/rt/itcms/__visit + i32.const 4416 + call $~lib/rt/itcms/__visit + global.get $~lib/process/process.argv + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/process/process.env + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/argv + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/env + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/envKeys + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 4672 + call $~lib/rt/itcms/__visit + i32.const 4448 + call $~lib/rt/itcms/__visit + i32.const 4912 + call $~lib/rt/itcms/__visit + i32.const 5280 + call $~lib/rt/itcms/__visit + i32.const 4240 + call $~lib/rt/itcms/__visit + i32.const 5664 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 4544 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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 22268 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 4544 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 4544 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 5840 + i32.load + i32.gt_u + if + i32.const 4672 + i32.const 4736 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 5844 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 22268 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 4544 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.const 22268 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (local $2 i32) + block $~lib/util/memory/memset|inlined.0 + local.get $1 + i32.eqz + br_if $~lib/util/memory/memset|inlined.0 + local.get $0 + i32.const 0 + i32.store8 + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 4240 + i32.const 4544 + i32.const 256 + i32.const 31 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 4544 + i32.const 290 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<~lib/string/String>#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/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/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $0 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $0 + local.get $0 + local.get $1 + i32.gt_u + select + call $~lib/memory/memory.copy + local.get $3 + ) + (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 4448 + i32.const 4496 + i32.const 14 + i32.const 48 + call $~lib/wasi/index/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/itcms/__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 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.const 7 + i32.and + local.get $2 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $3 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|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-continue|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/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + ) + (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 + i64.lt_u + select + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000000 + i64.lt_u + select + local.get $0 + i64.const 1000000000000000 + i64.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + local.get $1 + i64.const 10 + i64.div_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/map/Map<~lib/string/String,~lib/string/String> + 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 $~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 $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + local.tee $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|00 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + local.get $1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|00 + end + end + local.get $2 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/process + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 5884 + i32.lt_s + if + i32.const 22288 + i32.const 22336 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + i32.store + i32.const 12 + i64.const 9071471065260641 + i64.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + else + i32.const 19 + end + local.tee $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $4 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $4 + i32.add + local.set $4 + end + local.get $4 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.tee $0 + local.get $4 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $2 + i32.const 10 + i32.div_u + local.tee $2 + br_if $do-continue|0 + end + local.get $0 + local.get $4 + i32.add + local.tee $0 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.tee $1 + local.get $0 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $3 + i32.const 10 + i32.div_u + local.tee $3 + br_if $do-continue|1 + end + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 2601 + i32.store16 + i32.const 4 + local.get $0 + i32.const 10 + i32.sub + i32.store + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/writeString (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $3 + i32.const -1 + local.set $4 + i32.const -1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + br_table $case4|0 $case3|0 $case2|0 $case1|0 $case0|0 $break|0 + end + local.get $0 + i32.load16_u offset=6 + local.tee $1 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u offset=4 + local.tee $4 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u offset=2 + local.tee $3 + i32.const 128 + i32.ge_u + br_if $break|0 + end + local.get $0 + i32.load16_u + local.tee $2 + i32.const 128 + i32.ge_u + br_if $break|0 + i32.const 1088 + i32.const 1096 + i32.store + i32.const 1092 + local.get $3 + i32.const -1 + i32.ne + i32.const 1 + i32.add + local.get $4 + i32.const -1 + i32.ne + i32.add + local.get $1 + i32.const -1 + i32.ne + i32.add + i32.store + i32.const 1096 + local.get $2 + local.get $3 + i32.const 8 + i32.shl + i32.or + local.get $4 + i32.const 16 + i32.shl + i32.or + local.get $1 + i32.const 24 + i32.shl + i32.or + i32.store + i32.const 1 + i32.const 1088 + i32.const 1 + i32.const 1100 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $1 + i32.const 0 + local.set $2 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_u + if + local.get $1 + i32.load16_u + local.tee $4 + i32.const 128 + i32.lt_u + if (result i32) + local.get $2 + i32.const 1 + i32.add + else + local.get $4 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $3 + local.get $1 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $4 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $1 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + call $~lib/rt/tlsf/__alloc + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $1 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $2 + i32.ne + if + i32.const 0 + i32.const 4112 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + local.get $1 + i32.store + i32.const 1092 + 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 $1 + call $~lib/rt/tlsf/__free + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~lib/string/String> (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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store + i32.const 4304 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 4672 + i32.const 4496 + i32.const 108 + i32.const 22 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/lazyArgv (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1088 + i32.const 1092 + call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 66 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i32.load + local.tee $0 + i32.const 2 + i32.shl + local.tee $1 + i32.const 1092 + i32.load + i32.add + local.tee $5 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $1 + local.get $2 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/args_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 73 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + local.get $4 + local.get $5 + i32.add + local.get $2 + i32.sub + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $3 + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 4672 + i32.const 4496 + i32.const 92 + i32.const 42 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 4912 + i32.const 4496 + i32.const 96 + i32.const 40 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#indexOf (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store + i32.const 5100 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + i32.const 0 + local.get $1 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $2 + local.get $1 + local.get $3 + i32.sub + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 5104 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 + local.get $0 + i32.store + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + local.tee $2 + local.get $2 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $2 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5136 + return + end + i32.const 0 + local.get $4 + local.get $1 + i32.const 1 + i32.shl + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $2 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 8 + 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.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 1 + i32.and + if + i32.const 0 + local.set $2 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/string/String.__eq + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + local.set $2 + br $__inlined_func$~lib/string/String.__eq + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $2 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $1 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/string/String.__eq + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $2 + end + end + local.get $2 + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#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 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 + 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 $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load + local.tee $7 + i32.store offset=8 + local.get $2 + local.get $7 + i32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hashStr + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/util/hash/hashStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,~lib/string/String>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/lazyEnv (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 1088 + i32.const 1092 + call $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 87 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i32.load + local.tee $6 + i32.const 2 + i32.shl + local.tee $0 + i32.const 1092 + i32.load + i32.add + local.tee $7 + call $~lib/rt/tlsf/__alloc + local.tee $2 + local.get $0 + local.get $2 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/environ_get + local.tee $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 94 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $3 + local.get $6 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $1 + local.get $1 + local.get $7 + i32.add + local.get $2 + i32.sub + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=12 + local.get $1 + call $~lib/string/String#indexOf + local.tee $4 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.const 0 + local.get $4 + call $~lib/string/String#substring + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + local.get $4 + i32.const 1 + i32.add + i32.const 2147483647 + call $~lib/string/String#substring + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $0 + local.get $5 + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=16 + local.get $0 + local.get $1 + i32.const 5136 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + call $~lib/rt/tlsf/__free + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std-wasi/process + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 1056 + i32.store + i32.const 1056 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store + i32.const 4336 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store + i32.const 4368 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 4416 + i32.store + i32.const 4416 + call $~lib/console/console.log + i32.const 4592 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 4624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 4768 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $~lib/process/lazyArgv + global.set $~lib/process/process.argv + global.get $~lib/process/process.argv + global.set $std-wasi/process/argv + global.get $~lib/memory/__stack_pointer + i32.const 4864 + i32.store + i32.const 4864 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/argv + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + call $~lib/process/lazyEnv + global.set $~lib/process/process.env + global.get $~lib/process/process.env + global.set $std-wasi/process/env + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/env + local.tee $1 + i32.store + i32.const 0 + local.set $0 + i32.const 0 + local.set $2 + 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.load offset=8 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=16 + local.tee $6 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $1 + i32.store + loop $for-loop|00 + local.get $2 + local.get $6 + i32.lt_s + if + local.get $4 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load + local.tee $5 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $5 + call $~lib/array/Array<~lib/string/String>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/array/ensureSize + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + global.set $std-wasi/process/envKeys + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store + i32.const 5168 + call $~lib/console/console.log + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/envKeys + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|1 + local.get $1 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/envKeys + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5216 + i32.store offset=4 + i32.const 5216 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 5248 + i32.store offset=4 + i32.const 5248 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/env + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + 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 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $2 + local.get $0 + local.get $0 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.tee $0 + i32.eqz + if + i32.const 5280 + i32.const 5344 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/console/console.log + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store + i32.const 5392 + call $~lib/console/console.log + i32.const 0 + i64.const 1000000 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 53 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i64.load + i64.const 1000000 + i64.div_u + call $~lib/util/number/itoa64 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 5760 + i32.store + i32.const 5760 + call $~lib/console/console.log + i32.const 1 + i64.const 0 + i32.const 1088 + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.tee $1 + i32.const 65535 + i32.and + if + local.get $1 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 4112 + i32.const 59 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + i32.const 1088 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.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 $__inlined_func$~lib/util/number/utoa64 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5632 + local.set $1 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + local.get $3 + i32.wrap_i64 + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $2 + local.get $0 + call $~lib/util/number/utoa_dec_simple + else + local.get $3 + call $~lib/util/number/decimalCount64High + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $3 + local.get $0 + call $~lib/util/number/utoa_dec_simple + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/console/console.log + global.get $~lib/memory/__stack_pointer + i32.const 5808 + i32.store + i32.const 5808 + call $~lib/console/console.log + i32.const 42 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#set:buffer + 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 4448 + i32.const 4496 + i32.const 58 + i32.const 60 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (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 + local.get $0 + local.get $1 + i32.add + local.tee $4 + i32.gt_u + if + i32.const 0 + i32.const 4816 + i32.const 740 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load8_u + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 128 + i32.and + if + local.get $0 + local.get $4 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.set $5 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $1 + local.get $5 + local.get $3 + i32.const 31 + i32.and + i32.const 6 + i32.shl + i32.or + i32.store16 + else + local.get $0 + local.get $4 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $3 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $6 + local.get $3 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $5 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $3 + else + local.get $0 + local.get $4 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.get $3 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $5 + i32.const 12 + i32.shl + i32.or + local.get $6 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $3 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $3 + i32.const 65536 + i32.lt_u + if + local.get $1 + local.get $3 + i32.store16 + else + local.get $1 + local.get $3 + i32.const 65536 + i32.sub + local.tee $3 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $3 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + end + else + local.get $3 + i32.eqz + br_if $while-break|0 + local.get $1 + local.get $3 + i32.store16 + end + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end + end + local.get $2 + local.get $1 + local.get $2 + i32.sub + call $~lib/rt/itcms/__renew + 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) (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 1073741820 + i32.gt_u + if + i32.const 4448 + i32.const 5040 + i32.const 49 + i32.const 43 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5632 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $3 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.tee $4 + call $~lib/util/number/decimalCount32 + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $4 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 $1 + call $~lib/util/number/utoa_dec_simple + end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) +) diff --git a/tests/compiler/std-wasi/process.ts b/tests/compiler/std-wasi/process.ts new file mode 100644 index 0000000000..afff8f1413 --- /dev/null +++ b/tests/compiler/std-wasi/process.ts @@ -0,0 +1,33 @@ +import "wasi"; + +console.log("== arch =="); +console.log(process.arch); + +console.log("== platform =="); +console.log(process.platform); + +var argv = process.argv; +console.log("== argv =="); +for (let i = 0, k = argv.length; i < k; ++i) { + console.log(argv[i]); +} + +var env = process.env; +var envKeys = env.keys(); +console.log("== env =="); +for (let i = 0, k = envKeys.length; i < k; ++i) { + let key = envKeys[i]; + process.stdout.write("key: "); + console.log(key); + process.stdout.write("val: "); + console.log(env.get(key)); +} + +console.log("== time =="); +console.log(process.time().toString()); + +console.log("== hrtime =="); +console.log(process.hrtime().toString()); + +console.log("== exit =="); +process.exit(42); diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat new file mode 100644 index 0000000000..891f4b1d46 --- /dev/null +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -0,0 +1,8979 @@ +(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 $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 $i64_i32_=>_i32 (func (param i64 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $none_=>_i64 (func (result i64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) + (import "wasi_snapshot_preview1" "args_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/args_sizes_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "args_get" (func $~lib/bindings/wasi_snapshot_preview1/args_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "environ_sizes_get" (func $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "environ_get" (func $~lib/bindings/wasi_snapshot_preview1/environ_get (param i32 i32) (result i32))) + (import "wasi_snapshot_preview1" "clock_time_get" (func $~lib/bindings/wasi_snapshot_preview1/clock_time_get (param i32 i64 i32) (result i32))) + (memory $0 1) + (data (i32.const 12) ",\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=\00\00\00\00\00\00\00\00\00") + (data (i32.const 64) "\00\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\01\00\00\00\0e\00\00\00S\00U\00C\00C\00E\00S\00S\00\00\00\00\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\0c\00\00\00T\00O\00O\00B\00I\00G\00") + (data (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00C\00C\00E\00S\00\00\00") + (data (i32.const 204) ",\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\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\18\00\00\00A\00D\00D\00R\00N\00O\00T\00A\00V\00A\00I\00L\00\00\00\00\00") + (data (i32.const 300) ",\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\00\00\00\00\00\00\00") + (data (i32.const 348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00G\00A\00I\00N\00\00\00") + (data (i32.const 380) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 428) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00A\00D\00F\00\00\00\00\00") + (data (i32.const 460) "\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\00") + (data (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00B\00U\00S\00Y\00\00\00\00\00") + (data (i32.const 524) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00C\00H\00I\00L\00D\00\00\00") + (data (i32.const 604) ",\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\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\16\00\00\00C\00O\00N\00N\00R\00E\00F\00U\00S\00E\00D\00\00\00\00\00\00\00") + (data (i32.const 700) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 748) "\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\00") + (data (i32.const 780) ",\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\00\00\00\00\00\00\00") + (data (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00D\00O\00M\00\00\00\00\00\00\00") + (data (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00D\00Q\00U\00O\00T\00\00\00") + (data (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00E\00X\00I\00S\00T\00\00\00") + (data (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00F\00A\00U\00L\00T\00\00\00") + (data (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00F\00B\00I\00G\00\00\00\00\00") + (data (i32.const 988) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00D\00R\00M\00\00\00\00\00") + (data (i32.const 1068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00L\00S\00E\00Q\00\00\00") + (data (i32.const 1100) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 1148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00N\00T\00R\00\00\00\00\00") + (data (i32.const 1180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00N\00V\00A\00L\00\00\00") + (data (i32.const 1212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00I\00O\00\00\00\00\00\00\00\00\00") + (data (i32.const 1244) "\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\00") + (data (i32.const 1276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00I\00S\00D\00I\00R\00\00\00") + (data (i32.const 1308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00L\00O\00O\00P\00\00\00\00\00") + (data (i32.const 1340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00F\00I\00L\00E\00\00\00") + (data (i32.const 1372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00M\00L\00I\00N\00K\00\00\00") + (data (i32.const 1404) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1452) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1500) ",\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\00\00\00\00\00\00\00") + (data (i32.const 1548) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1596) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1644) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00F\00I\00L\00E\00\00\00") + (data (i32.const 1724) "\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\00") + (data (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00D\00E\00V\00\00\00") + (data (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00E\00N\00T\00\00\00") + (data (i32.const 1820) "\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\00") + (data (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00L\00C\00K\00\00\00") + (data (i32.const 1884) "\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\00") + (data (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00E\00M\00\00\00") + (data (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00M\00S\00G\00\00\00") + (data (i32.const 1980) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00P\00C\00\00\00") + (data (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00S\00Y\00S\00\00\00") + (data (i32.const 2092) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2140) "\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\00") + (data (i32.const 2172) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2220) ",\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\00") + (data (i32.const 2268) ",\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\00\00\00\00\00\00\00\00\00\00\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\0c\00\00\00N\00O\00T\00S\00U\00P\00") + (data (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00N\00O\00T\00T\00Y\00\00\00") + (data (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00N\00X\00I\00O\00\00\00\00\00") + (data (i32.const 2412) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2460) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00E\00R\00M\00\00\00\00\00") + (data (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00P\00I\00P\00E\00\00\00\00\00") + (data (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00P\00R\00O\00T\00O\00\00\00") + (data (i32.const 2604) ",\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\00") + (data (i32.const 2652) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00R\00A\00N\00G\00E\00\00\00") + (data (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00R\00O\00F\00S\00\00\00\00\00") + (data (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00P\00I\00P\00E\00\00\00") + (data (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00S\00R\00C\00H\00\00\00\00\00") + (data (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00S\00T\00A\00L\00E\00\00\00") + (data (i32.const 2860) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2908) "\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\00") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00X\00D\00E\00V\00\00\00\00\00") + (data (i32.const 2972) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 3020) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3068) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) "<\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 3196) "<\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 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3292) "\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\00") + (data (i32.const 3324) ",\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=\00") + (data (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00w\00a\00s\00m\00\00\00\00\00") + (data (i32.const 3404) ",\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 3452) ",\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 3500) "<\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 3568) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3600) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3628) "<\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 3692) ",\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 3744) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3772) ",\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\00") + (data (i32.const 3820) ",\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=\00\00\00\00\00\00\00\00\00") + (data (i32.const 3868) "|\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 3996) "<\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 4060) "\1c\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") + (data (i32.const 4092) "\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 4124) ",\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=\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\00:\00 \00\00\00") + (data (i32.const 4204) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00v\00a\00l\00:\00 \00\00\00") + (data (i32.const 4236) "<\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 4300) ",\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\00\00\00\00\00\00\00") + (data (i32.const 4348) ",\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=\00\00\00\00\00\00\00\00\00") + (data (i32.const 4396) "|\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 4524) "<\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 4588) "\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 4620) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 5020) "\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 6076) "\\\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 6172) ",\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=\00\00\00\00\00") + (data (i32.const 6220) ",\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=\00\00\00\00\00\00\00\00\00") + (data (i32.const 6272) "\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\00\00\00\00\00") + (table $0 1 funcref) + (global $~lib/process/process.stdout i32 (i32.const 1)) + (global $~lib/process/iobuf i32 (i32.const 64)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/process/process.arch i32 (i32.const 3312)) + (global $~lib/process/process.platform i32 (i32.const 3392)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (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)) + (global $~lib/process/process.env (mut i32) (i32.const 0)) + (global $std-wasi/process/env (mut i32) (i32.const 0)) + (global $std-wasi/process/envKeys (mut i32) (i32.const 0)) + (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) + (global $~lib/rt/__rtti_base i32 (i32.const 6272)) + (global $~lib/memory/__data_end i32 (i32.const 6316)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 22700)) + (global $~lib/memory/__heap_base i32 (i32.const 22700)) + (global $~started (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "_start" (func $~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/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/string/String.UTF8.encodeUnsafe (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 $12 i32) + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $5 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + i32.load16_u + local.set $7 + local.get $7 + i32.const 128 + i32.lt_u + if + local.get $5 + local.get $7 + i32.store8 + local.get $5 + i32.const 1 + i32.add + local.set $5 + else + local.get $7 + i32.const 2048 + i32.lt_u + if + local.get $7 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.set $8 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $9 + local.get $5 + local.get $9 + i32.const 8 + i32.shl + local.get $8 + i32.or + i32.store16 + local.get $5 + i32.const 2 + i32.add + local.set $5 + else + local.get $7 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $0 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + else + i32.const 0 + end + if + local.get $0 + i32.load16_u offset=2 + local.set $9 + local.get $9 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $7 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $9 + i32.const 1023 + i32.and + i32.or + local.set $7 + local.get $7 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + local.set $8 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $10 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $5 + local.get $12 + i32.const 24 + i32.shl + local.get $11 + i32.const 16 + i32.shl + i32.or + local.get $10 + i32.const 8 + i32.shl + i32.or + local.get $8 + i32.or + i32.store + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $7 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.set $9 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $12 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + local.set $11 + local.get $5 + local.get $12 + i32.const 8 + i32.shl + local.get $9 + i32.or + i32.store16 + local.get $5 + local.get $11 + i32.store8 offset=2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end + end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $3 + if + local.get $5 + local.tee $6 + i32.const 1 + i32.add + local.set $5 + local.get $6 + i32.const 0 + i32.store8 + end + local.get $5 + local.get $2 + i32.sub + ) + (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/bindings/wasi_snapshot_preview1/iovec#set:buf_len (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/bindings/wasi_snapshot_preview1/errnoToString (param $0 i32) (result i32) + (local $1 i32) + block $break|0 + block $case76|0 + block $case75|0 + block $case74|0 + block $case73|0 + block $case72|0 + block $case71|0 + block $case70|0 + block $case69|0 + block $case68|0 + block $case67|0 + block $case66|0 + block $case65|0 + block $case64|0 + block $case63|0 + block $case62|0 + block $case61|0 + block $case60|0 + block $case59|0 + block $case58|0 + block $case57|0 + block $case56|0 + block $case55|0 + block $case54|0 + block $case53|0 + block $case52|0 + block $case51|0 + block $case50|0 + block $case49|0 + block $case48|0 + block $case47|0 + block $case46|0 + block $case45|0 + block $case44|0 + block $case43|0 + block $case42|0 + block $case41|0 + block $case40|0 + block $case39|0 + block $case38|0 + block $case37|0 + block $case36|0 + block $case35|0 + block $case34|0 + block $case33|0 + block $case32|0 + block $case31|0 + block $case30|0 + block $case29|0 + block $case28|0 + block $case27|0 + block $case26|0 + block $case25|0 + block $case24|0 + block $case23|0 + block $case22|0 + block $case21|0 + block $case20|0 + block $case19|0 + block $case18|0 + block $case17|0 + block $case16|0 + block $case15|0 + block $case14|0 + block $case13|0 + block $case12|0 + block $case11|0 + block $case10|0 + block $case9|0 + block $case8|0 + block $case7|0 + block $case6|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $0 + i32.const 65535 + i32.and + 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 + local.get $1 + i32.const 3 + i32.eq + br_if $case3|0 + local.get $1 + i32.const 4 + i32.eq + br_if $case4|0 + local.get $1 + i32.const 5 + i32.eq + br_if $case5|0 + local.get $1 + i32.const 6 + i32.eq + br_if $case6|0 + local.get $1 + i32.const 7 + i32.eq + br_if $case7|0 + local.get $1 + i32.const 8 + i32.eq + br_if $case8|0 + local.get $1 + i32.const 9 + i32.eq + br_if $case9|0 + local.get $1 + i32.const 10 + i32.eq + br_if $case10|0 + local.get $1 + i32.const 11 + i32.eq + br_if $case11|0 + local.get $1 + i32.const 12 + i32.eq + br_if $case12|0 + local.get $1 + i32.const 13 + i32.eq + br_if $case13|0 + local.get $1 + i32.const 14 + i32.eq + br_if $case14|0 + local.get $1 + i32.const 15 + i32.eq + br_if $case15|0 + local.get $1 + i32.const 16 + i32.eq + br_if $case16|0 + local.get $1 + i32.const 17 + i32.eq + br_if $case17|0 + local.get $1 + i32.const 18 + i32.eq + br_if $case18|0 + local.get $1 + i32.const 19 + i32.eq + br_if $case19|0 + local.get $1 + i32.const 20 + i32.eq + br_if $case20|0 + local.get $1 + i32.const 21 + i32.eq + br_if $case21|0 + local.get $1 + i32.const 22 + i32.eq + br_if $case22|0 + local.get $1 + i32.const 23 + i32.eq + br_if $case23|0 + local.get $1 + i32.const 24 + i32.eq + br_if $case24|0 + local.get $1 + i32.const 25 + i32.eq + br_if $case25|0 + local.get $1 + i32.const 26 + i32.eq + br_if $case26|0 + local.get $1 + i32.const 27 + i32.eq + br_if $case27|0 + local.get $1 + i32.const 28 + i32.eq + br_if $case28|0 + local.get $1 + i32.const 29 + i32.eq + br_if $case29|0 + local.get $1 + i32.const 30 + i32.eq + br_if $case30|0 + local.get $1 + i32.const 31 + i32.eq + br_if $case31|0 + local.get $1 + i32.const 32 + i32.eq + br_if $case32|0 + local.get $1 + i32.const 33 + i32.eq + br_if $case33|0 + local.get $1 + i32.const 34 + i32.eq + br_if $case34|0 + local.get $1 + i32.const 35 + i32.eq + br_if $case35|0 + local.get $1 + i32.const 36 + i32.eq + br_if $case36|0 + local.get $1 + i32.const 37 + i32.eq + br_if $case37|0 + local.get $1 + i32.const 38 + i32.eq + br_if $case38|0 + local.get $1 + i32.const 39 + i32.eq + br_if $case39|0 + local.get $1 + i32.const 40 + i32.eq + br_if $case40|0 + local.get $1 + i32.const 41 + i32.eq + br_if $case41|0 + local.get $1 + i32.const 42 + i32.eq + br_if $case42|0 + local.get $1 + i32.const 43 + i32.eq + br_if $case43|0 + local.get $1 + i32.const 44 + i32.eq + br_if $case44|0 + local.get $1 + i32.const 45 + i32.eq + br_if $case45|0 + local.get $1 + i32.const 46 + i32.eq + br_if $case46|0 + local.get $1 + i32.const 47 + i32.eq + br_if $case47|0 + local.get $1 + i32.const 48 + i32.eq + br_if $case48|0 + local.get $1 + i32.const 49 + i32.eq + br_if $case49|0 + local.get $1 + i32.const 50 + i32.eq + br_if $case50|0 + local.get $1 + i32.const 51 + i32.eq + br_if $case51|0 + local.get $1 + i32.const 52 + i32.eq + br_if $case52|0 + local.get $1 + i32.const 53 + i32.eq + br_if $case53|0 + local.get $1 + i32.const 54 + i32.eq + br_if $case54|0 + local.get $1 + i32.const 55 + i32.eq + br_if $case55|0 + local.get $1 + i32.const 56 + i32.eq + br_if $case56|0 + local.get $1 + i32.const 57 + i32.eq + br_if $case57|0 + local.get $1 + i32.const 58 + i32.eq + br_if $case58|0 + local.get $1 + i32.const 59 + i32.eq + br_if $case59|0 + local.get $1 + i32.const 60 + i32.eq + br_if $case60|0 + local.get $1 + i32.const 61 + i32.eq + br_if $case61|0 + local.get $1 + i32.const 62 + i32.eq + br_if $case62|0 + local.get $1 + i32.const 63 + i32.eq + br_if $case63|0 + local.get $1 + i32.const 64 + i32.eq + br_if $case64|0 + local.get $1 + i32.const 65 + i32.eq + br_if $case65|0 + local.get $1 + i32.const 66 + i32.eq + br_if $case66|0 + local.get $1 + i32.const 67 + i32.eq + br_if $case67|0 + local.get $1 + i32.const 68 + i32.eq + br_if $case68|0 + local.get $1 + i32.const 69 + i32.eq + br_if $case69|0 + local.get $1 + i32.const 70 + i32.eq + br_if $case70|0 + local.get $1 + i32.const 71 + i32.eq + br_if $case71|0 + local.get $1 + i32.const 72 + i32.eq + br_if $case72|0 + local.get $1 + i32.const 73 + i32.eq + br_if $case73|0 + local.get $1 + i32.const 74 + i32.eq + br_if $case74|0 + local.get $1 + i32.const 75 + i32.eq + br_if $case75|0 + local.get $1 + i32.const 76 + i32.eq + br_if $case76|0 + br $break|0 + end + i32.const 112 + return + end + i32.const 160 + return + end + i32.const 192 + return + end + i32.const 224 + return + end + i32.const 272 + return + end + i32.const 320 + return + end + i32.const 368 + return + end + i32.const 400 + return + end + i32.const 448 + return + end + i32.const 480 + return + end + i32.const 512 + return + end + i32.const 544 + return + end + i32.const 592 + return + end + i32.const 624 + return + end + i32.const 672 + return + end + i32.const 720 + return + end + i32.const 768 + return + end + i32.const 800 + return + end + i32.const 848 + return + end + i32.const 880 + return + end + i32.const 912 + return + end + i32.const 944 + return + end + i32.const 976 + return + end + i32.const 1008 + return + end + i32.const 1056 + return + end + i32.const 1088 + return + end + i32.const 1120 + return + end + i32.const 1168 + return + end + i32.const 1200 + return + end + i32.const 1232 + return + end + i32.const 1264 + return + end + i32.const 1296 + return + end + i32.const 1328 + return + end + i32.const 1360 + return + end + i32.const 1392 + return + end + i32.const 1424 + return + end + i32.const 1472 + return + end + i32.const 1520 + return + end + i32.const 1568 + return + end + i32.const 1616 + return + end + i32.const 1664 + return + end + i32.const 1712 + return + end + i32.const 1744 + return + end + i32.const 1776 + return + end + i32.const 1808 + return + end + i32.const 1840 + return + end + i32.const 1872 + return + end + i32.const 1904 + return + end + i32.const 1936 + return + end + i32.const 1968 + return + end + i32.const 2000 + return + end + i32.const 2048 + return + end + i32.const 2080 + return + end + i32.const 2112 + return + end + i32.const 2160 + return + end + i32.const 2192 + return + end + i32.const 2240 + return + end + i32.const 2288 + return + end + i32.const 2336 + return + end + i32.const 2368 + return + end + i32.const 2400 + return + end + i32.const 2432 + return + end + i32.const 2480 + return + end + i32.const 2528 + return + end + i32.const 2560 + return + end + i32.const 2592 + return + end + i32.const 2624 + return + end + i32.const 2672 + return + end + i32.const 2720 + return + end + i32.const 2752 + return + end + i32.const 2784 + return + end + i32.const 2816 + return + end + i32.const 2848 + return + end + i32.const 2880 + return + end + i32.const 2928 + return + end + i32.const 2960 + return + end + i32.const 2992 + return + end + i32.const 3040 + ) + (func $~lib/string/String.UTF8.byteLength (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 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 + local.get $1 + i32.const 0 + i32.ne + local.set $4 + block $while-break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 + i32.lt_u + if + local.get $1 + local.get $6 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + else + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 + else + local.get $6 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.add + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end + end + local.get $4 + i32.const 3 + i32.add + local.set $4 + end + end + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|0 + end + end + end + local.get $4 + ) + (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 3152 + i32.const 273 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 275 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 288 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 201 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 203 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 224 + i32.const 16 + call $~lib/wasi/index/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 3152 + i32.const 239 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 240 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 256 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 381 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 388 + i32.const 16 + call $~lib/wasi/index/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 3152 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/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 3216 + i32.const 3152 + i32.const 462 + i32.const 30 + call $~lib/wasi/index/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 3152 + i32.const 334 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 347 + i32.const 18 + call $~lib/wasi/index/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 3152 + i32.const 361 + i32.const 14 + call $~lib/wasi/index/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 3152 + i32.const 500 + i32.const 16 + call $~lib/wasi/index/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 3152 + i32.const 502 + i32.const 14 + call $~lib/wasi/index/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/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 3152 + i32.const 565 + i32.const 3 + call $~lib/wasi/index/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/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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 3520 + i32.const 127 + i32.const 18 + call $~lib/wasi/index/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 3520 + i32.const 131 + i32.const 16 + call $~lib/wasi/index/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 3648 + i32.const 3712 + i32.const 22 + i32.const 28 + call $~lib/wasi/index/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 3520 + i32.const 147 + i32.const 30 + call $~lib/wasi/index/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/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 + 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 + 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 3520 + i32.const 224 + i32.const 20 + call $~lib/wasi/index/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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/itcms/Object#set:rtId (param $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 + 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/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 3216 + i32.const 3520 + i32.const 256 + 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 3520 + i32.const 290 + 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 + 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/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 3424 + i32.const 3472 + i32.const 14 + i32.const 48 + call $~lib/wasi/index/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/itcms/__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 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $5 + i32.store offset=8 + end + ) + (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>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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/map/Map<~lib/string/String,~lib/string/String>#set:buckets (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/map/Map<~lib/string/String,~lib/string/String>#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + 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-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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/map/MapEntry<~lib/string/String,~lib/string/String>#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:taggedNext (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.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#set:length_ + ) + (func $~lib/process/process.time (result i64) + (local $0 i32) + i32.const 0 + i64.const 1000000 + global.get $~lib/process/iobuf + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 53 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + i64.load + i64.const 1000000 + i64.div_u + ) + (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 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + 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 4620 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 4620 + 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 + i32.const 1 + i32.shl + i32.add + 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 4620 + 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 4620 + 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/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 4620 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 4620 + 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 4620 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 4620 + 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/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 5040 + 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 5040 + 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 $7 i32) + 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-continue|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 6096 + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 6096 + 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 + local.set $7 + local.get $7 + br_if $do-continue|1 + end + end + ) + (func $~lib/number/I64#toString (param $0 i64) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/itoa64 + ) + (func $~lib/process/process.hrtime (result i64) + (local $0 i32) + i32.const 1 + i64.const 0 + global.get $~lib/process/iobuf + call $~lib/bindings/wasi_snapshot_preview1/clock_time_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 59 + i32.const 14 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + i64.load + ) + (func $~lib/number/U64#toString (param $0 i64) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/utoa64 + ) + (func $~lib/process/process.exit (param $0 i32) + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $~lib/process/process.arch + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/process/process.platform + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/process/process.argv + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/process/process.env + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/argv + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/env + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std-wasi/process/envKeys + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 3648 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3424 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3888 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 4256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 3216 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 5040 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 6096 + 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<~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/map/Map<~lib/string/String,~lib/string/String>#__visit (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 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 1 + end + drop + local.get $2 + local.set $3 + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $3 + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $6 + i32.load + local.set $7 + i32.const 0 + drop + local.get $7 + local.get $1 + call $~lib/rt/itcms/__visit + i32.const 1 + drop + local.get $6 + i32.load offset=4 + local.set $7 + i32.const 0 + drop + local.get $7 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 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 $~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 + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/string/String>~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std-wasi/process + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 22720 + i32.const 22768 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf + i32.const 12 + local.set $4 + local.get $4 + i64.const 9071471065260641 + i64.store + local.get $4 + i32.const 7 + i32.add + local.set $4 + local.get $0 + i32.const 0 + i32.ne + if + local.get $4 + local.get $0 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + i32.const 0 + i32.ne + if + local.get $4 + local.get $1 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.get $4 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + i32.add + local.set $4 + end + local.get $4 + local.tee $5 + i32.const 1 + i32.add + local.set $4 + local.get $5 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|0 + local.get $2 + i32.const 10 + i32.div_u + local.set $5 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $2 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $5 + local.set $2 + local.get $2 + local.set $7 + local.get $7 + br_if $do-continue|0 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.set $6 + local.get $4 + local.get $6 + i32.add + local.set $4 + loop $do-continue|1 + local.get $3 + i32.const 10 + i32.div_u + local.set $7 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + i32.const 48 + local.get $3 + i32.const 10 + i32.rem_u + i32.add + i32.store8 + local.get $7 + local.set $3 + local.get $3 + local.set $8 + local.get $8 + br_if $do-continue|1 + end + local.get $4 + local.get $6 + i32.add + local.set $4 + local.get $4 + i32.const 2601 + i32.store16 + local.get $4 + i32.const 2 + i32.add + local.set $4 + i32.const 0 + local.get $4 + i32.const 12 + i32.sub + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/writeString (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const -1 + local.set $2 + i32.const -1 + local.set $3 + i32.const -1 + local.set $4 + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $5 + local.get $5 + i32.const 4 + i32.eq + br_if $case0|0 + local.get $5 + i32.const 3 + i32.eq + br_if $case1|0 + local.get $5 + i32.const 2 + i32.eq + br_if $case2|0 + local.get $5 + i32.const 1 + i32.eq + br_if $case3|0 + local.get $5 + i32.const 0 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $1 + i32.load16_u offset=6 + local.set $4 + local.get $4 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=4 + local.set $3 + local.get $3 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u offset=2 + local.set $2 + local.get $2 + i32.const 128 + i32.ge_s + if + br $break|0 + end + end + local.get $1 + i32.load16_u + local.set $5 + local.get $5 + i32.const 128 + i32.ge_s + if + br $break|0 + end + global.get $~lib/process/iobuf + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + i32.store + global.get $~lib/process/iobuf + i32.const 1 + local.get $2 + i32.const -1 + i32.ne + i32.add + local.get $3 + i32.const -1 + i32.ne + i32.add + local.get $4 + i32.const -1 + i32.ne + i32.add + i32.store offset=4 + global.get $~lib/process/iobuf + local.get $5 + local.get $2 + i32.const 8 + i32.shl + i32.or + local.get $3 + i32.const 16 + i32.shl + i32.or + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store offset=8 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 3 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $6 + local.get $6 + i32.const 65535 + i32.and + if + local.get $6 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 178 + i32.const 16 + call $~lib/wasi/index/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + local.set $7 + local.get $7 + call $~lib/rt/tlsf/__alloc + local.set $8 + local.get $1 + local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.get $8 + i32.const 0 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 3088 + i32.const 184 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + local.get $8 + i32.store + global.get $~lib/process/iobuf + local.get $7 + i32.store offset=4 + local.get $0 + global.get $~lib/process/iobuf + i32.const 1 + global.get $~lib/process/iobuf + i32.const 2 + i32.const 4 + i32.mul + i32.add + call $~lib/bindings/wasi_snapshot_preview1/fd_write + local.set $9 + local.get $8 + call $~lib/rt/tlsf/__free + local.get $9 + i32.const 65535 + i32.and + if + local.get $9 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 189 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/WritableStream#write<~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 + i32.const 1 + drop + local.get $0 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/writeString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/console/console.log (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 + global.get $~lib/process/process.stdout + local.set $1 + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $1 + i32.const 3280 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 3648 + i32.const 3472 + i32.const 108 + i32.const 22 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + 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.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/process/lazyArgv (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/process/iobuf + global.get $~lib/process/iobuf + i32.const 4 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/args_sizes_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 66 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.mul + local.set $2 + global.get $~lib/process/iobuf + i32.load offset=4 + local.set $3 + local.get $2 + local.get $3 + i32.add + local.set $4 + local.get $4 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + local.get $5 + local.get $2 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/args_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 73 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $6 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $7 + i32.store + i32.const 0 + local.set $8 + loop $for-loop|0 + local.get $8 + local.get $6 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $5 + local.get $8 + i32.const 4 + i32.mul + i32.add + i32.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + local.get $10 + local.get $4 + i32.add + local.get $5 + i32.sub + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $11 + i32.store offset=4 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $8 + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + call $~lib/array/Array<~lib/string/String>#__set + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|0 + end + end + local.get $5 + call $~lib/rt/tlsf/__free + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 3648 + i32.const 3472 + i32.const 92 + i32.const 42 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 3888 + i32.const 3472 + i32.const 96 + i32.const 40 + call $~lib/wasi/index/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#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) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $4 + local.get $4 + i32.eqz + if + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $2 + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $6 + local.get $4 + local.tee $5 + local.get $6 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $7 + local.get $4 + i32.le_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $7 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (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 8 + 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 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + 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 + 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 + local.set $10 + local.get $10 + i32.eqz + if + i32.const 4112 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + 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 $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 + 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.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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) + (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.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__eq + else + i32.const 0 + end + if + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load + local.tee $12 + i32.store offset=8 + local.get $11 + local.get $12 + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:key + local.get $11 + local.get $10 + i32.load offset=4 + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:value + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $12 + local.tee $13 + i32.store offset=12 + i32.const 1 + drop + local.get $13 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=16 + local.get $15 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 + end + 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<~lib/string/String,~lib/string/String>#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<~lib/string/String,~lib/string/String>#set:buckets + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries + local.get $0 + local.get $4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#set (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $3 + i32.store + i32.const 1 + drop + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:value + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,~lib/string/String>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesOffset + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:key + i32.const 1 + drop + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $5 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:value + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry<~lib/string/String,~lib/string/String>#set:taggedNext + local.get $6 + local.get $5 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $~lib/process/lazyEnv (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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/process/iobuf + global.get $~lib/process/iobuf + i32.const 4 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/environ_sizes_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 87 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/process/iobuf + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.mul + local.set $2 + global.get $~lib/process/iobuf + i32.load offset=4 + local.set $3 + local.get $2 + local.get $3 + i32.add + local.set $4 + local.get $4 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + local.get $5 + local.get $2 + i32.add + call $~lib/bindings/wasi_snapshot_preview1/environ_get + local.set $0 + local.get $0 + i32.const 65535 + i32.and + if + local.get $0 + call $~lib/bindings/wasi_snapshot_preview1/errnoToString + i32.const 3088 + i32.const 94 + i32.const 12 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#constructor + local.tee $6 + i32.store + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $1 + i32.lt_u + local.set $8 + local.get $8 + if + local.get $5 + local.get $7 + i32.const 4 + i32.mul + i32.add + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + local.get $9 + local.get $4 + i32.add + local.get $5 + i32.sub + i32.const 1 + call $~lib/string/String.UTF8.decodeUnsafe + local.tee $10 + i32.store offset=4 + local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + i32.const 4080 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 0 + call $~lib/string/String#indexOf + local.set $11 + local.get $11 + i32.const -1 + i32.xor + if + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + i32.const 0 + local.get $11 + call $~lib/string/String#substring + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=20 + local.get $12 + local.get $11 + i32.const 1 + i32.add + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + drop + else + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=12 + local.get $12 + i32.const 4112 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=16 + local.get $12 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set + drop + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + local.get $5 + call $~lib/rt/tlsf/__free + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (func $~lib/map/Map<~lib/string/String,~lib/string/String>#keys (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/array/Array<~lib/string/String>#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array<~lib/string/String>#set:length + local.get $3 + 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/map/Map<~lib/string/String,~lib/string/String>#get (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=8 + i32.const 1 + drop + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + end + call $~lib/map/Map<~lib/string/String,~lib/string/String>#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 4256 + i32.const 4320 + i32.const 105 + i32.const 17 + call $~lib/wasi/index/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std-wasi/process + (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 + i32.const 32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + global.get $~lib/process/process.arch + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 3344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + global.get $~lib/process/process.platform + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 3568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 3600 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 3744 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $~lib/process/lazyArgv + global.set $~lib/process/process.argv + global.get $~lib/process/process.argv + global.set $std-wasi/process/argv + i32.const 3840 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 0 + local.set $0 + global.get $std-wasi/process/argv + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + local.set $2 + local.get $2 + if + global.get $std-wasi/process/argv + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + call $~lib/process/lazyEnv + global.set $~lib/process/process.env + global.get $~lib/process/process.env + global.set $std-wasi/process/env + global.get $std-wasi/process/env + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#keys + global.set $std-wasi/process/envKeys + i32.const 4144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 0 + local.set $1 + global.get $std-wasi/process/envKeys + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $0 + loop $for-loop|1 + local.get $1 + local.get $0 + i32.lt_s + local.set $2 + local.get $2 + if + global.get $~lib/memory/__stack_pointer + global.get $std-wasi/process/envKeys + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__get + local.tee $3 + i32.store offset=8 + global.get $~lib/process/process.stdout + i32.const 4192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/process/WritableStream#write<~lib/string/String> + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + global.get $~lib/process/process.stdout + i32.const 4224 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/process/WritableStream#write<~lib/string/String> + global.get $std-wasi/process/env + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + i32.const 4368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + call $~lib/process/process.time + i32.const 10 + call $~lib/number/I64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 6192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + call $~lib/process/process.hrtime + i32.const 10 + call $~lib/number/U64#toString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 6240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/console/console.log + i32.const 42 + call $~lib/process/process.exit + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 3 + 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 3424 + i32.const 3472 + i32.const 58 + i32.const 60 + call $~lib/wasi/index/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 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $0 + local.get $2 + 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 $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (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 + i32.const 0 + i32.store + local.get $0 + local.set $3 + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 3792 + i32.const 740 + i32.const 7 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.set $6 + block $while-break|0 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + i32.load8_u + local.set $8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 128 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $6 + local.get $8 + i32.store16 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $9 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $6 + local.get $8 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $9 + i32.or + i32.store16 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $10 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $8 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $9 + i32.const 6 + i32.shl + i32.or + local.get $10 + i32.or + local.set $8 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $8 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $9 + i32.const 12 + i32.shl + i32.or + local.get $10 + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.or + local.set $8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + local.get $8 + i32.const 65536 + i32.lt_u + if + local.get $6 + local.get $8 + i32.store16 + else + local.get $8 + i32.const 65536 + i32.sub + local.set $8 + local.get $8 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $11 + local.get $8 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $12 + local.get $6 + local.get $11 + local.get $12 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $6 + i32.const 2 + i32.add + local.set $6 + end + end + end + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|0 + end + end + end + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/itcms/__renew + 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/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 3424 + i32.const 4016 + i32.const 49 + i32.const 43 + call $~lib/wasi/index/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 + local.get $2 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/map/Map<~lib/string/String,~lib/string/String>#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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,~lib/string/String>#set:entriesCount + 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/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 4 + 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 + end + if + i32.const 4416 + i32.const 4544 + i32.const 431 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 4608 + 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 + end + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (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 4 + 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 + end + if + i32.const 4416 + i32.const 4544 + i32.const 401 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + local.get $0 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 4608 + 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 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) +) diff --git a/tests/compiler/std/array-access.json b/tests/compiler/std/array-access.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/array-access.json +++ b/tests/compiler/std/array-access.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 7e224cda64..63d603c7b4 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -1,21 +1,49 @@ (module (type $i32_=>_i32 (func (param i32) (result 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))) (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\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 1100) ",\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 1148) "|\00\00\00\01\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 1276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1308) "\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 1036) "<") + (data (i32.const 1048) "\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 1100) ",") + (data (i32.const 1112) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1148) "|") + (data (i32.const 1160) "\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 1276) "\1c") + (data (i32.const 1288) "\01") + (data (i32.const 1308) "\1c") + (data (i32.const 1320) "\01\00\00\00\08\00\00\00n\00u\00l\00l") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17724)) (export "memory" (memory $0)) - (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) - (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) - (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) - (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) - (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) + (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) + (export "stringArrayPropertyAccess" (func $export:std/array-access/stringArrayPropertyAccess)) + (export "stringArrayMethodCall" (func $export:std/array-access/stringArrayMethodCall)) + (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) + (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1340 + i32.lt_s + if + i32.const 17744 + i32.const 17792 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 @@ -23,11 +51,15 @@ if i32.const 1056 i32.const 1120 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $1 @@ -36,114 +68,115 @@ i32.add i32.load local.tee $0 + i32.store offset=4 + local.get $0 i32.eqz if i32.const 1168 i32.const 1120 - i32.const 108 + i32.const 96 i32.const 40 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (func $~lib/string/String#startsWith (param $0 i32) (result i32) (local $1 i32) - local.get $0 + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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<~lib/array/Array>#__get - local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.const 1 - i32.le_u - if - i32.const 1056 - i32.const 1120 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - i32.load offset=4 - i32.load offset=4 - ) - (func $std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - ) - (func $~lib/string/String#startsWith (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + local.get $1 i32.const 1292 i32.load i32.const 1 i32.shr_u - local.tee $4 - local.set $1 - local.get $4 - i32.const 0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u local.tee $2 - local.get $2 + i32.const 0 + local.get $1 + local.get $1 i32.const 0 i32.gt_s select - local.tee $3 + local.tee $1 i32.add - local.get $2 - i32.gt_s + i32.lt_s if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 return end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=8 block $__inlined_func$~lib/util/string/compareImpl (result i32) i32.const 1296 - local.set $2 + local.set $3 local.get $0 - local.get $3 + local.get $1 i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $4 i32.const 7 i32.and i32.eqz i32.const 0 - local.get $1 + local.get $2 local.tee $0 i32.const 4 i32.ge_u select if loop $do-continue|0 - local.get $3 + local.get $4 i64.load - local.get $2 + local.get $3 i64.load i64.eq if - local.get $3 + local.get $4 i32.const 8 i32.add - local.set $3 - local.get $2 + local.set $4 + local.get $3 i32.const 8 i32.add - local.set $2 + local.set $3 local.get $0 i32.const 4 i32.sub @@ -162,58 +195,291 @@ local.set $0 local.get $1 if - local.get $2 + local.get $3 i32.load16_u local.tee $1 - local.get $3 + local.get $4 i32.load16_u - local.tee $4 + local.tee $2 i32.ne if - local.get $4 + local.get $2 local.get $1 i32.sub br $__inlined_func$~lib/util/string/compareImpl end - local.get $3 + local.get $4 i32.const 2 i32.add - local.set $3 - local.get $2 + local.set $4 + local.get $3 i32.const 2 i32.add - local.set $2 + local.set $3 br $while-continue|1 end end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz ) - (func $std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 + i32.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 + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.le_u + if + i32.const 1056 + i32.const 1120 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store offset=4 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:std/array-access/stringArrayMethodCall (param $0 i32) (result i32) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + local.get $0 call $~lib/string/String#startsWith + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (func $export:std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 + 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 + local.get $0 + i32.store offset=12 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/array/Array>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + local.get $0 call $~lib/string/String#startsWith + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 1c0f99af54..e0278947f3 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -1,28 +1,28 @@ (module - (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 (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_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))) (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\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 76) ",\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 124) "|\00\00\00\01\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 252) "\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 284) "\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 12) "<\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 76) ",\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 124) "|\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 252) "\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 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00n\00u\00l\00l\00\00\00\00\00") (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 316)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16700)) + (global $~lib/memory/__heap_base i32 (i32.const 16700)) (export "memory" (memory $0)) - (export "i32ArrayArrayElementAccess" (func $std/array-access/i32ArrayArrayElementAccess)) - (export "stringArrayPropertyAccess" (func $std/array-access/stringArrayPropertyAccess)) - (export "stringArrayMethodCall" (func $std/array-access/stringArrayMethodCall)) - (export "stringArrayArrayPropertyAccess" (func $std/array-access/stringArrayArrayPropertyAccess)) - (export "stringArrayArrayMethodCall" (func $std/array-access/stringArrayArrayMethodCall)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) + (export "i32ArrayArrayElementAccess" (func $export:std/array-access/i32ArrayArrayElementAccess)) + (export "stringArrayPropertyAccess" (func $export:std/array-access/stringArrayPropertyAccess)) + (export "stringArrayMethodCall" (func $export:std/array-access/stringArrayMethodCall)) + (export "stringArrayArrayPropertyAccess" (func $export:std/array-access/stringArrayArrayPropertyAccess)) + (export "stringArrayArrayMethodCall" (func $export:std/array-access/stringArrayArrayMethodCall)) (func $~lib/array/Array<~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 @@ -31,45 +31,6 @@ i32.shl i32.add i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/array/Array<~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 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 144 - i32.const 96 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 ) (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -80,47 +41,6 @@ i32.add i32.load ) - (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 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $1 - i32.const 1 - call $~lib/array/Array#__get - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) (func $~lib/array/Array<~lib/string/String>#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 @@ -129,42 +49,6 @@ i32.shl i32.add i32.load - call $~lib/rt/stub/__retain - ) - (func $~lib/array/Array<~lib/string/String>#__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 32 - i32.const 96 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 144 - i32.const 96 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 @@ -174,37 +58,12 @@ i32.const 1 i32.shr_u ) - (func $std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) (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 $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -291,12 +150,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -311,12 +164,247 @@ end end i32.const 0 - local.set $7 + ) + (func $~lib/array/Array<~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 $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16720 + i32.const 16768 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/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 - call $~lib/rt/stub/__release + i32.load offset=12 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop local.get $2 - call $~lib/rt/stub/__release - local.get $7 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/array/Array>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 144 + i32.const 96 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/array-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/string/String#startsWith (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -324,107 +412,150 @@ (local $5 i32) (local $6 i32) (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + (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 i32.const 0 i32.eq if + global.get $~lib/memory/__stack_pointer i32.const 304 - 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.tee $1 + i32.store end local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length - local.set $5 + local.set $3 local.get $2 local.tee $4 i32.const 0 - local.tee $3 + local.tee $5 local.get $4 - local.get $3 + local.get $5 i32.gt_s select - local.tee $3 - local.get $5 - local.tee $4 + local.tee $5 local.get $3 + local.tee $4 + local.get $5 local.get $4 i32.lt_s select local.set $6 local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length local.set $7 local.get $7 local.get $6 i32.add - local.get $5 + local.get $3 i32.gt_s if i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 + 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 $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 local.get $6 local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 i32.const 0 local.get $7 call $~lib/util/string/compareImpl i32.eqz - local.set $3 - local.get $1 - call $~lib/rt/stub/__release - local.get $3 + 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-access/stringArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + 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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 272 - i32.const 0 - call $~lib/string/String#startsWith - local.set $2 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $1 - i32.const 2 - i32.shl + i32.const 0 + call $~lib/string/String#startsWith + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - call $~lib/rt/stub/__retain + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/array/Array<~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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 local.get $0 i32.load offset=12 @@ -432,15 +563,22 @@ if i32.const 32 i32.const 96 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__uget - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 1 drop i32.const 0 @@ -451,61 +589,201 @@ if i32.const 144 i32.const 96 - i32.const 108 + i32.const 96 i32.const 40 call $~lib/builtins/abort unreachable end local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $std/array-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + 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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/string/String#get:length - local.set $3 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release - local.get $3 ) (func $std/array-access/stringArrayArrayMethodCall (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__get - local.tee $1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 272 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 call $~lib/string/String#startsWith - local.set $3 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release + ) + (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/stub/__release - local.get $3 + i32.store + local.get $0 + call $std/array-access/i32ArrayArrayElementAccess + 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-access/stringArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayPropertyAccess + 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-access/stringArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayMethodCall + 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-access/stringArrayArrayPropertyAccess (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayArrayPropertyAccess + 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-access/stringArrayArrayMethodCall (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/array-access/stringArrayArrayMethodCall + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/std/array-literal.json b/tests/compiler/std/array-literal.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/array-literal.json +++ b/tests/compiler/std/array-literal.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index f694189231..f4ff9bc6d2 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1,75 +1,302 @@ (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_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (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_=>_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) "\1c\00\00\00\01") + (data (i32.const 1036) "\1c") (data (i32.const 1052) "\03\00\00\00\00\01\02") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\03\00\00\00\03") - (data (i32.const 1116) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") - (data (i32.const 1180) "<\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 1244) ",\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 1292) "\1c\00\00\00\01") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\03\00\00\00\03") + (data (i32.const 1116) "<") + (data (i32.const 1128) "\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s") + (data (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\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1292) "\1c") (data (i32.const 1308) "\0c\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 1324) ",\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \05\00\00 \05\00\00\0c\00\00\00\03") - (data (i32.const 1372) "\1c\00\00\00\01") - (data (i32.const 1404) ",\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\05\00\00p\05") - (data (i32.const 1452) "<\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 1516) "<\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 1580) "<\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) ",") + (data (i32.const 1336) "\04\00\00\00\10\00\00\00 \05\00\00 \05\00\00\0c\00\00\00\03") + (data (i32.const 1372) "\1c") + (data (i32.const 1404) ",") + (data (i32.const 1416) "\04\00\00\00\10\00\00\00p\05\00\00p\05") + (data (i32.const 1452) "<") + (data (i32.const 1464) "\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 1516) "<") + (data (i32.const 1528) "\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 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 1792) "\t\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1820) "B\08\00\00\00\00\00\00\02\t\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\02A") + (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 1424)) (global $std/array-literal/i (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI8 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18252)) (export "memory" (memory $0)) (start $~start) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.load offset=12 - i32.ge_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $std/array-literal/emptyArrayI32 + local.tee $0 if - i32.const 1200 - i32.const 1264 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRef + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1200 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 local.get $0 i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.add - i32.load8_s + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next local.get $1 local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 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 18252 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1536 + 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 1536 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 i32.load offset=12 - i32.ge_u + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + i32.load + i32.gt_u + if + i32.const 1200 + i32.const 1664 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - i32.const 1200 - i32.const 1264 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable + return end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -84,8 +311,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 272 + i32.const 1744 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -104,8 +331,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 274 + i32.const 1744 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -147,8 +374,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 287 + i32.const 1744 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -239,8 +466,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 200 + i32.const 1744 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -253,8 +480,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 202 + i32.const 1744 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -326,8 +553,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 223 + i32.const 1744 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -381,23 +608,23 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 238 + i32.const 1744 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1600 - i32.const 239 + i32.const 1744 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -444,8 +671,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 255 + i32.const 1744 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -514,8 +741,8 @@ i32.gt_u if i32.const 0 - i32.const 1600 - i32.const 380 + i32.const 1744 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -542,8 +769,8 @@ i32.lt_u if i32.const 0 - i32.const 1600 - i32.const 387 + i32.const 1744 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -570,8 +797,8 @@ i32.lt_u if i32.const 0 - i32.const 1600 - i32.const 400 + i32.const 1744 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -618,46 +845,371 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + (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 18256 + i32.const 0 + i32.store + i32.const 19824 + i32.const 0 + i32.store + loop $for-loop|0 local.get $1 - local.get $1 - i32.const 536870910 + i32.const 23 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 + if + local.get $1 + i32.const 2 + i32.shl + i32.const 18256 + 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 18256 + 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 18256 + i32.const 19828 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18256 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18252 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1536 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18252 + 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 $1 + i32.const 18252 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1744 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -673,8 +1225,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 333 + i32.const 1744 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -725,8 +1277,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 346 + i32.const 1744 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -756,8 +1308,8 @@ i32.ge_u if i32.const 1472 - i32.const 1600 - i32.const 461 + i32.const 1744 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -847,8 +1399,8 @@ i32.eqz if i32.const 0 - i32.const 1600 - i32.const 498 + i32.const 1744 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -862,8 +1414,8 @@ i32.gt_u if i32.const 0 - i32.const 1600 - i32.const 500 + i32.const 1744 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -881,8 +1433,8 @@ i32.and if i32.const 0 - i32.const 1600 - i32.const 360 + i32.const 1744 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -946,214 +1498,526 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1472 - i32.const 1536 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $3 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $3 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1648 - i32.const 0 - i32.store - i32.const 3216 + 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.store - loop $for-loop|0 - local.get $2 - i32.const 23 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - i32.const 1648 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 16 - i32.lt_u - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1648 - i32.add - i32.const 0 - i32.store offset=96 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1648 - i32.const 3220 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1648 - global.set $~lib/rt/tlsf/ROOT - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1644 - i32.gt_u - if + i32.store8 local.get $0 - i32.const 20 + local.get $1 + i32.add + i32.const 4 i32.sub - local.tee $1 - i32.load offset=4 local.tee $2 - i32.const -268435456 - i32.and + 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 1 - i32.add - i32.const -268435456 + 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 - i32.ne - if - i32.const 0 - i32.const 1536 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $2 + i32.add + local.tee $0 + i32.const 0 + i32.store + local.get $0 local.get $1 local.get $2 - i32.const 1 + 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.load - i32.const 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 - if - i32.const 0 - i32.const 1536 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $2 - call $~lib/rt/pure/__new + call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 local.get $1 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - call $~lib/rt/pure/__retain - i32.store + i32.store offset=12 local.get $2 - local.get $3 - i32.store offset=4 + local.get $0 + i32.store offset=16 local.get $2 - local.get $1 - i32.store offset=8 + 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 - local.get $0 - i32.store offset=12 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end local.get $0 - i32.const 1644 - i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 1536 + i32.const 290 + 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 - call $~lib/rt/pure/decrement + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + 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 + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (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 $std/array-literal/RefWithCtor + 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 $folding-inner1 $std/array-literal/RefWithCtor $folding-inner1 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + 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 $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:std/array-literal + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1868 + i32.lt_s + if + i32.const 18272 + i32.const 18320 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1200 + i32.const 1264 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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 1200 + i32.const 1264 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $start:std/array-literal (local $0 i32) - (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1100 i32.load i32.const 3 @@ -1166,6 +2030,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1088 i32.const 0 call $~lib/array/Array#__get @@ -1177,6 +2044,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1088 i32.const 1 call $~lib/array/Array#__get @@ -1190,6 +2060,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1088 i32.const 2 call $~lib/array/Array#__get @@ -1203,6 +2076,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store i32.const 1356 i32.load i32.const 3 @@ -1215,6 +2091,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store i32.const 1344 i32.const 0 call $~lib/array/Array#__get @@ -1226,6 +2105,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store i32.const 1344 i32.const 1 call $~lib/array/Array#__get @@ -1239,6 +2121,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store i32.const 1344 i32.const 2 call $~lib/array/Array#__get @@ -1252,8 +2137,12 @@ call $~lib/builtins/abort unreachable end - i32.const 1436 - i32.load + global.get $~lib/memory/__stack_pointer + global.get $std/array-literal/emptyArrayI32 + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 i32.const 1136 @@ -1262,14 +2151,28 @@ call $~lib/builtins/abort unreachable end + i32.const 1584 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1616 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1696 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 0 i32.const 3 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=8 + local.get $0 + i32.load offset=4 global.get $std/array-literal/i i32.store8 global.get $std/array-literal/i @@ -1277,6 +2180,7 @@ i32.add global.set $std/array-literal/i local.get $0 + i32.load offset=4 global.get $std/array-literal/i i32.store8 offset=1 global.get $std/array-literal/i @@ -1284,11 +2188,16 @@ i32.add global.set $std/array-literal/i local.get $0 + i32.load offset=4 global.get $std/array-literal/i i32.store8 offset=2 - local.get $1 + local.get $0 global.set $std/array-literal/dynamicArrayI8 + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -1300,7 +2209,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 i32.const 0 call $~lib/array/Array#__get if @@ -1311,7 +2224,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -1324,7 +2241,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI8 + local.tee $0 + i32.store + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 2 @@ -1339,33 +2260,44 @@ end i32.const 0 global.set $std/array-literal/i + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 4 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=4 + local.get $0 + i32.const 0 global.get $std/array-literal/i - i32.store + call $~lib/array/Array#__uset global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i local.get $0 + i32.const 1 global.get $std/array-literal/i - i32.store offset=4 + call $~lib/array/Array#__uset global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i local.get $0 + i32.const 2 global.get $std/array-literal/i - i32.store offset=8 - local.get $1 + call $~lib/array/Array#__uset + local.get $0 global.set $std/array-literal/dynamicArrayI32 + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -1377,7 +2309,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 i32.const 0 call $~lib/array/Array#__get if @@ -1388,7 +2324,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 i32.const 1 call $~lib/array/Array#__get i32.const 1 @@ -1401,7 +2341,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayI32 + local.tee $0 + i32.store + local.get $0 i32.const 2 call $~lib/array/Array#__get i32.const 2 @@ -1414,34 +2358,36 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 6 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 local.tee $0 - i32.const 0 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 0 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.load offset=4 i32.store offset=8 - local.get $1 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 global.set $std/array-literal/dynamicArrayRef + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayRef + local.tee $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -1453,34 +2399,36 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 8 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 local.tee $0 - i32.const 0 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.load offset=4 i32.store offset=4 local.get $0 i32.const 0 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset + local.get $0 global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.ne @@ -1492,170 +2440,160 @@ call $~lib/builtins/abort unreachable end - global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/pure/__release + i32.const 0 + global.set $std/array-literal/emptyArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayI8 + i32.const 0 + global.set $std/array-literal/dynamicArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayRef + i32.const 0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer i32.const 1 i32.const 2 i32.const 6 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain local.tee $0 - i32.load offset=4 - i32.const 0 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 + i32.store offset=8 local.get $0 - i32.load - i32.const 1 - i32.and - if - i32.const 0 - i32.const 1536 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 18252 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner2 - 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 $folding-inner1 $folding-inner1 $__inlined_func$~lib/rt/__visit_members $folding-inner2 $__inlined_func$~lib/rt/__visit_members $folding-inner2 $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=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=24 - local.tee $1 - local.get $0 - i32.load offset=32 - 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 $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end + 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 - i32.load offset=20 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1536 - 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 + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1536 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/rt/pure/__visit (param $0 i32) + (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1644 - i32.lt_u - if - return - end + local.get $1 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 local.get $0 - i32.const 20 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array-literal/Ref#constructor (result i32) + (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 + i32.const 5 + 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 $std/array-literal/RefWithCtor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - call $~lib/rt/pure/decrement + 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 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index 5d85019d68..588f6618f2 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -38,14 +38,17 @@ var dynamicArrayRefWithCtor: RefWithCtor[] = [new RefWithCtor(), new RefWithCtor assert(dynamicArrayRefWithCtor.length == 3); // Unleak globals -__release(changetype(emptyArrayI32)); -__release(changetype(dynamicArrayI8)); -__release(changetype(dynamicArrayI32)); -__release(changetype(dynamicArrayRef)); -__release(changetype(dynamicArrayRefWithCtor)); +emptyArrayI32 = changetype(0); +dynamicArrayI8 = changetype(0); +dynamicArrayI32 = changetype(0); +dynamicArrayRef = changetype(0); +dynamicArrayRefWithCtor = changetype(0); -// Make sure unassigned literals don't +// Make sure unassigned literals don't leak function doesntLeak(refs: Ref[]): void {} { doesntLeak([ new Ref() ]); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index f8da45c66c..710231feee 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -1,32 +1,47 @@ (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_=>_none (func (param 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))) (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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\01\02\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) ",\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \00\00\00 \00\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 92) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00") - (data (i32.const 156) "<\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 220) ",\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 268) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") - (data (i32.const 300) ",\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \01\00\00 \01\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 380) ",\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\01\00\00p\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 428) "<\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 492) "<\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 556) "<\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 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\00\01\02\00\00\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\03\00\00\00\03\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\01\00\00\00(\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00-\00l\00i\00t\00e\00r\00a\00l\00.\00t\00s\00\00\00\00\00") + (data (i32.const 156) "<\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 220) ",\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 268) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00") + (data (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00 \01\00\00 \01\00\00\0c\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 348) "\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 380) ",\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\01\00\00p\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 428) "<\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 492) "<\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 560) "\00\00\00\00\00\00\00\00\00\00\00\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\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 672) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 700) "<\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 768) "\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\00B\08\00\00\00\00\00\00\02\t\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\02A\00\00\00\00\00\00") (table $0 1 funcref) (global $std/array-literal/staticArrayI8 i32 (i32.const 64)) (global $std/array-literal/staticArrayI32 i32 (i32.const 320)) (global $std/array-literal/emptyArrayI32 (mut i32) (i32.const 400)) (global $std/array-literal/i (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) @@ -34,7 +49,10 @@ (global $std/array-literal/dynamicArrayI32 (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRef (mut i32) (i32.const 0)) (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 620)) + (global $~lib/rt/__rtti_base i32 (i32.const 768)) + (global $~lib/memory/__data_end i32 (i32.const 844)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17228)) + (global $~lib/memory/__heap_base i32 (i32.const 17228)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -50,28 +68,6 @@ i32.add i32.load8_s ) - (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 176 - i32.const 240 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -85,155 +81,451 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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 - i32.load offset=12 - i32.ge_u - if - i32.const 176 - i32.const 240 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end + ) + (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/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 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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 512 + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 576 - i32.const 272 - i32.const 14 + i32.const 512 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 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 + 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 0 - i32.const 576 - i32.const 274 - i32.const 14 + i32.const 176 + i32.const 640 + i32.const 22 + i32.const 28 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 576 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 + ) + (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 $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.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 512 + 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 720 + i32.const 273 + 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 720 + i32.const 275 + 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 720 + i32.const 288 + 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 @@ -318,7 +610,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -342,8 +634,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 200 + i32.const 720 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -359,8 +651,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 202 + i32.const 720 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -413,7 +705,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -454,8 +746,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 223 + i32.const 720 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -488,7 +780,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -497,7 +789,7 @@ 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 @@ -519,8 +811,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 238 + i32.const 720 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -537,8 +829,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 239 + i32.const 720 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -596,8 +888,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 255 + i32.const 720 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -621,15 +913,15 @@ 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 @@ -657,7 +949,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -701,8 +993,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 380 + i32.const 720 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -744,8 +1036,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 387 + i32.const 720 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -777,8 +1069,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 400 + i32.const 720 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -815,13 +1107,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 @@ -832,7 +1124,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 @@ -859,6 +1151,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 @@ -901,7 +1195,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 @@ -989,18 +1283,346 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne if (result i32) - i32.const 12 - else local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add + 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 720 + i32.const 565 + 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 + 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 + 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 512 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1015,8 +1637,8 @@ i32.ge_u if i32.const 448 - i32.const 576 - i32.const 461 + i32.const 720 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1099,8 +1721,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 333 + i32.const 720 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1164,8 +1786,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 346 + i32.const 720 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1315,8 +1937,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 360 + i32.const 720 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1341,7 +1963,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 @@ -1354,7 +1976,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 @@ -1365,7 +1987,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 @@ -1395,7 +2017,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) @@ -1424,8 +2046,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 498 + i32.const 720 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1444,8 +2066,8 @@ i32.eqz if i32.const 0 - i32.const 576 - i32.const 500 + i32.const 720 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1473,55 +2095,291 @@ 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 448 - i32.const 512 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 + local.get $1 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) + (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) - loop $while-continue|0 + (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 - if (result i32) - local.get $1 - i32.const 3 + 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/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 448 + i32.const 512 + i32.const 256 + 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 @@ -2769,7 +3627,7 @@ (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.set $3 local.get $2 if @@ -2780,307 +3638,776 @@ end local.get $3 ) - (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 + (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.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq i32.eqz if - i32.const 0 - i32.const 512 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable + return 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 512 - i32.const 112 + i32.const 290 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 + 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 - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.set $4 + 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#__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 - local.set $5 - local.get $5 + i32.add + local.get $2 + i32.store8 i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 + drop + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.store offset=12 - local.get $4 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + i32.const 0 + drop ) - (func $std/array-literal/Ref#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (func $std/array-literal/RefWithCtor#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.eqz - if - i32.const 0 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=12 ) - (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 $std/array-literal/doesntLeak (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__release + nop ) - (func $start:std/array-literal + (func $~lib/rt/itcms/__collect (local $0 i32) - (local $1 i32) - global.get $std/array-literal/staticArrayI8 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz + 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.const 112 - i32.const 2 - i32.const 1 - 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 $std/array-literal/staticArrayI8 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold i32.const 0 - call $~lib/array/Array#__get + drop i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 3 + if (result i32) i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/staticArrayI8 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz - if + else i32.const 0 - i32.const 112 - i32.const 4 - i32.const 1 - call $~lib/builtins/abort - unreachable end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) global.get $std/array-literal/staticArrayI8 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 5 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end global.get $std/array-literal/staticArrayI32 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 8 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/array-literal/staticArrayI32 - i32.const 0 - call $~lib/array/Array#__get - i32.const 0 - i32.eq - i32.eqz + global.get $std/array-literal/emptyArrayI32 + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 9 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/array-literal/staticArrayI32 - i32.const 1 - call $~lib/array/Array#__get - i32.const 1 - i32.eq - i32.eqz + global.get $std/array-literal/dynamicArrayI8 + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 10 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/array-literal/staticArrayI32 - i32.const 2 - call $~lib/array/Array#__get - i32.const 2 - i32.eq - i32.eqz + global.get $std/array-literal/dynamicArrayI32 + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 11 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - global.get $std/array-literal/emptyArrayI32 - call $~lib/array/Array#get:length - i32.const 0 - i32.eq - i32.eqz + global.get $std/array-literal/dynamicArrayRef + local.tee $1 if - i32.const 0 - i32.const 112 - i32.const 14 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end - i32.const 3 - i32.const 0 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 + global.get $std/array-literal/dynamicArrayRefWithCtor + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 176 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 448 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + 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) + (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 $0 + local.set $2 + local.get $2 local.get $0 - global.get $std/array-literal/i - i32.store8 + 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 $std/array-literal/RefWithCtor + block $~lib/array/Array + block $std/array-literal/Ref + block $~lib/array/Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/array-literal + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17248 + i32.const 17296 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (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 176 + i32.const 240 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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#__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 176 + i32.const 240 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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 $start:std/array-literal + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 $std/array-literal/staticArrayI8 + 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 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 2 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + 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 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 3 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + 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 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 4 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI8 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 5 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + 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 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + 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 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 9 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + 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 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/staticArrayI32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/array-literal/emptyArrayI32 + 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 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 112 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 560 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 592 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 672 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 0 + i32.const 3 + 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 $0 + i32.store offset=8 + local.get $1 + i32.const 0 + global.get $std/array-literal/i + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i global.get $std/array-literal/i - i32.store8 offset=1 - local.get $0 + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i global.get $std/array-literal/i - i32.store8 offset=2 + call $~lib/array/Array#__uset local.get $1 global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 + 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 3 i32.eq @@ -3094,6 +4421,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI8 + 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 0 @@ -3108,6 +4440,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI8 + 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 1 @@ -3122,6 +4459,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI8 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 2 @@ -3137,36 +4479,47 @@ end i32.const 0 global.set $std/array-literal/i + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 4 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $1 - local.get $1 + local.tee $1 + i32.store offset=4 + local.get $0 + i32.const 0 global.get $std/array-literal/i - i32.store - local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i global.get $std/array-literal/i - i32.store offset=4 - local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 global.get $std/array-literal/i i32.const 1 i32.add global.set $std/array-literal/i global.get $std/array-literal/i - i32.store offset=8 + call $~lib/array/Array#__uset local.get $0 global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 + 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 3 i32.eq @@ -3180,6 +4533,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI32 + 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 0 @@ -3194,6 +4552,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI32 + 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 1 @@ -3208,6 +4571,11 @@ unreachable end global.get $std/array-literal/dynamicArrayI32 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 2 call $~lib/array/Array#__get i32.const 2 @@ -3221,31 +4589,42 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 6 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 i32.load offset=4 - local.set $0 - local.get $0 + local.tee $0 + i32.store offset=8 + local.get $1 + i32.const 0 i32.const 0 call $std/array-literal/Ref#constructor - i32.store - local.get $0 + call $~lib/array/Array#__uset + local.get $1 + i32.const 1 i32.const 0 call $std/array-literal/Ref#constructor - i32.store offset=4 - local.get $0 + call $~lib/array/Array#__uset + local.get $1 + i32.const 2 i32.const 0 call $std/array-literal/Ref#constructor - i32.store offset=8 + call $~lib/array/Array#__uset local.get $1 global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef + 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 3 i32.eq @@ -3258,421 +4637,203 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 3 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 - local.set $1 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - i32.store - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor + local.tee $1 i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array-literal/RefWithCtor#constructor - i32.store offset=8 local.get $0 - global.set $std/array-literal/dynamicArrayRefWithCtor - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/array/Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 112 - i32.const 38 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/array-literal/emptyArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI8 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayI32 - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRef - call $~lib/rt/pure/__release - global.get $std/array-literal/dynamicArrayRefWithCtor - call $~lib/rt/pure/__release - i32.const 1 - i32.const 2 - i32.const 6 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $0 - local.get $0 i32.const 0 - call $std/array-literal/Ref#constructor - i32.store - local.get $1 - local.tee $0 - call $std/array-literal/doesntLeak + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset local.get $0 - call $~lib/rt/pure/__release - ) - (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 + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/pure/finalize (param $0 i32) + i32.const 2 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) + call $std/array-literal/RefWithCtor#constructor + call $~lib/array/Array#__uset local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $std/array-literal/dynamicArrayRefWithCtor 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 512 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 512 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 512 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:std/array-literal - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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.store + local.get $2 + call $~lib/array/Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 512 - 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 + i32.const 112 + i32.const 38 + i32.const 1 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop - local.get $0 - i32.load + global.set $std/array-literal/emptyArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayI8 + i32.const 0 + global.set $std/array-literal/dynamicArrayI32 + i32.const 0 + global.set $std/array-literal/dynamicArrayRef + i32.const 0 + global.set $std/array-literal/dynamicArrayRefWithCtor + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=8 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/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + call $~lib/array/Array#__uset local.get $1 - call $~lib/array/Array#__visit - ) - (func $std/array-literal/Ref~visit (param $0 i32) (param $1 i32) - nop - ) - (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 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + i32.store + local.get $2 + call $std/array-literal/doesntLeak + global.get $~lib/memory/__heap_base + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 12 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~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $std/array-literal/RefWithCtor~visit (param $0 i32) (param $1 i32) - nop + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 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) - i32.const 1 - drop + (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 - i32.load offset=4 - 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 + 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.load offset=12 - i32.const 2 - i32.shl + i32.store offset=12 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 4 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 + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (func $std/array-literal/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 + 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 - i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $std/array-literal/RefWithCtor#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 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $std/array-literal/RefWithCtor - block $~lib/array/Array - block $std/array-literal/Ref - block $~lib/array/Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/array/Array $~lib/array/Array $std/array-literal/Ref $~lib/array/Array $std/array-literal/RefWithCtor $~lib/array/Array $invalid - end - 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~visit - return - end - local.get $0 - local.get $1 - call $std/array-literal/Ref~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $std/array-literal/RefWithCtor~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - unreachable + 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/std/array.json b/tests/compiler/std/array.json index d8f53d9b42..2aa1e66970 100644 --- a/tests/compiler/std/array.json +++ b/tests/compiler/std/array.json @@ -1,6 +1,6 @@ { "asc_flags": [ - "--runtime half" + "--explicitStart" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index b92c7f9deb..c3af779d5a 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -2,22 +2,23 @@ (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_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) (type $none_=>_f64 (func (result f64))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) + (type $i64_=>_none (func (param i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) - (type $i64_=>_none (func (param i64))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) @@ -25,389 +26,528 @@ (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (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\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 1372) "<\00\00\00\01\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 1436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1468) "\1c\00\00\00\01") - (data (i32.const 1484) "\05\00\00\00\01\02\03\04\05") - (data (i32.const 1500) "\1c\00\00\00\01") - (data (i32.const 1516) "\05\00\00\00\01\01\01\04\05") - (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) "\1c\00\00\00\01") - (data (i32.const 1612) "\05") - (data (i32.const 1628) "\1c\00\00\00\01") - (data (i32.const 1644) "\05\00\00\00\01\01") - (data (i32.const 1660) "\1c\00\00\00\01") - (data (i32.const 1676) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1692) "\1c\00\00\00\01") - (data (i32.const 1708) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1724) ",\00\00\00\01") - (data (i32.const 1740) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 1772) ",\00\00\00\01") - (data (i32.const 1788) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1820) ",\00\00\00\01") - (data (i32.const 1836) "\14") - (data (i32.const 1868) ",\00\00\00\01") - (data (i32.const 1884) "\14\00\00\00\01\00\00\00\01") - (data (i32.const 1916) ",\00\00\00\01") - (data (i32.const 1932) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 1964) ",\00\00\00\01") - (data (i32.const 1980) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2012) ",\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 2060) "\1c\00\00\00\01") - (data (i32.const 2092) "\1c\00\00\00\01") - (data (i32.const 2124) ",\00\00\00\01") - (data (i32.const 2140) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2172) ",\00\00\00\01") - (data (i32.const 2188) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2220) ",\00\00\00\01") - (data (i32.const 2236) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2268) ",\00\00\00\01") - (data (i32.const 2284) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2316) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 2380) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2412) ",\00\00\00\01") - (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) ",\00\00\00\01") + (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) "\1c") + (data (i32.const 2236) "\1c") + (data (i32.const 2268) ",") + (data (i32.const 2284) "\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) ",") + (data (i32.const 2332) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2364) ",") + (data (i32.const 2380) "\14\00\00\00\01\00\00\00\02\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\04\00\00\00\05\00\00\00\04\00\00\00\05") + (data (i32.const 2460) ",") (data (i32.const 2476) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2508) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 2572) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2604) ",\00\00\00\01") + (data (i32.const 2508) ",") + (data (i32.const 2524) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 2556) ",") + (data (i32.const 2572) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\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) ",\00\00\00\01") - (data (i32.const 2668) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2700) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 2764) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2796) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 2860) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2892) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 2956) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2988) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 3052) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3084) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 3148) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 3180) ",\00\00\00\01") - (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) ",\00\00\00\01") - (data (i32.const 3244) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 3276) "\1c\00\00\00\01") - (data (i32.const 3292) "\04\00\00\00\00\00\c0\7f") - (data (i32.const 3308) "\1c\00\00\00\01") - (data (i32.const 3324) "\08") - (data (i32.const 3334) "\f8\7f") - (data (i32.const 3340) "\1c\00\00\00\01") - (data (i32.const 3356) "\04\00\00\00\00\00\c0\7f") - (data (i32.const 3372) "\1c\00\00\00\01") - (data (i32.const 3388) "\08") - (data (i32.const 3398) "\f8\7f") - (data (i32.const 3404) ",\00\00\00\01") - (data (i32.const 3420) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3452) ",\00\00\00\01") - (data (i32.const 3468) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3500) "\1c\00\00\00\01") - (data (i32.const 3532) ",\00\00\00\01") - (data (i32.const 3548) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3580) "\1c\00\00\00\01") - (data (i32.const 3612) ",\00\00\00\01") - (data (i32.const 3628) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3660) ",\00\00\00\01") - (data (i32.const 3676) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3708) "\1c\00\00\00\01") - (data (i32.const 3724) "\0c\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3740) "\1c\00\00\00\01") - (data (i32.const 3756) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 3772) ",\00\00\00\01") - (data (i32.const 3788) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3820) "\1c\00\00\00\01") - (data (i32.const 3836) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 3852) "\1c\00\00\00\01") - (data (i32.const 3868) "\0c\00\00\00\01\00\00\00\02\00\00\00\05") - (data (i32.const 3884) ",\00\00\00\01") - (data (i32.const 3900) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 3932) "\1c\00\00\00\01") - (data (i32.const 3948) "\04\00\00\00\01") - (data (i32.const 3964) ",\00\00\00\01") - (data (i32.const 3980) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4012) ",\00\00\00\01") - (data (i32.const 4028) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4060) "\1c\00\00\00\01") - (data (i32.const 4076) "\04\00\00\00\05") - (data (i32.const 4092) ",\00\00\00\01") - (data (i32.const 4108) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") - (data (i32.const 4140) ",\00\00\00\01") - (data (i32.const 4156) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4188) "\1c\00\00\00\01") - (data (i32.const 4204) "\08\00\00\00\04\00\00\00\05") - (data (i32.const 4220) "\1c\00\00\00\01") - (data (i32.const 4236) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 4252) ",\00\00\00\01") - (data (i32.const 4268) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4300) "\1c\00\00\00\01") - (data (i32.const 4316) "\04\00\00\00\04") - (data (i32.const 4332) ",\00\00\00\01") - (data (i32.const 4348) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") - (data (i32.const 4380) ",\00\00\00\01") - (data (i32.const 4396) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4428) "\1c\00\00\00\01") - (data (i32.const 4444) "\04\00\00\00\01") - (data (i32.const 4460) ",\00\00\00\01") - (data (i32.const 4476) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4508) ",\00\00\00\01") - (data (i32.const 4524) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4556) "\1c\00\00\00\01") - (data (i32.const 4588) ",\00\00\00\01") - (data (i32.const 4604) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4636) ",\00\00\00\01") - (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\00\00\00\01") - (data (i32.const 4716) ",\00\00\00\01") - (data (i32.const 4732) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4764) ",\00\00\00\01") - (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\00\00\00\01") - (data (i32.const 4844) ",\00\00\00\01") - (data (i32.const 4860) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 4892) ",\00\00\00\01") - (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\00\00\00\01") - (data (i32.const 4972) ",\00\00\00\01") - (data (i32.const 4988) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5020) ",\00\00\00\01") - (data (i32.const 5036) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5068) "\1c\00\00\00\01") - (data (i32.const 5100) ",\00\00\00\01") - (data (i32.const 5116) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 5148) "\1c\00\00\00\01") - (data (i32.const 5180) "|\00\00\00\01\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 5308) "<\00\00\00\01\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 5372) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01") - (data (i32.const 5404) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02") - (data (i32.const 5436) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03") - (data (i32.const 5468) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\04") - (data (i32.const 5500) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\05") - (data (i32.const 5532) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\06") - (data (i32.const 5564) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\07") - (data (i32.const 5596) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\08") - (data (i32.const 5628) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\t") - (data (i32.const 5660) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\n") - (data (i32.const 5692) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0b") - (data (i32.const 5724) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0c") - (data (i32.const 5756) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0d") - (data (i32.const 5788) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0e") - (data (i32.const 5820) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0f") - (data (i32.const 5852) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\10") - (data (i32.const 5884) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11") - (data (i32.const 5916) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12") - (data (i32.const 5948) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13") - (data (i32.const 5980) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14") - (data (i32.const 6012) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\15") - (data (i32.const 6044) "\1c\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16") - (data (i32.const 6076) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17") - (data (i32.const 6108) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18") - (data (i32.const 6140) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19") - (data (i32.const 6172) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1a") - (data (i32.const 6204) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1b") - (data (i32.const 6236) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1c") - (data (i32.const 6268) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1d") - (data (i32.const 6300) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1e") - (data (i32.const 6332) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1f") - (data (i32.const 6364) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00 ") - (data (i32.const 6396) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00!") - (data (i32.const 6428) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\"") - (data (i32.const 6460) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00#") - (data (i32.const 6492) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00$") - (data (i32.const 6524) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00%") - (data (i32.const 6556) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00&") - (data (i32.const 6588) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'") - (data (i32.const 6620) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(") - (data (i32.const 6652) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00)") - (data (i32.const 6684) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00*") - (data (i32.const 6716) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+") - (data (i32.const 6748) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") - (data (i32.const 6796) "\bc\00\00\00\01\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 6988) "<\00\00\00\01") - (data (i32.const 7004) " \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 7052) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,") - (data (i32.const 7084) "<\00\00\00\01") - (data (i32.const 7100) " \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 7148) "\\\00\00\00\01") - (data (i32.const 7164) "@") - (data (i32.const 7174) "\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 7214) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") - (data (i32.const 7244) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-") - (data (i32.const 7276) "\\\00\00\00\01") - (data (i32.const 7292) "@") - (data (i32.const 7302) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") - (data (i32.const 7334) "\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 7372) ",\00\00\00\01") - (data (i32.const 7388) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7420) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.") - (data (i32.const 7452) ",\00\00\00\01") - (data (i32.const 7468) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") - (data (i32.const 7500) ",\00\00\00\01") - (data (i32.const 7516) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") - (data (i32.const 7548) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/") - (data (i32.const 7580) ",\00\00\00\01") - (data (i32.const 7596) "\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 7628) "\1c\00\00\00\01") - (data (i32.const 7660) "\1c\00\00\00\01") - (data (i32.const 7676) "\04\00\00\00\01") - (data (i32.const 7692) "\1c\00\00\00\01") - (data (i32.const 7708) "\08\00\00\00\02\00\00\00\01") - (data (i32.const 7724) ",\00\00\00\01") - (data (i32.const 7740) "\10\00\00\00\03\00\00\00\02\00\00\00\01") - (data (i32.const 7772) ",\00\00\00\01") - (data (i32.const 7788) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 7820) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000") - (data (i32.const 7852) "\1c\00\00\00\01") - (data (i32.const 7868) "\04\00\00\00\01") - (data (i32.const 7884) "\1c\00\00\00\01") - (data (i32.const 7900) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 7916) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001") - (data (i32.const 7948) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002") - (data (i32.const 7980) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003") - (data (i32.const 8012) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004") - (data (i32.const 8044) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005") - (data (i32.const 8076) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006") - (data (i32.const 8108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 8140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 8172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 8204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 8236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 8268) ",\00\00\00\01") - (data (i32.const 8284) "\1c\00\00\00\c0\1f\00\00\e0\1f\00\00\c0\1f\00\00\00 \00\00 \00\00@ ") - (data (i32.const 8316) ",\00\00\00\01") - (data (i32.const 8332) "\1c\00\00\00@ \00\00\c0\1f\00\00\c0\1f\00\00\00 \00\00\e0\1f\00\00 ") - (data (i32.const 8364) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007") - (data (i32.const 8396) "\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 8428) "\1c\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008") - (data (i32.const 8460) "\1c\00\00\00\01") - (data (i32.const 8476) "\02\00\00\00\01") - (data (i32.const 8492) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 8524) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 8556) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 8588) ",\00\00\00\01\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 8636) "\1c\00\00\00\01") - (data (i32.const 8652) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") - (data (i32.const 8668) "|\00\00\00\01\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 8796) "<\00\00\00\01\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 8860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 8892) "\\\00\00\00\01\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 8988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003") - (data (i32.const 9020) "\1c\00\00\00\01") - (data (i32.const 9036) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 9052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 9084) "\1c\00\00\00\01") - (data (i32.const 9100) "\08\00\00\00\00\00\00\80\00\00\00\80") - (data (i32.const 9116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_") - (data (i32.const 9148) "L\00\00\00\01\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 9228) "L\00\00\00\01") - (data (i32.const 9244) "0") - (data (i32.const 9262) "\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 9308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 9340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 9372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 9404) ",\00\00\00\01\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 9452) ",\00\00\00\01\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 9560) "\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 10908) "\1c\00\00\00\01") - (data (i32.const 10940) "\1c\00\00\00\01") - (data (i32.const 10956) "\04\00\00\00\01") - (data (i32.const 10972) "\1c\00\00\00\01") - (data (i32.const 10988) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 11004) ",\00\00\00\01") - (data (i32.const 11020) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 11052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002") - (data (i32.const 11084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") - (data (i32.const 11132) "\1c\00\00\00\01") - (data (i32.const 11148) "\03\00\00\00\01\ff") - (data (i32.const 11164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") - (data (i32.const 11196) "\1c\00\00\00\01") - (data (i32.const 11212) "\06\00\00\00\01\00\ff\ff") - (data (i32.const 11228) ",\00\00\00\01\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 11276) ",\00\00\00\01") - (data (i32.const 11292) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11324) "L\00\00\00\01\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 11404) "<\00\00\00\01") - (data (i32.const 11420) " \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 11468) "l\00\00\00\01\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 11580) ",\00\00\00\01") - (data (i32.const 11596) "\1c\00\00\00@ \00\00\c0\1f\00\00\c0\1f\00\00\00 \00\00\e0\1f\00\00 ") - (data (i32.const 11628) ",\00\00\00\01\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 11676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\002") - (data (i32.const 11708) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004") - (data (i32.const 11740) ",\00\00\00\01") - (data (i32.const 11756) "\10\00\00\00p)\00\00\b0-\00\00\00\00\00\00\d0-") - (data (i32.const 11788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") - (data (i32.const 11820) "\1c\00\00\00\01") - (data (i32.const 11836) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 11852) "\1c\00\00\00\01") - (data (i32.const 11868) "\08\00\00\00\03\00\00\00\04") - (data (i32.const 11884) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") - (data (i32.const 11932) "\1c\00\00\00\01") - (data (i32.const 11948) "\02\00\00\00\01\02") - (data (i32.const 11964) "\1c\00\00\00\01") - (data (i32.const 11980) "\02\00\00\00\03\04") - (data (i32.const 11996) "\1c\00\00\00\01") - (data (i32.const 12012) "\04\00\00\00\01") - (data (i32.const 12028) "\1c\00\00\00\01") - (data (i32.const 12044) "\04") - (data (i32.const 12060) "\1c\00\00\00\01") - (data (i32.const 12076) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 12092) "\1c\00\00\00\01") - (data (i32.const 12108) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") - (data (i32.const 12124) "\1c\00\00\00\01") - (data (i32.const 12140) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 12156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e") - (data (i32.const 12188) "\1c\00\00\00\01") - (data (i32.const 12204) "\04\00\00\00\90/") - (data (i32.const 12220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o") - (data (i32.const 12252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") - (data (i32.const 12284) "\1c\00\00\00\01") - (data (i32.const 12300) "\0c\00\00\00\d0/\00\00\00\00\00\00\f0/") - (data (i32.const 12316) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r") - (data (i32.const 12348) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e") - (data (i32.const 12380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x") - (data (i32.const 12412) "\1c\00\00\00\01") - (data (i32.const 12428) "\0c\00\00\0000\00\00P0\00\00p0") - (data (i32.const 12444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") - (data (i32.const 12476) "\1c\00\00\00\01") - (data (i32.const 12492) "\04\00\00\00\b00") - (data (i32.const 12508) "<\00\00\00\01") - (data (i32.const 12524) " \00\00\00\90/\00\00\d0/\00\00\00\00\00\00\f0/\00\0000\00\00P0\00\00p0\00\00\b00") - (data (i32.const 12572) "\1c\00\00\00\01") - (data (i32.const 12604) "\1c\00\00\00\01") - (data (i32.const 12636) "<\00\00\00\01\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") - (table $0 57 funcref) - (elem (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|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|16 $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|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~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 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) + (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\04\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\01\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\04\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\02\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\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 2940) ",") + (data (i32.const 2956) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 2988) ",") + (data (i32.const 3004) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3036) ",") + (data (i32.const 3052) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3084) ",") + (data (i32.const 3100) "\14\00\00\00\04\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\01\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\03\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\02\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\03\00\00\00\04\00\00\00\04\00\00\00\05") + (data (i32.const 3324) ",") + (data (i32.const 3340) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3372) ",") + (data (i32.const 3388) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") + (data (i32.const 3420) "\1c") + (data (i32.const 3436) "\04\00\00\00\00\00\c0\7f") + (data (i32.const 3452) "\1c") + (data (i32.const 3468) "\08") + (data (i32.const 3478) "\f8\7f") + (data (i32.const 3484) "\1c") + (data (i32.const 3500) "\04\00\00\00\00\00\c0\7f") + (data (i32.const 3516) "\1c") + (data (i32.const 3532) "\08") + (data (i32.const 3542) "\f8\7f") + (data (i32.const 3548) ",") + (data (i32.const 3564) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3596) ",") + (data (i32.const 3612) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3644) "\1c") + (data (i32.const 3676) ",") + (data (i32.const 3692) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3724) "\1c") + (data (i32.const 3756) ",") + (data (i32.const 3772) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3804) ",") + (data (i32.const 3820) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3852) "\1c") + (data (i32.const 3868) "\0c\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3884) "\1c") + (data (i32.const 3900) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 3916) ",") + (data (i32.const 3932) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 3964) "\1c") + (data (i32.const 3980) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 3996) "\1c") + (data (i32.const 4012) "\0c\00\00\00\01\00\00\00\02\00\00\00\05") + (data (i32.const 4028) ",") + (data (i32.const 4044) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4076) "\1c") + (data (i32.const 4092) "\04\00\00\00\01") + (data (i32.const 4108) ",") + (data (i32.const 4124) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (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) "\1c") + (data (i32.const 4220) "\04\00\00\00\05") + (data (i32.const 4236) ",") + (data (i32.const 4252) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04") + (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 4332) "\1c") + (data (i32.const 4348) "\08\00\00\00\04\00\00\00\05") + (data (i32.const 4364) "\1c") + (data (i32.const 4380) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 4396) ",") + (data (i32.const 4412) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4444) "\1c") + (data (i32.const 4460) "\04\00\00\00\04") + (data (i32.const 4476) ",") + (data (i32.const 4492) "\10\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\05") + (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) "\04\00\00\00\01") + (data (i32.const 4604) ",") + (data (i32.const 4620) "\10\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4652) ",") + (data (i32.const 4668) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4700) "\1c") + (data (i32.const 4732) ",") + (data (i32.const 4748) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4780) ",") + (data (i32.const 4796) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4828) "\1c") + (data (i32.const 4860) ",") + (data (i32.const 4876) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4908) ",") + (data (i32.const 4924) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 4956) "\1c") + (data (i32.const 4988) ",") + (data (i32.const 5004) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5036) ",") + (data (i32.const 5052) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5084) "\1c") + (data (i32.const 5116) ",") + (data (i32.const 5132) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5164) ",") + (data (i32.const 5180) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5212) "\1c") + (data (i32.const 5244) ",") + (data (i32.const 5260) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") + (data (i32.const 5292) "\1c") + (data (i32.const 5324) "|") + (data (i32.const 5336) "\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 5452) "<") + (data (i32.const 5464) "\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 5516) "\1c") + (data (i32.const 5528) "\0c\00\00\00\08\00\00\00\01") + (data (i32.const 5548) "\1c") + (data (i32.const 5560) "\0c\00\00\00\08\00\00\00\02") + (data (i32.const 5580) "\1c") + (data (i32.const 5592) "\0c\00\00\00\08\00\00\00\03") + (data (i32.const 5612) "\1c") + (data (i32.const 5624) "\0c\00\00\00\08\00\00\00\04") + (data (i32.const 5644) "\1c") + (data (i32.const 5656) "\0c\00\00\00\08\00\00\00\05") + (data (i32.const 5676) "\1c") + (data (i32.const 5688) "\0c\00\00\00\08\00\00\00\06") + (data (i32.const 5708) "\1c") + (data (i32.const 5720) "\0c\00\00\00\08\00\00\00\07") + (data (i32.const 5740) "\1c") + (data (i32.const 5752) "\0c\00\00\00\08\00\00\00\08") + (data (i32.const 5772) "\1c") + (data (i32.const 5784) "\0c\00\00\00\08\00\00\00\t") + (data (i32.const 5804) "\1c") + (data (i32.const 5816) "\0c\00\00\00\08\00\00\00\n") + (data (i32.const 5836) "\1c") + (data (i32.const 5848) "\0c\00\00\00\08\00\00\00\0b") + (data (i32.const 5868) "\1c") + (data (i32.const 5880) "\0c\00\00\00\08\00\00\00\0c") + (data (i32.const 5900) "\1c") + (data (i32.const 5912) "\0c\00\00\00\08\00\00\00\0d") + (data (i32.const 5932) "\1c") + (data (i32.const 5944) "\0c\00\00\00\08\00\00\00\0e") + (data (i32.const 5964) "\1c") + (data (i32.const 5976) "\0c\00\00\00\08\00\00\00\0f") + (data (i32.const 5996) "\1c") + (data (i32.const 6008) "\0c\00\00\00\08\00\00\00\10") + (data (i32.const 6028) "\1c") + (data (i32.const 6040) "\0d\00\00\00\08\00\00\00\11") + (data (i32.const 6060) "\1c") + (data (i32.const 6072) "\0d\00\00\00\08\00\00\00\12") + (data (i32.const 6092) "\1c") + (data (i32.const 6104) "\0d\00\00\00\08\00\00\00\13") + (data (i32.const 6124) "\1c") + (data (i32.const 6136) "\0d\00\00\00\08\00\00\00\14") + (data (i32.const 6156) "\1c") + (data (i32.const 6168) "\0d\00\00\00\08\00\00\00\15") + (data (i32.const 6188) "\1c") + (data (i32.const 6200) "\0e\00\00\00\08\00\00\00\16") + (data (i32.const 6220) "\1c") + (data (i32.const 6232) "\0f\00\00\00\08\00\00\00\17") + (data (i32.const 6252) "\1c") + (data (i32.const 6264) "\0f\00\00\00\08\00\00\00\18") + (data (i32.const 6284) "\1c") + (data (i32.const 6296) "\0f\00\00\00\08\00\00\00\19") + (data (i32.const 6316) "\1c") + (data (i32.const 6328) "\0c\00\00\00\08\00\00\00\1a") + (data (i32.const 6348) "\1c") + (data (i32.const 6360) "\0c\00\00\00\08\00\00\00\1b") + (data (i32.const 6380) "\1c") + (data (i32.const 6392) "\0c\00\00\00\08\00\00\00\1c") + (data (i32.const 6412) "\1c") + (data (i32.const 6424) "\0c\00\00\00\08\00\00\00\1d") + (data (i32.const 6444) "\1c") + (data (i32.const 6456) "\10\00\00\00\08\00\00\00\1e") + (data (i32.const 6476) "\1c") + (data (i32.const 6488) "\10\00\00\00\08\00\00\00\1f") + (data (i32.const 6508) "\1c") + (data (i32.const 6520) "\11\00\00\00\08\00\00\00 ") + (data (i32.const 6540) "\1c") + (data (i32.const 6552) "\11\00\00\00\08\00\00\00!") + (data (i32.const 6572) "\1c") + (data (i32.const 6584) "\10\00\00\00\08\00\00\00\"") + (data (i32.const 6604) "\1c") + (data (i32.const 6616) "\10\00\00\00\08\00\00\00#") + (data (i32.const 6636) "\1c") + (data (i32.const 6648) "\10\00\00\00\08\00\00\00$") + (data (i32.const 6668) "\1c") + (data (i32.const 6680) "\10\00\00\00\08\00\00\00%") + (data (i32.const 6700) "\1c") + (data (i32.const 6712) "\10\00\00\00\08\00\00\00&") + (data (i32.const 6732) "\1c") + (data (i32.const 6744) "\11\00\00\00\08\00\00\00\'") + (data (i32.const 6764) "\1c") + (data (i32.const 6776) "\11\00\00\00\08\00\00\00(") + (data (i32.const 6796) "\1c") + (data (i32.const 6808) "\10\00\00\00\08\00\00\00)") + (data (i32.const 6828) "\1c") + (data (i32.const 6840) "\10\00\00\00\08\00\00\00*") + (data (i32.const 6860) "\1c") + (data (i32.const 6872) "\10\00\00\00\08\00\00\00+") + (data (i32.const 6892) ",") + (data (i32.const 6904) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 6940) "\bc") + (data (i32.const 6952) "\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 7132) "<") + (data (i32.const 7148) " \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 7196) "\1c") + (data (i32.const 7208) "\12\00\00\00\08\00\00\00,") + (data (i32.const 7228) "<") + (data (i32.const 7244) " \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 7292) "\\") + (data (i32.const 7308) "@") + (data (i32.const 7318) "\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 7358) "\f0\bf\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\7f") + (data (i32.const 7388) "\1c") + (data (i32.const 7400) "\13\00\00\00\08\00\00\00-") + (data (i32.const 7420) "\\") + (data (i32.const 7436) "@") + (data (i32.const 7446) "\f0\ff\00\00\00\00\00\00\00\c0\00\00\00\00\00\00\f0\bf") + (data (i32.const 7478) "\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 7516) ",") + (data (i32.const 7532) "\14\00\00\00\01\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\02") + (data (i32.const 7564) "\1c") + (data (i32.const 7576) "\14\00\00\00\08\00\00\00.") + (data (i32.const 7596) ",") + (data (i32.const 7612) "\14\00\00\00\fe\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\01\00\00\00\02") + (data (i32.const 7644) ",") + (data (i32.const 7660) "\14\00\00\00\01\00\00\00\ff\ff\ff\ff\fe\ff\ff\ff\00\00\00\00\02") + (data (i32.const 7692) "\1c") + (data (i32.const 7704) "\15\00\00\00\08\00\00\00/") + (data (i32.const 7724) ",") + (data (i32.const 7740) "\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 7772) "\1c") + (data (i32.const 7804) "\1c") + (data (i32.const 7820) "\04\00\00\00\01") + (data (i32.const 7836) "\1c") + (data (i32.const 7852) "\08\00\00\00\02\00\00\00\01") + (data (i32.const 7868) ",") + (data (i32.const 7884) "\10\00\00\00\03\00\00\00\02\00\00\00\01") + (data (i32.const 7916) ",") + (data (i32.const 7932) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 7964) "\1c") + (data (i32.const 7976) "\14\00\00\00\08\00\00\000") + (data (i32.const 7996) "\1c") + (data (i32.const 8012) "\04\00\00\00\01") + (data (i32.const 8028) "\1c") + (data (i32.const 8044) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 8060) "\1c") + (data (i32.const 8072) "\14\00\00\00\08\00\00\001") + (data (i32.const 8092) "\1c") + (data (i32.const 8104) "\14\00\00\00\08\00\00\002") + (data (i32.const 8124) "\1c") + (data (i32.const 8136) "\14\00\00\00\08\00\00\003") + (data (i32.const 8156) "\1c") + (data (i32.const 8168) "\14\00\00\00\08\00\00\004") + (data (i32.const 8188) "\1c") + (data (i32.const 8200) "\17\00\00\00\08\00\00\005") + (data (i32.const 8220) "\1c") + (data (i32.const 8232) "\1a\00\00\00\08\00\00\006") + (data (i32.const 8252) "\1c") + (data (i32.const 8264) "\01\00\00\00\02\00\00\00a") + (data (i32.const 8284) "\1c") + (data (i32.const 8296) "\01\00\00\00\02\00\00\00b") + (data (i32.const 8316) "\1c") + (data (i32.const 8328) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 8348) "\1c") + (data (i32.const 8360) "\01\00\00\00\04\00\00\00b\00a") + (data (i32.const 8380) "\1c") + (data (i32.const 8392) "\01") + (data (i32.const 8412) ",") + (data (i32.const 8428) "\1c\00\00\00P \00\00p \00\00P \00\00\90 \00\00\b0 \00\00\d0 ") + (data (i32.const 8460) ",") + (data (i32.const 8476) "\1c\00\00\00\d0 \00\00P \00\00P \00\00\90 \00\00p \00\00\b0 ") + (data (i32.const 8508) "\1c") + (data (i32.const 8520) "\1c\00\00\00\08\00\00\007") + (data (i32.const 8540) "\1c") + (data (i32.const 8552) "\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 8572) "\1c") + (data (i32.const 8584) "\1e\00\00\00\08\00\00\008") + (data (i32.const 8604) "\1c") + (data (i32.const 8620) "\02\00\00\00\01") + (data (i32.const 8636) "\1c") + (data (i32.const 8648) "\01\00\00\00\08\00\00\00t\00r\00u\00e") + (data (i32.const 8668) "\1c") + (data (i32.const 8680) "\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") + (data (i32.const 8700) "\1c") + (data (i32.const 8712) "\01\00\00\00\02\00\00\00,") + (data (i32.const 8732) ",") + (data (i32.const 8744) "\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e") + (data (i32.const 8780) "\1c") + (data (i32.const 8796) "\0c\00\00\00\01\00\00\00\fe\ff\ff\ff\fd\ff\ff\ff") + (data (i32.const 8812) "|") + (data (i32.const 8824) "\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 8940) "<") + (data (i32.const 8952) "\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 9004) "\1c") + (data (i32.const 9016) "\01\00\00\00\02\00\00\000") + (data (i32.const 9036) "\\") + (data (i32.const 9048) "\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 9132) "\1c") + (data (i32.const 9144) "\01\00\00\00\n\00\00\001\00-\002\00-\003") + (data (i32.const 9164) "\1c") + (data (i32.const 9180) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 9196) "\1c") + (data (i32.const 9208) "\01\00\00\00\02\00\00\00-") + (data (i32.const 9228) "\1c") + (data (i32.const 9244) "\08\00\00\00\00\00\00\80\00\00\00\80") + (data (i32.const 9260) "\1c") + (data (i32.const 9272) "\01\00\00\00\04\00\00\00_\00_") + (data (i32.const 9292) "L") + (data (i32.const 9304) "\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 9372) "L") + (data (i32.const 9388) "0") + (data (i32.const 9406) "\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 9452) "\1c") + (data (i32.const 9464) "\01\00\00\00\04\00\00\00,\00 ") + (data (i32.const 9484) "\1c") + (data (i32.const 9496) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 9516) "\1c") + (data (i32.const 9528) "\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 9548) ",") + (data (i32.const 9560) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9596) ",") + (data (i32.const 9608) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 9704) "\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 11052) "\1c") + (data (i32.const 11084) "\1c") + (data (i32.const 11100) "\04\00\00\00\01") + (data (i32.const 11116) "\1c") + (data (i32.const 11132) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 11148) ",") + (data (i32.const 11164) "\10\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 11196) "\1c") + (data (i32.const 11208) "\01\00\00\00\06\00\00\001\00,\002") + (data (i32.const 11228) ",") + (data (i32.const 11240) "\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003") + (data (i32.const 11276) "\1c") + (data (i32.const 11292) "\03\00\00\00\01\ff") + (data (i32.const 11308) "\1c") + (data (i32.const 11320) "\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000") + (data (i32.const 11340) "\1c") + (data (i32.const 11356) "\06\00\00\00\01\00\ff\ff") + (data (i32.const 11372) ",") + (data (i32.const 11384) "\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000") + (data (i32.const 11420) ",") + (data (i32.const 11436) "\18\00\00\00\01\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11468) "L") + (data (i32.const 11480) "\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 11548) "<") + (data (i32.const 11564) " \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 11612) "l") + (data (i32.const 11624) "\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 11724) ",") + (data (i32.const 11740) "\1c\00\00\00\d0 \00\00P \00\00P \00\00\90 \00\00p \00\00\b0 ") + (data (i32.const 11772) ",") + (data (i32.const 11784) "\01\00\00\00\1a\00\00\00,\00a\00,\00a\00,\00a\00b\00,\00b\00,\00b\00a\00,") + (data (i32.const 11820) "\1c") + (data (i32.const 11832) "\01\00\00\00\02\00\00\002") + (data (i32.const 11852) "\1c") + (data (i32.const 11864) "\01\00\00\00\02\00\00\004") + (data (i32.const 11884) ",") + (data (i32.const 11900) "\10\00\00\00\00*\00\00@.\00\00\00\00\00\00`.") + (data (i32.const 11932) "\1c") + (data (i32.const 11944) "\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004") + (data (i32.const 11964) "\1c") + (data (i32.const 11980) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 11996) "\1c") + (data (i32.const 12012) "\08\00\00\00\03\00\00\00\04") + (data (i32.const 12028) ",") + (data (i32.const 12040) "\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004") + (data (i32.const 12076) "\1c") + (data (i32.const 12092) "\02\00\00\00\01\02") + (data (i32.const 12108) "\1c") + (data (i32.const 12124) "\02\00\00\00\03\04") + (data (i32.const 12140) "\1c") + (data (i32.const 12156) "\04\00\00\00\01") + (data (i32.const 12172) "\1c") + (data (i32.const 12188) "\04") + (data (i32.const 12204) "\1c") + (data (i32.const 12220) "\0c\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 12236) "\1c") + (data (i32.const 12252) "\0c\00\00\00\04\00\00\00\05\00\00\00\06") + (data (i32.const 12268) "\1c") + (data (i32.const 12284) "\0c\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 12300) "\1c") + (data (i32.const 12312) "\01\00\00\00\06\00\00\00o\00n\00e") + (data (i32.const 12332) "\1c") + (data (i32.const 12348) "\04\00\00\00 0") + (data (i32.const 12364) "\1c") + (data (i32.const 12376) "\01\00\00\00\06\00\00\00t\00w\00o") + (data (i32.const 12396) "\1c") + (data (i32.const 12408) "\01\00\00\00\n\00\00\00t\00h\00r\00e\00e") + (data (i32.const 12428) "\1c") + (data (i32.const 12444) "\0c\00\00\00`0\00\00\00\00\00\00\800") + (data (i32.const 12460) "\1c") + (data (i32.const 12472) "\01\00\00\00\08\00\00\00f\00o\00u\00r") + (data (i32.const 12492) "\1c") + (data (i32.const 12504) "\01\00\00\00\08\00\00\00f\00i\00v\00e") + (data (i32.const 12524) "\1c") + (data (i32.const 12536) "\01\00\00\00\06\00\00\00s\00i\00x") + (data (i32.const 12556) "\1c") + (data (i32.const 12572) "\0c\00\00\00\c00\00\00\e00\00\00\001") + (data (i32.const 12588) "\1c") + (data (i32.const 12600) "\01\00\00\00\n\00\00\00s\00e\00v\00e\00n") + (data (i32.const 12620) "\1c") + (data (i32.const 12636) "\04\00\00\00@1") + (data (i32.const 12652) "<") + (data (i32.const 12668) " \00\00\00 0\00\00`0\00\00\00\00\00\00\800\00\00\c00\00\00\e00\00\00\001\00\00@1") + (data (i32.const 12716) "\1c") + (data (i32.const 12748) "\1c") + (data (i32.const 12780) "<") + (data (i32.const 12792) "\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 12844) "\1c") + (data (i32.const 12856) "+\00\00\00\08\00\00\009") + (data (i32.const 12876) "\1c") + (data (i32.const 12888) "\1e\00\00\00\08\00\00\00:") + (data (i32.const 12912) ",\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 12940) "\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\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00\02a") + (data (i32.const 13092) "\02A") + (data (i32.const 13108) " \00\00\00\00\00\00\00\02A") + (data (i32.const 13132) "\02a") + (data (i32.const 13148) "\02A") + (data (i32.const 13164) "B\00\00\00\00\00\00\00B\08\00\00\00\00\00\00\82\00\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\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d") + (table $0 59 funcref) + (elem (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|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|16 $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|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $start:std/array~anonymous|29 $start:std/array~anonymous|29 $start:std/array~anonymous|31 $start:std/array~anonymous|32 $start:std/array~anonymous|33 $start:std/array~anonymous|29 $start:std/array~anonymous|35 $~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 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $~lib/util/sort/COMPARATOR~anonymous|0 $start:std/array~anonymous|44 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) @@ -426,96 +566,313 @@ (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 29652)) + (global $~started (mut i32) (i32.const 0)) (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU32#constructor" (func $std/array/ArrayU32#constructor@varargs)) - (export "ArrayU32#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU32#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $~lib/array/Array#push)) - (export "ArrayU32#concat" (func $~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $~lib/array/Array#shift)) - (export "ArrayU32#some" (func $~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $~lib/array/Array#toString)) (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayU8#constructor" (func $std/array/ArrayU8#constructor@varargs)) - (export "ArrayU8#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU8#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $~lib/array/Array#push)) - (export "ArrayU8#concat" (func $~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $~lib/array/Array#shift)) - (export "ArrayU8#some" (func $~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $~lib/array/Array#toString)) (export "ArrayStr" (global $std/array/ArrayStr)) - (export "ArrayStr#constructor" (func $std/array/ArrayStr#constructor@varargs)) - (export "ArrayStr#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayStr#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayStr#every" (func $~lib/array/Array#every)) - (export "ArrayStr#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayStr#fill" (func $~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs)) - (export "ArrayStr#pop" (func $~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayStr#filter" (func $~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $~lib/array/Array#some)) - (export "ArrayStr#unshift" (func $~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $~lib/array/Array#flat)) - (export "ArrayStr#toString" (func $~lib/array/Array<~lib/string/String|null>#toString)) + (export "memory" (memory $0)) (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (export "_start" (func $~start)) + (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#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#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#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#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#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/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 12700 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $std/array/arr + local.tee $0 if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + call $~lib/rt/itcms/__visit + end + i32.const 6960 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 12800 + call $~lib/rt/itcms/__visit + i32.const 2176 + call $~lib/rt/itcms/__visit + i32.const 5344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + i32.const 9056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 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 29652 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 12912 + i32.load + i32.gt_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 12916 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -531,8 +888,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 272 + i32.const 1488 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,8 +908,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 274 + i32.const 1488 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -594,8 +951,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 287 + i32.const 1488 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -686,8 +1043,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 200 + i32.const 1488 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -700,8 +1057,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 202 + i32.const 1488 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -773,8 +1130,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 223 + i32.const 1488 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -828,23 +1185,23 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 238 + i32.const 1488 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1488 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -891,8 +1248,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 255 + i32.const 1488 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -961,8 +1318,8 @@ i32.gt_u if i32.const 0 - i32.const 1280 - i32.const 380 + i32.const 1488 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -989,8 +1346,8 @@ i32.lt_u if i32.const 0 - i32.const 1280 - i32.const 387 + i32.const 1488 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1017,8 +1374,8 @@ i32.lt_u if i32.const 0 - i32.const 1280 - i32.const 400 + i32.const 1488 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1085,10 +1442,10 @@ if unreachable end - i32.const 12704 + i32.const 29664 i32.const 0 i32.store - i32.const 14272 + i32.const 31232 i32.const 0 i32.store loop $for-loop|0 @@ -1099,7 +1456,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 12704 + i32.const 29664 i32.add i32.const 0 i32.store offset=4 @@ -1117,7 +1474,7 @@ i32.add i32.const 2 i32.shl - i32.const 12704 + i32.const 29664 i32.add i32.const 0 i32.store offset=96 @@ -1135,73 +1492,299 @@ br $for-loop|0 end end - i32.const 12704 - i32.const 14276 + i32.const 29664 + i32.const 31236 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 12704 + i32.const 29664 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 1073741820 - i32.ge_u + i32.const 29652 + i32.lt_u if - i32.const 1152 - i32.const 1280 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable + return end - i32.const 12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 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 + if (result i32) local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + i32.load 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.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 565 + 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) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 29652 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 29652 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -1224,8 +1807,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 333 + i32.const 1488 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1276,8 +1859,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 346 + i32.const 1488 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1298,89 +1881,34 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1280 - i32.const 360 - i32.const 14 + i32.const 1152 + i32.const 1488 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 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 + i32.const 12 + i32.le_u + select local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1453,8 +1981,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 498 + i32.const 1488 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1468,8 +1996,8 @@ i32.gt_u if i32.const 0 - i32.const 1280 - i32.const 500 + i32.const 1488 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1477,59 +2005,91 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 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 + i32.const 15 + i32.and if - i32.const 1152 - i32.const 1216 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 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 $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 $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 $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 local.get $1 - i32.store offset=12 - local.get $2 + ) + (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 - i32.store offset=16 - local.get $3 - i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) @@ -1705,146 +2265,172 @@ end end ) - (func $~lib/rt/pure/__retain (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.get $0 - i32.const 12700 - i32.gt_u + i32.const 1073741804 + i32.ge_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 + i32.const 1152 + i32.const 1216 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (result 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 $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 - i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill + i32.store offset=16 local.get $2 - local.set $1 + 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 - local.get $5 i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 - local.get $5 - local.get $0 - i32.store offset=12 - local.get $5 - ) - (func $~lib/array/Array.isArray<~lib/array/Array|null> (param $0 i32) (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - i32.ne - ) - (func $std/array/Ref#constructor (param $0 i32) (result i32) - (local $1 i32) - i32.const 4 + i32.const -4 + i32.and i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add local.tee $1 + i32.const 0 local.get $0 - i32.store + call $~lib/memory/memory.fill local.get $1 ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1216 + i32.const 290 + 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 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + 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/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) @@ -2018,44 +2604,6 @@ end 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) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - i32.shl - local.tee $1 - local.set $5 - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - local.get $3 - if - local.get $4 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy - end - local.get $4 - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - 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 - local.get $2 - ) (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) @@ -2121,87 +2669,6 @@ call $~lib/memory/memory.fill end local.get $0 - call $~lib/rt/pure/__retain - ) - (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.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - 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 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - 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) @@ -2276,21 +2743,8 @@ end end local.get $0 - call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 @@ -2299,320 +2753,87 @@ i32.add i32.load ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner1 - block $folding-inner0 + local.get $0 + i32.load offset=8 + local.tee $5 + local.get $2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + local.tee $6 + local.set $3 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 local.get $2 - i32.eqz + i32.shl + local.tee $7 + local.tee $4 + local.get $6 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u if - local.get $0 - i32.load offset=12 - local.tee $2 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $0 - local.get $1 - i32.eq - br_if $folding-inner1 - end - loop $for-loop|0 local.get $2 + local.get $4 + i32.store offset=16 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 - br_if $folding-inner0 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - br $folding-inner1 - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_s - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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/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 12700 - 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 12700 - 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 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew end + local.get $4 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 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) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $3 - local.get $2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $4 + i32.gt_u + select + call $~lib/memory/memory.copy end - local.get $0 - i32.load - local.tee $4 local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/pure/__renew - local.tee $1 - local.get $3 + local.get $5 i32.add i32.const 0 - local.get $2 - local.get $3 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $4 + local.get $6 i32.ne if local.get $0 @@ -2621,9 +2842,13 @@ local.get $0 local.get $1 i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link end local.get $0 - local.get $2 + local.get $7 i32.store offset=8 end ) @@ -2661,9 +2886,9 @@ i32.const 1 i32.lt_s if - i32.const 2032 + i32.const 2176 i32.const 1104 - i32.const 300 + i32.const 256 i32.const 21 call $~lib/builtins/abort unreachable @@ -2682,109 +2907,28 @@ local.get $1 i32.store offset=12 ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=12 - local.tee $2 - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.tee $4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $2 - loop $do-continue|0 - local.get $3 - i32.load - call $~lib/rt/pure/__release - local.get $3 - i32.const 4 - i32.add - local.tee $3 - local.get $2 - i32.lt_u - br_if $do-continue|0 - end - else - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - end - local.get $0 - local.get $1 - i32.store offset=12 - ) - (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.load offset=12 - i32.const 0 + i32.load offset=4 local.get $1 - select - local.tee $4 + i32.const 2 + i32.shl i32.add - local.tee $2 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $5 + i32.store 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 $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 $5 - i32.add local.get $1 - i32.load offset=4 - local.get $4 i32.const 2 - i32.shl - call $~lib/memory/memory.copy + call $~lib/array/ensureSize + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $2 + i32.store offset=12 ) (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -2888,7 +3032,6 @@ i32.shl call $~lib/memory/memory.copy local.get $0 - call $~lib/rt/pure/__retain ) (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -2921,99 +3064,6 @@ i32.store offset=12 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.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 2032 - i32.const 1104 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.tee $2 - i32.load - local.get $2 - local.get $2 - i32.const 4 - i32.add - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl - local.tee $4 - call $~lib/memory/memory.copy - local.get $2 - local.get $4 - i32.add - i32.const 0 - i32.store - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.load offset=12 - local.tee $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.const 2 - i32.shl - i32.add - local.set $1 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.gt_u - if - local.get $2 - i32.load - local.set $3 - local.get $2 - local.get $1 - i32.load - i32.store - local.get $1 - local.get $3 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) local.get $2 @@ -3072,1392 +3122,1168 @@ end i32.const -1 ) - (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.get $2 + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.eqz + ) + (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.eq + ) + (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) 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 $1 - i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 3 + i32.ge_s + ) + (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 + i32.le_s + ) + (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 + i32.const 3 + i32.ge_s ) - (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) - i32.const 2 + (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) 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 $1 - i32.sub - local.tee $2 - local.get $2 - i32.const 2 - i32.gt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 + i32.const -1 + i32.le_s + ) + (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 10 i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 + ) + (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 + global.get $std/array/i i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $4 + global.set $std/array/i ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain + f32.convert_i32_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + global.get $std/array/i + i32.add + global.set $std/array/i local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.tee $0 - i32.eqz - if - i32.const 5200 - i32.const 1104 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end + ) + (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 2 + i32.ge_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + global.get $std/array/i + i32.add + global.set $std/array/i local.get $0 - local.get $1 - call $~lib/array/Array#__uget + i32.const 2 + i32.ge_s ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 1552 - i32.const 1104 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end + (func $start:std/array~anonymous|29 (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 ) - (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 + local.get $1 + i32.const 2 + i32.gt_s local.get $0 - i32.eqz + select ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + i32.const 1 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.const 100 + i32.gt_s local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 + select ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/math/murmurHash3 (param $0 i64) (result i64) 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 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release + i64.const 33 + i64.shr_u + i64.xor + i64.const -49064778989728563 + i64.mul + local.tee $0 local.get $0 - i32.const 100 - i32.eq + i64.const 33 + i64.shr_u + i64.xor + i64.const -4265267296055464877 + i64.mul + local.tee $0 + local.get $0 + i64.const 33 + i64.shr_u + i64.xor ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release + (func $~lib/math/splitMix32 (param $0 i32) (result i32) local.get $0 - i32.const 100 - i32.eq + i32.const 1831565813 + i32.add + local.tee $0 + local.get $0 + i32.const 15 + i32.shr_u + i32.xor + local.get $0 + i32.const 1 + i32.or + i32.mul + local.tee $0 + local.get $0 + local.get $0 + i32.const 61 + i32.or + local.get $0 + local.get $0 + i32.const 7 + i32.shr_u + i32.xor + i32.mul + i32.add + i32.xor + local.tee $0 + local.get $0 + i32.const 14 + i32.shr_u + i32.xor ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + i32.const 1 + global.set $~lib/math/random_seeded + 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 + global.get $~lib/math/random_state1_32 i32.const 0 - i32.ge_s + i32.ne + i32.const 0 + global.get $~lib/math/random_state0_32 + i32.const 0 + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + i32.const 0 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + select + select + select + i32.eqz + if + i32.const 0 + i32.const 6912 + i32.const 1399 + i32.const 5 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + (local $8 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/tlsf/__alloc + local.tee $6 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub local.set $4 loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 local.get $4 + i32.const 0 i32.gt_s - select - i32.lt_s if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $6 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 - i32.load offset=4 - local.get $2 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $3 i32.const 2 i32.shl i32.add - i32.load - i32.const 3 + f32.load + local.set $5 + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + i32.const 2 global.set $~argumentsLength + local.get $5 + local.get $7 local.get $2 - local.get $0 - local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (func $start:std/array~anonymous|7 (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|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 10 - i32.lt_s - ) - (func $start:std/array~anonymous|9 (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|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 3 - i32.lt_s - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 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.get $6 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $7 + f32.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end + end local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 + i32.const 1 + i32.sub local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 + loop $for-loop|2 local.get $4 - i32.gt_s - select - i32.lt_s + i32.const 2 + i32.ge_s if local.get $0 - i32.load offset=4 - local.get $2 + f32.load + local.set $5 + local.get $0 + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 + local.tee $1 + f32.load + f32.store local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if + local.get $5 + f32.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load local.get $1 - call $~lib/rt/pure/__release + i32.shr_u i32.const 1 - return + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $2 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + f32.load + local.set $5 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $0 + local.get $7 + f32.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $4 + br $for-loop|2 end end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $start:std/array~anonymous|12 (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|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $1 - call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/tlsf/__free local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + f32.load offset=4 + local.set $5 local.get $0 - i32.const 10 - i32.gt_s - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/rt/pure/__release local.get $0 - i32.const 3 - i32.gt_s - ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain + f32.load + f32.store offset=4 local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release + local.get $5 + f32.store ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (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 $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) + i32.reinterpret_f32 + local.tee $2 local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $2 local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) + i32.reinterpret_f32 + local.tee $3 + local.get $3 + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor + local.tee $3 + i32.gt_s local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release + local.get $3 + i32.lt_s + i32.sub ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 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 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/tlsf/__alloc + local.tee $6 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 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 + i32.and + local.get $6 local.get $3 - i32.const 100 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl i32.add - call $~lib/array/Array#push - drop + i32.load 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.shr_s + i32.shr_u i32.const 1 - i32.add - local.set $3 - br $for-loop|2 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end end - end - i32.const 0 - local.set $3 - loop $for-loop|3 + local.get $0 local.get $3 - i32.const 100 + i32.const 1 + i32.shr_s + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 i32.lt_s if - local.get $2 - local.get $3 - i32.const 200 + local.get $6 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl i32.add - call $~lib/array/Array#push - drop - local.get $3 + local.tee $8 + local.get $8 + i32.load i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 3 + i32.shl i32.add - local.set $3 - br $for-loop|3 + local.get $5 + f64.store + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end end local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - i32.const 202 - i32.ne + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if - i32.const 0 - i32.const 1344 - i32.const 625 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + f64.load + local.set $5 + local.get $0 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load + f64.store + local.get $1 + local.get $5 + f64.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $5 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + local.get $0 + local.get $7 + f64.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $6 + call $~lib/rt/tlsf/__free local.get $0 - f32.convert_i32_s - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - local.get $1 + f64.load offset=8 + local.set $5 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - 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 + f64.load + f64.store offset=8 + local.get $0 + local.get $5 + f64.store ) - (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i + i64.reinterpret_f64 + local.tee $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $2 local.get $1 - call $~lib/rt/pure/__release - local.get $0 + i64.reinterpret_f64 + local.tee $3 + local.get $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.tee $4 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + i32.shl + local.tee $3 + call $~lib/rt/tlsf/__alloc local.tee $5 - i32.load offset=4 - local.set $6 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 local.get $4 + i32.const 0 i32.gt_s - select - i32.lt_s if - local.get $2 + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 i32.const 2 i32.shl - local.tee $3 + i32.add + i32.load + local.set $3 local.get $0 - i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl i32.add i32.load - local.set $7 - i32.const 3 + local.set $6 + i32.const 2 global.set $~argumentsLength local.get $3 local.get $6 - i32.add - local.get $7 local.get $2 - local.get $0 - local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + end + local.get $4 i32.const 1 - i32.add - local.set $2 + i32.sub + local.set $4 br $for-loop|0 end end local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release - local.get $0 - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.ge_s - ) - (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + i32.const 1 + i32.sub local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select - i32.lt_s + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s if local.get $0 - i32.load offset=4 - local.get $2 + i32.load + local.set $1 + local.get $0 + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add + local.tee $3 i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength + i32.store local.get $3 - local.get $2 - local.get $0 local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if + i32.store + i32.const 1 + local.set $1 + loop $while-continue|3 local.get $4 - local.get $3 - call $~lib/array/Array#push - drop + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end end - local.get $2 + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load + local.set $3 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $6 + i32.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.sub + local.set $4 + br $for-loop|2 end end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 100 - call $~lib/array/Array#push - drop + local.get $5 + call $~lib/rt/tlsf/__free local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release + i32.load offset=4 + local.set $1 local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - call $~lib/rt/pure/__release + i32.load + i32.store offset=4 local.get $0 - i32.const 2 - i32.ge_s + local.get $1 + i32.store ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/array/Array#pop - drop - local.get $0 - global.get $std/array/i - i32.add - global.set $std/array/i - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - i32.const 2 - i32.ge_s - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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.add + i32.sub ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $5 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/tlsf/__alloc + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 loop $for-loop|0 - local.get $3 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $4 local.get $4 - local.get $5 + i32.const 0 i32.gt_s - select - i32.lt_s if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end local.get $0 - i32.load offset=4 local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 i32.const 2 i32.shl i32.add i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $3 + local.set $3 local.get $0 - local.get $1 + local.get $4 + i32.const 2 + i32.shl + i32.add i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $2 + local.set $6 + i32.const 2 + global.set $~argumentsLength local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.get $3 + i32.store + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + end + local.get $4 i32.const 1 - i32.add - local.set $3 + i32.sub + local.set $4 br $for-loop|0 end end local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 2 - i32.gt_s - local.get $0 - select - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - i32.const 1 - local.get $1 - i32.const 100 - i32.gt_s - local.get $0 - select - ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1 - call $~lib/array/Array#push - drop - local.get $2 - call $~lib/rt/pure/__release - 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 $3 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/array/Array#pop - drop - local.get $2 - call $~lib/rt/pure/__release - 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.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - i32.load offset=12 i32.const 1 i32.sub - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 i32.ge_s if local.get $0 - i32.load offset=4 - local.get $1 + i32.load + local.set $1 + local.get $0 + local.get $0 + local.get $4 i32.const 2 i32.shl i32.add + local.tee $3 i32.load - local.set $4 - i32.const 4 - global.set $~argumentsLength - local.get $2 - local.get $4 - local.get $1 - local.get $0 + i32.store local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $2 local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) - local.get $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -49064778989728563 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - i64.const -4265267296055464877 - i64.mul - local.tee $0 - local.get $0 - i64.const 33 - i64.shr_u - i64.xor - ) - (func $~lib/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.tee $0 - local.get $0 - i32.const 15 - i32.shr_u - i32.xor - local.get $0 - i32.const 1 - i32.or - i32.mul - local.tee $0 - local.get $0 - local.get $0 - i32.const 61 - i32.or - local.get $0 - local.get $0 - i32.const 7 - i32.shr_u - i32.xor - i32.mul - i32.add - i32.xor - local.tee $0 - local.get $0 - i32.const 14 - i32.shr_u - i32.xor - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - 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 - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - i32.const 0 - global.get $~lib/math/random_state0_32 - i32.const 0 - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - i32.const 0 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - select - select - select - i32.eqz - if - i32.const 0 - i32.const 6768 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/tlsf/__free (param $0 i32) - local.get $0 - i32.const 12700 - 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/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 f32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $5 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f32.load - local.set $4 - local.get $0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load - f32.store - local.get $1 - local.get $4 - f32.store + i32.store i32.const 1 local.set $1 loop $while-continue|3 - local.get $3 + local.get $4 local.get $5 local.get $1 i32.const 5 @@ -4474,10 +4300,10 @@ i32.const 1 i32.shl i32.add - local.tee $2 + local.tee $3 i32.gt_s if - local.get $2 + local.get $3 local.set $1 br $while-continue|3 end @@ -4488,22 +4314,22 @@ i32.gt_s if local.get $0 - f32.load - local.set $4 + i32.load + local.set $3 local.get $0 local.get $1 i32.const 2 i32.shl i32.add - f32.load + i32.load local.set $6 i32.const 2 global.set $~argumentsLength - local.get $4 + local.get $3 local.get $6 - local.get $7 + local.get $2 i32.load - call_indirect (type $f32_f32_=>_i32) + call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if @@ -4514,8 +4340,8 @@ i32.const 2 i32.shl i32.add - local.tee $2 - local.get $2 + local.tee $7 + local.get $7 i32.load i32.const 1 local.get $1 @@ -4527,11 +4353,11 @@ i32.const 2 i32.shl i32.add - local.get $4 - f32.store + local.get $3 + i32.store local.get $0 local.get $6 - f32.store + i32.store end local.get $1 i32.const 1 @@ -4540,1573 +4366,4460 @@ br $while-continue|4 end end - local.get $3 + local.get $4 i32.const 1 i32.sub - local.set $3 + local.set $4 br $for-loop|2 end end local.get $5 call $~lib/rt/tlsf/__free local.get $0 - f32.load offset=4 - local.set $4 + i32.load offset=4 + local.set $1 local.get $0 local.get $0 - f32.load - f32.store offset=4 + i32.load + i32.store offset=4 local.get $0 - local.get $4 - f32.store - local.get $7 - call $~lib/rt/pure/__release + local.get $1 + i32.store ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 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/math/NativeMath.random (result f64) + (local $0 i64) + (local $1 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.tee $1 + global.set $~lib/math/random_state0_64 + local.get $1 + local.get $0 + local.get $0 + i64.const 23 + i64.shl + i64.xor + local.tee $0 + local.get $0 + i64.const 17 + i64.shr_u + i64.xor + i64.xor + local.get $1 + i64.const 26 + i64.shr_u + i64.xor + global.set $~lib/math/random_state1_64 + local.get $1 + i64.const 12 + i64.shr_u + i64.const 4607182418800017408 + i64.or + f64.reinterpret_i64 + f64.const 1 + f64.sub + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 + local.get $0 + i32.sub + ) + (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 f32) - (local $7 f32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + local.get $0 + i32.const 7 + i32.and local.get $1 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.const 2 - i32.eq - if - local.get $4 - f32.load offset=4 - local.set $6 - local.get $4 - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $5 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq if - local.get $4 - local.get $7 - f32.store offset=4 - local.get $4 - local.get $6 - f32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 end - br $folding-inner0 end - local.get $5 - call $~lib/rt/pure/__retain - local.set $9 - local.get $1 - i32.const 256 - i32.lt_s + end + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 if + local.get $0 + i32.load16_u + local.tee $3 local.get $1 - local.set $3 - local.get $9 - call $~lib/rt/pure/__retain - local.set $10 - loop $for-loop|0 + i32.load16_u + local.tee $4 + i32.ne + if local.get $3 - local.get $8 - i32.gt_s - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $10 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - f32.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end + local.get $4 + i32.sub + return end - local.get $10 - call $~lib/rt/pure/__release - else - local.get $4 + local.get $0 + i32.const 2 + i32.add + local.set $0 local.get $1 - local.get $9 - call $~lib/util/sort/weakHeapSort + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - return end + i32.const 0 + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.reinterpret_f32 + local.get $1 + i32.const 0 + i32.lt_s local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + 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 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount32 local.get $2 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $2 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + local.get $0 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.reinterpret_f32 - local.tee $3 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return + end + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount32 + local.tee $0 + call $~lib/util/number/utoa_dec_simple + local.get $0 + ) + (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 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i64) local.get $3 - i32.const 31 - i32.shr_s - i32.const 1 - i32.shr_u - i32.xor - local.tee $3 - i32.gt_s - local.get $2 + local.get $1 + i64.sub + local.set $8 local.get $3 - i32.lt_s + i64.const 1 + i32.const 0 + local.get $4 i32.sub - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain + local.tee $11 + i64.extend_i32_s + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + i64.and local.set $7 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $3 + local.get $11 + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 local.tee $2 - call $~lib/rt/tlsf/__alloc - local.tee $5 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 + call $~lib/util/number/decimalCount32 + local.set $9 + loop $while-continue|0 + local.get $9 i32.const 0 i32.gt_s if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $5 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + 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 $2 + i32.const 1000000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $4 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $4 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $4 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $4 + end + local.get $4 + local.get $6 + i32.or if - local.get $5 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.xor - i32.store local.get $0 - local.get $3 - i32.const 3 + local.get $6 + i32.const 1 i32.shl i32.add local.get $4 - f64.store - local.get $0 - local.get $2 - i32.const 3 - i32.shl + i32.const 65535 + i32.and + i32.const 48 i32.add + i32.store16 local.get $6 - f64.store + i32.const 1 + i32.add + local.set $6 end - local.get $3 + local.get $9 i32.const 1 i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add + local.set $9 + local.get $5 + local.get $7 + local.get $2 + i64.extend_i32_u + local.get $11 + i64.extend_i32_s + i64.shl + i64.add local.tee $1 - f64.load - f64.store - local.get $1 - local.get $4 - f64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $3 - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u + 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 10576 i32.add - i32.load - local.get $1 - i32.shr_u + i64.load32_u + local.get $11 + i64.extend_i32_s + i64.shl + local.set $10 + local.get $0 + local.get $6 i32.const 1 - i32.and - local.get $1 + i32.sub i32.const 1 i32.shl i32.add - local.tee $2 - i32.gt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $4 - local.get $0 + local.tee $0 + i32.load16_u + local.set $2 + loop $while-continue|3 + i32.const 1 + local.get $8 local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) + i64.sub + local.get $1 + local.get $10 + i64.add + local.tee $3 + local.get $8 + i64.sub + i64.gt_u + local.get $3 + local.get $8 + i64.lt_u + select i32.const 0 - i32.lt_s + local.get $10 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $8 + i64.lt_u + select + select if - local.get $5 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $2 local.get $2 - i32.load i32.const 1 + i32.sub + local.set $2 local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $0 - local.get $6 - f64.store + local.get $10 + i64.add + local.set $1 + br $while-continue|3 end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 end + local.get $0 + local.get $2 + i32.store16 + local.get $6 + return end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 + br $while-continue|0 end end - local.get $5 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $4 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $4 - f64.store - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner0 - local.get $0 - i32.load offset=12 + local.get $11 + i64.extend_i32_s + local.set $13 + loop $while-continue|4 (result i32) + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $7 + i64.const 10 + i64.mul + local.tee $3 + local.get $13 + i64.shr_u local.tee $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.const 2 - i32.eq + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - local.get $4 - f64.load offset=8 - local.set $6 - local.get $4 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength + local.get $0 local.get $6 - local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $3 + local.get $12 + i64.and + local.tee $7 + local.get $5 + 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 + local.get $8 + i32.const 0 + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 10576 + i32.add + i64.load32_u + i64.mul + local.set $8 + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $2 + loop $while-continue|6 + i32.const 1 + local.get $8 + local.get $1 + i64.sub + local.get $1 + local.get $10 + i64.add + local.tee $3 + local.get $8 + i64.sub + i64.gt_u + local.get $3 + local.get $8 + i64.lt_u + select + i32.const 0 + local.get $10 local.get $5 - i32.load - call_indirect (type $f64_f64_=>_i32) + local.get $1 + i64.sub + i64.le_u i32.const 0 - i32.lt_s + local.get $1 + local.get $8 + i64.lt_u + select + select if - local.get $4 - local.get $7 - f64.store offset=8 - local.get $4 - local.get $6 - f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + local.get $10 + i64.add + local.set $1 + br $while-continue|6 end - br $folding-inner0 end - local.get $5 - call $~lib/rt/pure/__retain - local.set $9 + local.get $0 + local.get $2 + i32.store16 + local.get $6 + 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 $0 local.get $1 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $3 - local.get $9 - call $~lib/rt/pure/__retain - local.set $10 - loop $for-loop|0 - local.get $3 - local.get $8 - i32.gt_s - if - local.get $4 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - local.get $8 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $6 - local.get $7 - local.get $10 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - local.get $10 - call $~lib/rt/pure/__release - else - local.get $4 - local.get $1 - local.get $9 - call $~lib/util/sort/weakHeapSort - end - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add return end - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - local.get $0 - i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1552 - i32.const 1104 - i32.const 104 - 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 - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $2 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - i32.const 31 i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.tee $2 - call $~lib/rt/tlsf/__alloc - local.tee $4 + local.tee $3 + i32.const 21 + i32.le_s i32.const 0 - local.get $2 - call $~lib/memory/memory.fill local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if + local.get $3 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 i32.const 1 - i32.and - local.get $4 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 i32.shl i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.shr_u + i32.const 48 + i32.store16 + local.get $1 i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end + i32.add + local.set $1 + br $for-loop|0 end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + if (result i32) local.get $0 - local.get $2 + local.get $3 i32.const 1 - i32.shr_s - local.tee $7 - i32.const 2 i32.shl i32.add - i32.load - local.set $2 - local.get $0 - local.get $3 + local.tee $0 i32.const 2 - i32.shl i32.add - i32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength + local.get $0 + i32.const 0 local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) + 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 + else + local.get $3 i32.const 0 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 5 - i32.shr_u + i32.le_s + i32.const 0 + local.get $3 + i32.const -6 + i32.gt_s + select + if (result i32) + local.get $0 i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 i32.shl i32.add - local.tee $8 - local.get $8 - i32.load + local.get $0 + local.get $1 i32.const 1 - local.get $3 i32.shl - i32.xor - i32.store + call $~lib/memory/memory.copy local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $2 + i32.const 3014704 i32.store - local.get $0 - local.get $7 i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - i32.load - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store - local.get $2 - local.get $1 - i32.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $3 - local.get $4 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $3 i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and + else local.get $1 i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.gt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if + i32.eq + if (result i32) local.get $0 - i32.load - local.set $2 + i32.const 101 + i32.store16 offset=2 local.get $0 + local.tee $1 + i32.const 4 + i32.add + 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 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple local.get $1 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 offset=4 + local.get $0 i32.const 2 - i32.shl i32.add - i32.load - local.set $5 + else + local.get $0 + i32.const 4 + i32.add + local.get $0 i32.const 2 - global.set $~argumentsLength + i32.add + local.get $1 + i32.const 1 + 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 $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) + i32.add + local.tee $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $2 + i32.const 4 + i32.add + local.get $3 + i32.const 1 + i32.sub + local.tee $0 i32.const 0 i32.lt_s + local.tee $3 if - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + i32.const 0 local.get $0 - local.get $5 - i32.store + i32.sub + local.set $0 end - local.get $1 + local.get $0 + local.get $0 + call $~lib/util/number/decimalCount32 i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + 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 + i32.const 2 + i32.add end end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $1 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $1 - i32.store - local.get $6 - call $~lib/rt/pure/__release ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) (local $8 i32) (local $9 i32) (local $10 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner0 - local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 + f64.const 0 + f64.lt + local.tee $9 + if (result f64) local.get $0 - i32.load offset=4 - local.set $4 + i32.const 45 + i32.store16 local.get $1 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - local.set $2 - local.get $4 - i32.load - local.set $1 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $1 - local.get $5 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $1 - i32.store offset=4 - local.get $4 - local.get $2 - i32.store - end - br $folding-inner0 - end - local.get $5 - call $~lib/rt/pure/__retain - local.set $7 + f64.neg + else local.get $1 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $3 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $6 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $10 - local.get $8 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $8 - call $~lib/rt/pure/__release - else - local.get $4 - local.get $1 - local.get $7 - call $~lib/util/sort/weakHeapSort - end - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.gt_u - local.get $0 - local.get $1 - i32.lt_u - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 7568 - local.tee $2 - local.set $1 end - local.get $0 - local.get $1 - call $~lib/array/Array#sort + 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 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/array/Array#constructor - local.set $2 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s - 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 - end - end + i64.const 4503599627370495 + i64.and + i64.add + local.tee $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 local.get $2 - ) - (func $~lib/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 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.tee $1 - global.set $~lib/math/random_state0_64 - local.get $1 - local.get $0 - local.get $0 - i64.const 23 + i64.clz + i32.wrap_i64 + local.tee $4 + i64.extend_i32_s i64.shl - i64.xor - local.tee $0 + global.set $~lib/util/number/_frc_plus + local.get $8 + i32.const 1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $8 + i32.const 1 + i32.sub + local.get $4 + i32.sub + local.set $4 + local.get $3 + local.get $3 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $10 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $8 + local.get $10 + i32.sub + local.get $4 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $4 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $4 + local.get $1 + local.get $4 + f64.convert_i32_s + f64.ne + i32.add + i32.const 3 + i32.shr_s + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + local.tee $10 + i32.sub + global.set $~lib/util/number/_K + local.get $10 + i32.const 9704 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $4 + i32.const 1 + i32.shl + i32.const 10400 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and + local.set $2 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul + local.get $2 + local.get $5 + i64.const 4294967295 + i64.and + local.tee $5 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $5 local.get $0 - i64.const 17 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + local.get $3 + local.get $3 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl + local.tee $3 + i64.const 32 i64.shr_u - i64.xor - i64.xor + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $3 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $4 + local.get $8 + local.get $0 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $5 + local.get $4 + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $5 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $5 + i64.mul + local.get $2 + local.get $5 + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $3 + 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 $9 + call $~lib/util/number/genDigits + local.get $9 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $9 + 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.ne + if + local.get $1 + local.get $1 + f64.ne + if + local.get $0 + i32.const 78 + i32.store16 + local.get $0 + i32.const 97 + i32.store16 offset=2 + local.get $0 + i32.const 78 + i32.store16 offset=4 + i32.const 3 + 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 8 + i32.add + return + end + unreachable + end + local.get $0 + local.get $1 + call $~lib/util/number/dtoa_core + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 0 + i32.lt_s + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + i32.const 0 + local.get $1 + i32.sub + local.set $1 + end + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return + end + local.get $2 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.tee $2 + call $~lib/util/number/decimalCount32 + i32.add + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + local.get $1 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 65535 + i32.and + 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 $1 + i32.const 65535 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + local.get $1 + ) + (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 + i64.lt_u + select + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000000 + i64.lt_u + select + local.get $0 + i64.const 1000000000000000 + i64.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + local.get $1 + i64.const 10 + i64.div_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 + end + ) + (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 10 + i64.lt_u + if + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return + end + local.get $1 + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + call $~lib/util/number/decimalCount32 + local.set $2 + local.get $0 + local.get $3 + local.get $2 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount64High + local.tee $2 + call $~lib/util/number/utoa_dec_simple + end + local.get $2 + ) + (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 $2 + 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 $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $2 + 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 $3 + call $~lib/util/number/decimalCount32 + local.get $2 + i32.add + local.set $2 + local.get $0 + local.get $3 + local.get $2 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount64High + local.get $2 + i32.add + local.tee $2 + call $~lib/util/number/utoa_dec_simple + end + local.get $2 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 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 $1 + i32.const 255 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + local.get $1 + ) + (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + 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 $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + 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#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + i32.ge_s + i32.const 1 + local.get $3 + select + if + i32.const -1 + 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 $0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $2 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + 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#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 0 + call $~lib/array/ensureSize + local.get $3 + local.get $0 + i32.load offset=4 + i32.add + local.get $1 + i32.store8 + local.get $0 + local.get $2 + i32.store offset=12 + local.get $2 + ) + (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 $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 + local.get $0 + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/tlsf/__alloc + local.tee $5 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $5 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $7 + i32.add + i32.load8_u + local.set $3 + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $7 + i32.add + local.get $6 + i32.store8 + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end + end + local.get $1 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + i32.load8_u + local.set $1 + local.get $0 + local.get $0 + local.get $4 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + local.get $1 + i32.store8 + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + i32.load8_u + local.set $3 + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.set $6 + i32.const 2 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $7 + local.get $7 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.add + local.get $3 + i32.store8 + local.get $0 + local.get $6 + i32.store8 + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end + end + local.get $5 + call $~lib/rt/tlsf/__free + local.get $0 + i32.load8_u offset=1 + local.set $1 + local.get $0 + local.get $0 + i32.load8_u + i32.store8 offset=1 + local.get $0 + local.get $1 + i32.store8 + ) + (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 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + 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 $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $std/array/ArrayStr + block $std/array/Proxy + 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-inner0 $std/array/Ref $folding-inner4 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner2 $std/array/Proxy $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner3 $folding-inner3 $std/array/ArrayStr $folding-inner2 $invalid + end + return + end + return + end + return + end + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + call $~lib/array/Array~visit + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~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 $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 13268 + i32.lt_s + if + i32.const 29680 + i32.const 29728 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + 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#__uget + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_s + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array#__uget + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 5344 + i32.const 1104 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array#__uget + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1344 + i32.const 1104 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#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 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + 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 $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 100 + i32.eq + ) + (func $~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 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $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 + return + 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 + i32.const 1 + ) + (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.lt_s + ) + (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.lt_s + ) + (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $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 + return + 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 + i32.const 0 + ) + (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.gt_s + ) + (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 3 + i32.gt_s + ) + (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + 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 $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.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 $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|20 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + i32.eqz + if + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + 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 + local.get $0 + i32.const 202 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 625 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#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.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 $0 + i32.load offset=12 + local.tee $5 + 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 $3 + loop $for-loop|0 + local.get $2 + local.get $5 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s + if + local.get $2 + i32.const 2 + i32.shl + local.tee $4 + local.get $0 + i32.load offset=4 + i32.add + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $4 + i32.add + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store + 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 + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + 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 $5 + loop $for-loop|0 + local.get $2 + local.get $5 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $5 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $3 + call $~lib/array/Array#push + drop + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#pop + drop + local.get $0 + global.get $std/array/i + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.ge_s + ) + (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 $5 + loop $for-loop|0 + local.get $3 + local.get $5 + local.get $0 + i32.load offset=12 + local.tee $4 + local.get $4 + local.get $5 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $start:std/array~anonymous|33 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - i64.const 26 - i64.shr_u - i64.xor - global.set $~lib/math/random_state1_64 + i32.add + ) + (func $start:std/array~anonymous|35 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 local.get $1 - i64.const 12 - i64.shr_u - i64.const 4607182418800017408 - i64.or - f64.reinterpret_i64 - f64.const 1 - f64.sub + i32.add ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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/array/Array#constructor - local.set $2 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $3 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_s + local.get $3 + i32.const 0 + i32.ge_s if + local.get $0 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + global.set $~argumentsLength local.get $2 - local.get $1 - call $~lib/math/NativeMath.random + local.get $4 + local.get $3 local.get $0 - f64.convert_i32_s - f64.mul - i32.trunc_f64_s - call $~lib/array/Array#__set local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $3 i32.const 1 - i32.add - local.set $1 + i32.sub + local.set $3 br $for-loop|0 end end - local.get $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#sort (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $7 + i32.const 1 + i32.le_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $7 + i32.const 2 + i32.eq + if + local.get $3 + f32.load offset=4 + local.set $4 + local.get $3 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + local.get $1 + i32.load + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + f32.store offset=4 + local.get $3 + local.get $4 + f32.store + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $7 + i32.const 256 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.set $2 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_s + if + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $4 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + local.get $2 + i32.load + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + local.get $0 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + br $while-continue|1 + end + end + end + local.get $3 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.get $7 + local.get $1 + call $~lib/util/sort/weakHeapSort + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $4 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f32.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $3 + f32.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f64) + (local $5 f64) (local $6 i32) (local $7 i32) - (local $8 i32) - block $__inlined_func$std/array/isSorted (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/array/Array#sort - local.tee $5 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $2 + i32.load offset=12 + local.tee $7 i32.const 1 - local.set $1 + i32.le_s + br_if $folding-inner0 local.get $0 - i32.load offset=12 - local.set $6 - loop $for-loop|0 + i32.load offset=4 + local.set $3 + local.get $7 + i32.const 2 + i32.eq + if + local.get $3 + f64.load offset=8 + local.set $4 + local.get $3 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 local.get $1 - local.get $6 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 i32.lt_s if - local.get $0 - local.get $1 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.get $0 - local.get $1 - call $~lib/array/Array#__get - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + local.get $3 + local.get $5 + f64.store offset=8 + local.get $3 + local.get $4 + f64.store + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $7 + i32.const 256 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.set $2 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_s if - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted + local.get $3 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $4 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + local.get $0 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + br $while-continue|1 + end + end + end + local.get $3 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 end + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.get $7 + local.get $1 + call $~lib/util/sort/weakHeapSort end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/array/assertSortedDefault (param $0 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 7840 - call $std/array/assertSorted - i32.const 7840 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + 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 - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1552 - i32.const 1104 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 + i32.const 1344 + i32.const 1104 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__retain - local.tee $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - local.tee $0 - i32.load - local.tee $1 - i32.ne - if - local.get $0 - local.get $3 - call $~lib/rt/pure/__retain - i32.store - local.get $1 - call $~lib/rt/pure/__release - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + (func $std/array/isArraysEqual (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 0 - call $~lib/array/Array#__get - local.get $1 - i32.const 0 - call $~lib/array/Array#__get + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - call $~lib/rt/pure/__release + i32.load offset=12 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $4 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f64.ne + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.tee $3 + local.get $3 + f64.ne + else + i32.const 0 + end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $3 + f64.ne + br_if $folding-inner0 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#sort (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 $2 - call $~lib/rt/pure/__retain - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $3 - i32.gt_s + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $2 + i32.const 2 + i32.eq if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add + local.get $5 + i32.load offset=4 + local.set $2 + local.get $5 i32.load - call $~lib/rt/pure/__retain - local.set $5 + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $2 local.get $3 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $3 + i32.store offset=4 + local.get $5 local.get $2 - i32.const 0 - i32.ge_s + i32.store + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s if - block $while-break|1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $4 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $2 - i32.const 1 - i32.sub - else - local.get $4 - call $~lib/rt/pure/__release - br $while-break|1 + i32.ge_s + if + block $while-break|1 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $4 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $5 + local.get $2 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end end - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - br $while-continue|1 end + local.get $5 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end end - local.get $0 - local.get $2 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/array/Array>#sort (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.tee $3 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $3 - i32.const 2 - i32.eq - if - local.get $2 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $2 - i32.load - call $~lib/rt/pure/__retain - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $2 - local.get $4 + else + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 + local.get $5 local.get $2 - local.get $3 - i32.store + local.get $1 + call $~lib/util/sort/weakHeapSort end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release return end - local.get $2 - local.get $3 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $2 - call $~lib/util/sort/insertionSort<~lib/array/Array> - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6114,11479 +8827,14334 @@ (local $6 i32) (local $7 i32) (local $8 i32) - block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $6 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $7 - call $~lib/rt/pure/__retain - local.set $0 - local.get $5 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 local.get $0 i32.load offset=12 - local.set $8 - loop $for-loop|0 - 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 $3 - local.get $0 - local.get $1 - call $~lib/array/Array#__get - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $3 - local.get $4 - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array> - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end + local.tee $2 + i32.const 1 + i32.le_s + br_if $folding-inner0 local.get $0 - call $~lib/rt/pure/__release + i32.load offset=4 + local.set $5 local.get $2 - call $~lib/rt/pure/__release - i32.const 1 - end - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|48 (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.load - local.get $1 - i32.load - i32.sub - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/compareImpl (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 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 + i32.const 2 + i32.eq + if + local.get $5 + i32.load offset=4 + local.set $2 + local.get $5 + i32.load + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $2 local.get $3 - i64.load local.get $1 - i64.load - i64.eq + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s if + local.get $5 local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 + i32.store offset=4 + local.get $5 local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 + i32.store end + br $folding-inner0 end - end - loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 + i32.const 256 + i32.lt_s if - local.get $3 - i32.load16_u - local.tee $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + local.set $3 local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 + local.set $4 + loop $for-loop|0 + local.get $3 local.get $6 - i32.sub - return + i32.gt_s + if + local.get $5 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $4 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $5 + local.get $2 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + br $while-continue|1 + end + end + end + local.get $5 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end end - local.get $3 - i32.const 2 - i32.add - local.set $3 + else + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 + i32.store offset=4 + local.get $5 + local.get $2 + local.get $1 + call $~lib/util/sort/weakHeapSort end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz + call $~lib/array/Array#constructor + local.tee $2 + i32.store + loop $for-loop|0 local.get $0 local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.or - i32.eqz - br_if $folding-inner0 - local.get $3 - i32.eqz + i32.gt_s if - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - return - end - local.get $2 - i32.eqz - if local.get $0 - call $~lib/rt/pure/__release + i32.const 1 + i32.sub + local.get $1 + i32.sub + call $~lib/array/Array#__set local.get $1 - call $~lib/rt/pure/__release i32.const 1 - return + i32.add + local.set $1 + br $for-loop|0 end - local.get $0 - local.get $1 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - select - call $~lib/util/string/compareImpl - local.set $4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.get $3 - local.get $2 - i32.sub - local.get $4 - select - return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain + call $~lib/array/Array#constructor local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - 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 - br_if $folding-inner0 + i32.store + loop $for-loop|0 local.get $0 - local.get $1 local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/math/NativeMath.random + local.get $0 + f64.convert_i32_s + f64.mul + i32.trunc_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 $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - i32.const 0 ) - (func $std/array/isArraysEqual<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=12 local.get $0 - i32.load offset=12 - local.tee $5 local.get $1 - i32.load offset=12 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end + call $~lib/array/Array#sort + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=4 + block $__inlined_func$std/array/isSorted (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 - return - end - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__get - local.set $3 - local.get $1 + local.set $2 + 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 - call $~lib/array/Array#__get - local.set $4 local.get $3 - call $~lib/rt/pure/__retain - local.tee $6 - local.get $4 - call $~lib/rt/pure/__retain - local.tee $7 - call $~lib/string/String.__eq - i32.eqz - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + i32.const 1 + i32.sub + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.load + call_indirect (type $i32_i32_=>_i32) i32.const 0 - return + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - 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 + i32.const 1 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - ) - (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.get $0 i32.eqz if - i32.const 16 - i32.const 29 - 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 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 57 - i32.const 60 + i32.const 0 + i32.const 1552 + i32.const 887 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $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 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 i32.store - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 7984 i32.store offset=4 local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 + i32.const 7984 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 8416 - local.get $2 - select - local.set $3 - block $__inlined_func$~lib/string/String#concat + i32.load offset=12 + i32.ge_u + if local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz + i32.const 0 + i32.lt_s if - local.get $1 - i32.const 8416 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 8416 - local.set $1 + i32.const 1344 + i32.const 1104 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 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 8256 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize 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 + i32.store offset=12 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $0 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 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (func $std/array/createReverseOrderedNestedArray (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 0 + call $~lib/array/Array#set:buffer local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 + i32.store offset=4 + local.get $0 i32.const 0 - local.get $1 + i32.store offset=8 + local.get $0 i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $1 + i32.store offset=4 local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 + i32.const 0 + i32.const 8 + call $~lib/memory/memory.fill + local.get $0 local.get $1 + call $~lib/array/Array#set:buffer + local.get $0 local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz - if - i32.const 8256 - return + i32.store offset=4 + local.get $0 + i32.const 8 + i32.store offset=8 + local.get $0 + 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 + i32.store + loop $for-loop|0 + local.get $2 + i32.const 2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/array/Array#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + i32.const 1 + local.get $2 + i32.sub + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + 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 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $3 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.const 0 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (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) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $4 - i32.eqz - if - i32.const 8512 - i32.const 8544 - local.get $0 - i32.load8_u - select - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 5 - i32.add - i32.mul - i32.const 5 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|1 - local.get $4 - local.get $6 + 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 + loop $for-loop|0 + local.get $1 + local.get $5 i32.gt_s if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.add - i32.load8_u - local.tee $9 - i32.eqz - i32.const 4 + local.get $5 + i32.const 2 + i32.shl i32.add - local.set $7 - local.get $1 - local.get $2 + i32.load + local.tee $6 + i32.store + local.get $5 + i32.const 1 + i32.sub + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 0 + i32.ge_s + if + block $while-break|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $7 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $6 + local.get $7 + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $3 + local.tee $4 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.get $4 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store + br $while-continue|1 + end + end + end + local.get $0 + local.get $3 i32.const 1 - i32.shl i32.add - i32.const 8512 - i32.const 8544 - local.get $9 - select - local.get $7 - i32.const 1 + i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $7 i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end local.get $6 + i32.store + local.get $5 i32.const 1 i32.add - local.set $6 - br $for-loop|1 + local.set $5 + br $for-loop|0 end end - local.get $0 - local.get $4 - i32.add - i32.load8_u - local.tee $4 - i32.eqz - i32.const 4 - i32.add - local.set $0 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 8512 - i32.const 8544 - local.get $4 - select - local.get $0 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.tee $0 - i32.gt_s - if - local.get $1 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + br_if $folding-inner0 local.get $0 - call $~lib/string/String#substring + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $4 + 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 $4 + i32.store offset=12 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $4 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 local.get $3 - call $~lib/rt/pure/__release + local.get $2 local.get $1 - call $~lib/rt/pure/__release + call $~lib/util/sort/insertionSort<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 return end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + ) + (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 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 local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 local.get $0 - i32.const 10000000 - i32.lt_u - select + local.get $1 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$std/array/isSorted<~lib/array/Array> (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $2 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/array/Array> + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + end + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa32 (param $0 i32) (result i32) + (func $std/array/createReverseOrderedElementsArray (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store local.get $0 - i32.eqz - if - i32.const 8880 - return - end i32.const 0 + call $~lib/array/Array#set:buffer local.get $0 - i32.sub + i32.const 0 + i32.store offset=4 local.get $0 + i32.const 0 + i32.store offset=8 local.get $0 - i32.const 31 - i32.shr_u - local.tee $0 - select + 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 $1 - call $~lib/util/number/decimalCount32 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 2048 + call $~lib/memory/memory.fill local.get $0 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 local.get $1 - local.get $3 - call $~lib/util/number/utoa_dec_simple + call $~lib/array/Array#set:buffer local.get $0 - if + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 2048 + i32.store offset=8 + local.get $0 + 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 $0 + i32.store + loop $for-loop|0 local.get $2 - i32.const 45 - i32.store16 + i32.const 512 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 511 + local.get $2 + 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=8 + local.get $0 + local.get $2 + 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 end - local.get $2 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $1 - i32.const 0 - i32.lt_s - local.tee $2 - if + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz local.get $0 - i32.const 45 - i32.store16 - i32.const 0 local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 10 - i32.lt_u - if + i32.eq + select + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl - i32.add + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 48 - i32.or - i32.store16 + i32.store local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.add - return - end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 - ) - (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/itoa32 - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - 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 $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 + i32.shr_u + local.tee $3 + i32.or + i32.eqz + br_if $folding-inner0 + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 - br $for-loop|0 + global.set $~lib/memory/__stack_pointer + i32.const -1 + return end - end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s - if + local.get $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + local.get $3 + i32.sub + local.get $0 + select return end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.eqz + local.get $1 + i32.eq if - i32.const 8880 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 return end - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u - if + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 48 - i32.or - i32.store16 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isArraysEqual<~lib/string/String|null> (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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - local.tee $4 + 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.lt_s - if - local.get $2 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $4 - i32.eqz - if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.get $2 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $2 - 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/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner1 + block $folding-inner0 + local.get $5 local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add + i32.load offset=12 + i32.ne + br_if $folding-inner0 local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - 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 $1 + i32.eq + br_if $folding-inner1 + loop $for-loop|0 local.get $3 local.get $5 - i32.add - local.set $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $3 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $2 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br_if $folding-inner0 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end - local.get $7 - local.get $1 - local.get $3 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add + i32.const 8560 + local.get $0 + select local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $2 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + i32.store offset=4 + 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 - call $~lib/rt/pure/__retain - local.set $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8560 + i32.store + i32.const 8560 + local.set $1 + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.get $1 - call $~lib/rt/pure/__release - ) - (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 i64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 - i32.const 0 - local.get $4 + i32.const 20 i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 - i32.const 0 - i32.gt_s + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/string/String#concat + local.get $2 + 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 - 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 $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + 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 offset=8 + local.get $2 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/memory/memory.copy + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/array/createRandomString (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + 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 + i32.const 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store + loop $for-loop|0 + local.get $0 + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=12 + call $~lib/math/NativeMath.random + global.get $~lib/memory/__stack_pointer + i32.const 6960 + i32.store offset=16 + i32.const 6956 + i32.load + i32.const 1 + i32.shr_u + f64.convert_i32_s + f64.mul + f64.floor + i32.trunc_f64_s + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.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 6960 + i32.store + block $__inlined_func$~lib/string/String#charAt + local.get $4 + i32.const 6956 + i32.load + i32.const 1 + i32.shr_u + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 local.set $2 - br $break|1 + br $__inlined_func$~lib/string/String#charAt end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 + global.get $~lib/memory/__stack_pointer + i32.const 2 i32.const 1 - i32.shl - i32.add + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 local.get $4 - i32.const 65535 - i32.and - i32.const 48 + i32.const 1 + i32.shl + i32.const 6960 i32.add + i32.load16_u i32.store16 - local.get $6 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 + global.set $~lib/memory/__stack_pointer end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $5 - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $2 - i64.extend_i32_u - local.get $11 - i64.extend_i32_s - i64.shl - i64.add + i32.store offset=8 + local.get $1 + local.get $2 + call $~lib/string/String.__concat local.tee $1 - i64.ge_u - if - local.get $9 - global.get $~lib/util/number/_K + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 + i32.sub + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + i32.const 0 + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.eq + local.get $1 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/string/joinBooleanArray (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.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + i32.const 8656 + i32.const 8688 + local.get $0 + i32.load8_u + select + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 5 + i32.add + i32.mul + i32.const 5 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|1 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $0 + local.get $5 i32.add - global.set $~lib/util/number/_K - local.get $9 - i32.const 2 + i32.load8_u + local.tee $8 + i32.eqz + i32.const 4 + i32.add + local.set $6 + local.get $1 + local.get $2 + i32.const 1 i32.shl - i32.const 10432 i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 + i32.const 8656 + i32.const 8688 + local.get $8 + select local.get $6 i32.const 1 - i32.sub - i32.const 1 i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $6 i32.add - local.tee $0 - i32.load16_u local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 + local.get $4 + if local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 8720 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 end - br $while-continue|0 - end - end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 end - local.get $9 - i32.const 1 - i32.sub - local.set $9 + local.get $0 local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - 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 - local.get $8 - i32.const 0 - local.get $9 - i32.sub - i32.const 2 + i32.load8_u + local.tee $3 + i32.eqz + i32.const 4 + i32.add + local.set $0 + local.get $1 + local.get $2 + i32.const 1 i32.shl - i32.const 10432 i32.add - i64.load32_u - i64.mul - local.set $8 + i32.const 8656 + i32.const 8688 + local.get $3 + select local.get $0 - local.get $6 - i32.const 1 - i32.sub i32.const 1 i32.shl + call $~lib/memory/memory.copy + local.get $7 + local.get $0 + local.get $2 i32.add local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer local.get $1 - i64.sub - i64.le_u - i32.const 0 + i32.store local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + block $folding-inner0 + local.get $4 + i32.eqz + if + local.get $0 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer local.get $2 - i32.store16 - local.get $6 - 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 $0 - local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl + i32.shr_u + local.tee $5 + i32.const 11 i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 + i32.mul + i32.const 11 i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + local.get $4 + local.get $6 + i32.gt_s if - local.get $0 local.get $1 + local.get $3 i32.const 1 i32.shl i32.add - i32.const 48 - i32.store16 - local.get $1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $3 + i32.add + local.set $3 + local.get $5 + if + local.get $1 + local.get $3 + 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 $3 + local.get $5 + i32.add + local.set $3 + end + local.get $6 i32.const 1 i32.add - local.set $1 + local.set $6 br $for-loop|0 end end - local.get $0 + local.get $7 + local.get $1 local.get $3 i32.const 1 i32.shl i32.add - i32.const 3145774 - i32.store - local.get $3 + local.get $0 + local.get $4 i32.const 2 + i32.shl i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 + i32.load + call $~lib/util/number/itoa_buffered local.get $3 - i32.const 0 + i32.add + local.tee $0 i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#join (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.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + block $folding-inner0 + local.get $4 + i32.eqz + if 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 - i32.const 0 - local.get $3 - i32.const -6 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + 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 $1 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $6 i32.gt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - 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 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end + if local.get $1 local.get $3 - i32.add - else - local.get $1 i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $3 + i32.add + local.set $3 + local.get $5 + if + local.get $1 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 - call $~lib/util/number/decimalCount32 - i32.const 1 + i32.shl i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 + local.get $5 i32.const 1 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 $3 + local.get $5 i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 + local.set $3 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $3 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#join (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.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + block $folding-inner0 + local.get $4 + i32.eqz + if + local.get $0 + f64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/dtoa + local.get $3 + f64.const 0 + f64.eq + if + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9504 + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + local.get $3 + local.get $3 + f64.sub + f64.const 0 + f64.ne + if local.get $3 - i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s - local.tee $3 + local.get $3 + f64.ne if - i32.const 0 - local.get $0 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9536 local.set $0 + br $__inlined_func$~lib/util/number/dtoa end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $2 - i32.const 45 - i32.const 43 + global.set $~lib/memory/__stack_pointer + i32.const 9568 + i32.const 9616 local.get $3 + f64.const 0 + f64.lt select - i32.store16 offset=4 - local.get $0 + local.set $0 + br $__inlined_func$~lib/util/number/dtoa + end + i32.const 9648 + local.get $3 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 9648 + local.get $1 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 9472 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 9468 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 28 + i32.add + i32.mul + i32.const 28 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if local.get $1 + local.get $2 + i32.const 1 + i32.shl i32.add - i32.const 2 + i32.const 9472 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $5 i32.add + local.set $2 end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 end end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 + local.get $7 local.get $1 - f64.neg - else + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 + return 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 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 - i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/util/string/joinReferenceArray<~lib/string/String|null> (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 20 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 $4 + 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 local.get $1 - local.get $4 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - local.tee $10 i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 9560 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end local.get $4 - i32.const 1 - i32.shl - i32.const 10256 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + else + i32.const 8400 + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $7 - i64.mul + i32.store offset=4 local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $6 + loop $for-loop|0 + local.get $4 + local.get $5 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + i32.store + local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $9 - i32.const 1 + local.get $4 + i32.const 2 i32.shl i32.add - local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 + i32.load local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 + i32.store local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - 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 $9 - call $~lib/util/number/genDigits - local.get $9 + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 + 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=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinReferenceArray<~lib/string/String|null> + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $~lib/util/string/joinReferenceArray (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 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 local.get $1 - f64.const 0 - f64.eq + i32.const 1 + i32.sub + local.tee $2 + i32.const 0 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + local.get $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 + i32.load + local.tee $0 + i32.store local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10816 + else + i32.const 8400 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne + i32.const 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.gt_s if + global.get $~lib/memory/__stack_pointer 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.tee $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 10816 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 10816 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $5 if - local.get $0 - i32.const 45 - i32.store16 - local.get $0 - i32.const 2 - i32.add - local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8720 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $0 - i64.const 29555310648492105 - i64.store - local.get $0 - i64.const 34058970405077102 - i64.store offset=8 - local.get $2 - i32.const 8 + local.get $3 + i32.const 1 i32.add - return + local.set $3 + br $for-loop|0 end - unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 10816 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 10816 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/util/number/dtoa_core ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (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.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinReferenceArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + local.get $0 + i32.const 8720 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 9328 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub - local.tee $5 + local.tee $3 i32.const 0 i32.lt_s if - local.get $3 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $5 - i32.eqz - if - block $__inlined_func$~lib/util/number/dtoa (result i32) - i32.const 9360 - local.get $0 - f64.load - local.tee $4 - f64.const 0 - f64.eq - br_if $__inlined_func$~lib/util/number/dtoa - drop - local.get $4 - local.get $4 - f64.sub - f64.const 0 - f64.ne - if - i32.const 9392 - local.get $4 - local.get $4 - f64.ne - br_if $__inlined_func$~lib/util/number/dtoa - drop - i32.const 9424 - i32.const 9472 - local.get $4 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - br $__inlined_func$~lib/util/number/dtoa - end - i32.const 9504 - local.get $4 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $0 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 9504 - local.get $0 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__retain - end + block $folding-inner0 local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $5 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.gt_s + i32.eqz if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s if local.get $1 local.get $2 i32.const 1 i32.shl i32.add - local.get $3 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + local.get $0 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered local.get $2 - local.get $6 i32.add local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 8720 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 end - end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if + local.get $6 local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $0 - call $~lib/string/String#substring local.get $3 - call $~lib/rt/pure/__release + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release return end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/string/joinReferenceArray<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (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 $2 - call $~lib/rt/pure/__retain - local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.const 0 i32.lt_s if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - call $~lib/rt/pure/__retain - else - i32.const 8256 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - i32.const 8256 - local.set $1 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|0 + block $folding-inner0 local.get $3 - local.get $6 - i32.lt_s + i32.eqz if local.get $0 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - local.get $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 + local.get $5 + i32.gt_s if - local.get $4 - call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 local.get $1 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered local.get $2 - i32.ne + i32.add + local.set $2 + local.get $4 if local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $2 - call $~lib/rt/pure/__release + i32.const 1 + i32.shl + i32.add + i32.const 8720 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 end - local.get $7 - call $~lib/rt/pure/__release + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 end - end - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - local.get $4 - i32.ne - if + local.get $6 + local.get $1 local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if + i32.const 1 + i32.shl + i32.add local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - local.get $1 - i32.ne + i32.add + local.tee $0 + i32.gt_s if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 - call $~lib/rt/pure/__release + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String|null>#join (param $0 i32) (param $1 i32) (result i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/string/String|null> - local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (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 8576 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $6 - i32.eqz - if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 10672 - i32.const 8256 - local.get $3 - select - return - end - i32.const 8256 - local.set $1 - local.get $5 - i32.const 20 + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.load offset=16 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 + return + end + block $folding-inner0 + local.get $4 + i32.eqz if - local.get $4 local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $1 - local.get $1 - i32.const 10672 - call $~lib/string/String.__concat - local.tee $7 - local.tee $2 - i32.ne + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.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 $__inlined_func$~lib/util/number/utoa64 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9024 + local.set $0 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $3 + i64.const 4294967295 + i64.le_u if + local.get $3 + i32.wrap_i64 + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $1 - call $~lib/rt/pure/__release + call $~lib/util/number/utoa_dec_simple + else + local.get $3 + call $~lib/util/number/decimalCount64High + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/number/utoa_dec_simple end - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $8 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.gt_s if local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 local.get $2 - i32.ne + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 if local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $2 - call $~lib/rt/pure/__release + i32.const 1 + i32.shl + i32.add + i32.const 8720 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 end - local.get $7 - call $~lib/rt/pure/__release + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|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 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $0 - if - local.get $1 - local.get $1 - i32.const 10672 - call $~lib/string/String.__concat - local.tee $4 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $0 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray - i32.const 8576 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 - if - local.get $0 - i32.const 45 - i32.store16 - i32.const 0 + local.get $7 local.get $1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_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.const 24 + local.get $0 + local.get $4 + i32.const 3 i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 + i32.add + i64.load + call $~lib/util/number/itoa_buffered local.get $2 - i32.const 1 i32.add - return - end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinIntegerArray (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) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub - local.tee $4 + local.tee $3 i32.const 0 i32.lt_s if - local.get $3 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $4 - i32.eqz - if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 + block $folding-inner0 local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s + i32.eqz if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add local.get $0 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 + i64.load + i32.wrap_i64 + i64.extend_i32_s + call $~lib/util/number/itoa64 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 8716 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 local.get $5 + i32.gt_s if local.get $1 local.get $2 i32.const 1 i32.shl i32.add - local.get $3 + local.get $0 local.get $5 - i32.const 1 + i32.const 3 i32.shl - call $~lib/memory/memory.copy + i32.add + i64.load + call $~lib/util/number/itoa_buffered local.get $2 - local.get $5 i32.add local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 8720 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if + local.get $6 local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $0 - call $~lib/string/String#substring local.get $3 - call $~lib/rt/pure/__release + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release return end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - 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 $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 + (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + local.get $0 + i32.const 8720 + call $~lib/array/Array<~lib/string/String|null>#join + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~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) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $3 + 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 local.get $1 i32.const 1 i32.sub - local.tee $4 + local.tee $3 i32.const 0 i32.lt_s if - local.get $3 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $4 + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#toString + else + i32.const 8400 + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.get $3 - 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 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + i32.const 8716 + i32.load i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 + i32.shr_u + local.set $5 loop $for-loop|0 + local.get $3 local.get $4 - local.get $6 i32.gt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.const 1 + local.get $4 + i32.const 2 i32.shl i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered + i32.load + local.tee $2 + i32.store local.get $2 - i32.add - local.set $2 - local.get $5 if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.store offset=16 local.get $2 - local.get $5 - i32.add + call $~lib/array/Array#toString local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $6 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8720 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $4 i32.const 1 i32.add - local.set $6 + local.set $4 br $for-loop|0 end end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 1 + local.get $3 + i32.const 2 i32.shl i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add + i32.load local.tee $0 - i32.gt_s + i32.store + local.get $0 if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 + i32.store offset=16 local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $1 - i64.const 10 - i64.div_u + local.get $0 + call $~lib/string/String.__concat local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 + i32.store offset=8 end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - i64.const 10 - i64.lt_u + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $1 - i64.const 4294967295 - i64.le_u - if + block $folding-inner0 + local.get $4 + i32.eqz + if + local.get $0 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + 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 $1 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.gt_s + if + local.get $1 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $3 + i32.add + local.set $3 + local.get $5 + if + local.get $1 + local.get $3 + 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 $3 + local.get $5 + i32.add + local.set $3 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else + i32.const 1 + i32.shl + i32.add local.get $0 + local.get $4 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $3 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple + return end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#join (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.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + local.get $0 + i32.const 8720 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $3 + 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 local.get $1 i32.const 1 i32.sub - local.tee $4 + local.tee $3 i32.const 0 i32.lt_s if - local.get $3 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $4 + local.get $3 i32.eqz if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 8880 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i64.load - local.tee $5 - i64.eqz - br_if $__inlined_func$~lib/util/number/utoa64 - drop - local.get $5 - i64.const 4294967295 - i64.le_u - if - local.get $5 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $0 - local.get $1 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $5 - call $~lib/util/number/decimalCount64High - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain + call $~lib/array/Array#toString + else + i32.const 8400 end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + i32.const 8716 + i32.load i32.const 1 i32.shr_u - local.tee $6 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 + local.set $5 loop $for-loop|0 + local.get $3 local.get $4 - local.get $7 i32.gt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 3 + local.get $4 + i32.const 2 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_buffered + i32.load + local.tee $2 + i32.store local.get $2 - i32.add - local.set $2 - local.get $6 if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.store offset=16 local.get $2 - local.get $6 - i32.add + call $~lib/array/Array#toString local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $7 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8720 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 3 + local.get $3 + i32.const 2 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add + i32.load local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (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 $2 - 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 $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $2 - 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 $3 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $2 + i32.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else + i32.store offset=16 local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple + local.get $0 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + local.get $0 + i32.const 8720 + call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i64) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $4 + 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 local.get $1 i32.const 1 i32.sub - local.tee $5 + local.tee $3 i32.const 0 i32.lt_s if - local.get $4 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $5 + local.get $3 i32.eqz if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 8880 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i64.load - i32.wrap_i64 - i64.extend_i32_s - local.tee $3 - i64.eqz - br_if $__inlined_func$~lib/util/number/itoa64 - drop - i64.const 0 - local.get $3 - i64.sub - local.get $3 - local.get $3 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $0 - select - local.tee $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $0 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $2 - local.get $5 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.get $0 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end + i32.store offset=4 local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain + call $~lib/array/Array#toString + else + i32.const 8400 end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $5 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 + i32.const 8400 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + i32.const 8716 + i32.load i32.const 1 i32.shr_u - local.tee $6 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 + local.set $5 loop $for-loop|0 - local.get $5 - local.get $7 + local.get $3 + local.get $4 i32.gt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $7 - i32.const 3 + local.get $4 + i32.const 2 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_buffered + i32.load + local.tee $2 + i32.store local.get $2 - i32.add - local.set $2 - local.get $6 if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $4 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + i32.store offset=16 local.get $2 - local.get $6 - i32.add + call $~lib/array/Array#toString local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $7 + local.get $5 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8720 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 + end + local.get $4 i32.const 1 i32.add - local.set $7 + local.set $4 br $for-loop|0 end end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $5 - i32.const 3 + local.get $3 + i32.const 2 i32.shl i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add + i32.load local.tee $0 - i32.gt_s + i32.store + local.get $0 if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/string/String#substring - local.get $4 - call $~lib/rt/pure/__release + i32.store offset=16 + local.get $0 + call $~lib/array/Array#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $1 - call $~lib/rt/pure/__release - return + local.get $0 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=8 end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + 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) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 8576 - call $~lib/array/Array<~lib/string/String|null>#join + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + 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 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~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) - (local $9 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $5 + 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 local.get $1 i32.const 1 i32.sub - local.tee $6 + local.tee $3 i32.const 0 i32.lt_s if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8400 return end - local.get $6 + local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 + local.tee $0 + i32.store + local.get $0 if (result i32) - local.get $3 - i32.const 8576 - call $~lib/array/Array#join + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#toString else - i32.const 8256 + i32.const 8400 end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer return end - i32.const 8256 + i32.const 8400 local.set $1 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + i32.const 8716 + i32.load i32.const 1 i32.shr_u - local.set $8 + local.set $5 loop $for-loop|0 local.get $3 - local.get $6 - i32.lt_s + local.get $4 + i32.gt_s if - local.get $4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + local.get $4 i32.const 2 i32.shl i32.add i32.load local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end + i32.store local.get $2 - local.tee $4 if - local.get $4 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 local.get $1 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + local.tee $1 + i32.store offset=8 end - local.get $8 + local.get $5 if + global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $2 - local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 8720 call $~lib/string/String.__concat - local.tee $7 local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release + i32.store offset=8 end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|0 end end - local.get $4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + local.get $3 i32.const 2 i32.shl i32.add i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 local.tee $0 + i32.store + local.get $0 if - local.get $0 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $1 - local.get $2 + local.get $0 call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + local.tee $1 + i32.store offset=8 end - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 f32) + (local $10 f64) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 72 + 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 + i32.const 1264 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1296 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1440 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $~lib/array/Array#constructor + global.set $std/array/arr + i32.const 0 + call $std/array/Ref#constructor + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.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 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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/array/Array#set:buffer + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1664 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1552 + 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 1696 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 1728 + 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 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 1760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + i32.store offset=8 + local.get $0 local.get $1 - i32.const 255 - i32.and - i32.const 10 - i32.lt_u + call $std/array/isArraysEqual + i32.eqz if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1552 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 1792 + 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 $2 local.get $1 - call $~lib/util/number/utoa_dec_simple + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 1824 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 + i32.store offset=8 + local.get $0 local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if - local.get $2 - call $~lib/rt/pure/__release - i32.const 8256 - return + i32.const 0 + i32.const 1552 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 0 + i32.const 6 + i32.const 1856 + 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 - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.get $2 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1552 + i32.const 72 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $2 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1888 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 1 - i32.shl i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.const 3 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1936 + call $~lib/rt/__newArray local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.set $3 - local.get $5 - if - local.get $1 - local.get $3 - 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 $3 - local.get $5 - i32.add - local.set $3 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add + i32.store offset=8 local.get $0 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $3 - i32.add - local.tee $0 - i32.gt_s + local.get $1 + call $std/array/isArraysEqual + i32.eqz if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1552 + i32.const 79 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 1984 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + i32.store offset=8 + local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 82 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store local.get $0 - i32.load offset=12 - local.get $1 - call $~lib/util/string/joinIntegerArray + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 2032 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + i32.store offset=8 local.get $0 - i32.const 8576 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~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) - (local $9 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 - return + i32.const 0 + i32.const 1552 + i32.const 85 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 2080 + 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 - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - i32.const 8576 - call $~lib/array/Array#join - else - i32.const 8256 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1552 + i32.const 88 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 8256 - local.set $1 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 0 i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $4 + i32.const 0 + call $~lib/array/Array#fill + drop + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + i32.store + i32.const 5 i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne + i32.const 7 + i32.const 2128 + 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 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1552 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable end - 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 if - local.get $0 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + i32.const 0 + i32.const 1552 + i32.const 97 + 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 $std/array/internalCapacity + if + i32.const 0 + i32.const 1552 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + i32.const 42 + 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 8576 - call $~lib/array/Array#join - ) - (func $~lib/util/string/joinReferenceArray<~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) - (local $9 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 i32.const 0 - i32.lt_s - if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 - return - end - local.get $6 - i32.eqz + call $~lib/array/Array#__get + i32.const 42 + i32.ne if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - i32.const 8576 - call $~lib/array/Array#join - else - i32.const 8256 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1552 + i32.const 102 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 8256 - local.set $1 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 + 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 1 - i32.shr_u - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $4 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 + call $std/array/internalCapacity + i32.const 1 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1552 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + i32.const 42 + i32.ne if - local.get $0 - i32.const 8576 - call $~lib/array/Array#join - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + i32.const 0 + i32.const 1552 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - i32.const 8576 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~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) - (local $9 i32) - i32.const 8576 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - i32.const 1 - i32.sub - local.tee $6 - i32.const 0 - i32.lt_s if - local.get $5 - call $~lib/rt/pure/__release - i32.const 8256 - return + i32.const 0 + i32.const 1552 + i32.const 109 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $6 - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity + i32.const 1 + i32.ne if - local.get $0 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - end - local.get $3 - if (result i32) - local.get $3 - call $~lib/array/Array<~lib/array/Array>#toString - else - i32.const 8256 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1552 + i32.const 110 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 8256 - local.set $1 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + 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 + i32.store + local.get $0 + i32.load offset=12 i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - local.tee $4 - if - local.get $1 - local.get $1 - local.get $4 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $7 - call $~lib/string/String.__concat - local.tee $9 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - end - local.get $8 - if - local.get $1 - local.tee $2 - local.get $5 - call $~lib/string/String.__concat - local.tee $7 - local.tee $1 - local.get $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $7 - call $~lib/rt/pure/__release - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 114 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $2 + call $std/array/internalCapacity + i32.const 1 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1552 + i32.const 115 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 + 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 + i32.const 43 + i32.ne if - local.get $1 - local.get $1 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $4 - call $~lib/string/String.__concat - local.tee $3 - local.tee $2 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + i32.const 0 + i32.const 1552 + i32.const 116 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (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) + i32.const 44 + 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.load offset=12 - local.set $5 - local.get $0 - i32.load offset=4 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $3 - i32.add - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity i32.const 2 - i32.shl - local.tee $2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 121 + 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/rt/pure/__new - local.set $4 - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - local.get $3 - i32.store offset=12 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 123 + 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 $2 - i32.store offset=8 + i32.const 45 + 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 - local.get $4 - i32.store offset=4 + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 127 + 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 $4 - call $~lib/rt/pure/__retain + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 128 + 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 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $6 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $3 - if - local.get $1 - local.get $4 - i32.add - local.get $3 - i32.load offset=4 - local.get $3 - i32.load offset=8 - local.tee $3 - call $~lib/memory/memory.copy - local.get $1 - local.get $3 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end + call $~lib/array/Array#__get + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 129 + 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/rt/pure/__retain - ) - (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.get $0 - i32.load offset=12 - local.set $6 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 130 + 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=4 - local.set $7 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $0 - if (result i32) - local.get $0 - i32.load offset=12 - else - i32.const 0 - end - local.get $3 - i32.add - local.set $3 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 131 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.shl - local.tee $2 + i32.const 2 + i32.const 8 i32.const 0 - call $~lib/rt/pure/__new - local.set $0 - i32.const 16 - i32.const 27 - call $~lib/rt/pure/__new - local.tee $4 - local.get $3 + call $~lib/rt/__newArray + local.tee $0 i32.store offset=12 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 - local.get $4 + i32.load offset=4 + i32.store offset=16 local.get $0 - call $~lib/rt/pure/__retain - i32.store i32.const 0 - local.set $2 - loop $for-loop|1 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $5 - if - local.get $0 - local.get $1 - i32.add - local.get $5 - i32.load offset=4 - local.get $5 - i32.load offset=8 - local.tee $5 - call $~lib/memory/memory.copy - local.get $1 - local.get $5 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end i32.const 0 - local.set $2 - loop $for-loop|2 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|2 - end - end - local.get $4 - call $~lib/rt/pure/__retain - ) - (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 f32) - (local $27 f64) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 i32.const 0 - call $~lib/array/Array#constructor - global.set $std/array/arr + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - call $~lib/array/Array.isArray<~lib/array/Array|null> + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 - i32.const 1344 - i32.const 46 + i32.const 1552 + i32.const 139 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 - call $std/array/Ref#constructor - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $2 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $2 - 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 - i32.const 1 - i32.const 0 - call $~lib/rt/pure/__new + call $~lib/array/Array#constructor local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/memory/memory.fill + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.set $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 local.get $1 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store local.get $2 - i32.load - local.tee $6 + call $std/array/internalCapacity + i32.const 3 i32.ne if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $6 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1552 + i32.const 148 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store local.get $2 + i32.load offset=12 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - i32.const 1 - i32.store offset=8 - global.get $std/array/arr - call $~lib/array/Array.isArray<~lib/array/Array|null> - i32.eqz + local.get $0 + i32.load offset=12 + i32.const 3 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 52 + i32.const 1552 + i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - i32.const 6 - i32.const 1488 + i32.const 2 + i32.const 3 + i32.const 2224 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $~lib/array/Array#concat + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $2 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release + i32.store local.get $2 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1520 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/array/isArraysEqual - i32.eqz + call $std/array/internalCapacity + i32.const 3 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 60 + i32.const 1552 + i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - i32.const 6 - i32.const 1616 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 43 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 63 + i32.const 1552 + i32.const 155 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1648 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 44 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 66 + i32.const 1552 + i32.const 156 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + i32.const 45 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 46 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 47 + 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 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array#concat + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $2 + i32.store local.get $2 + call $std/array/internalCapacity + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 164 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - i32.const 6 - i32.const 1680 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 43 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 69 + i32.const 1552 + i32.const 167 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 1 - i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 - i32.const 0 - i32.const 6 - i32.const 1712 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 44 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 72 + i32.const 1552 + i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1744 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 i32.const 2 - i32.const 7 - i32.const 1792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 45 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 79 + i32.const 1552 + i32.const 169 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 3 + call $~lib/array/Array#__get + i32.const 46 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 82 + i32.const 1552 + i32.const 170 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 - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1888 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 4 + call $~lib/array/Array#__get + i32.const 47 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 85 + i32.const 1552 + i32.const 171 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 1936 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/array/Array#pop + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 4 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 88 + i32.const 1552 + i32.const 174 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $2 - i32.const 5 i32.const 2 - i32.const 7 - i32.const 1984 + i32.const 3 + i32.const 2256 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 - i32.const 1344 - i32.const 91 + i32.const 1552 + i32.const 182 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/array/arr + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array#concat + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.load offset=12 + i32.const 3 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 97 + i32.const 1552 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 - i32.const 1344 - i32.const 98 + i32.const 1552 + i32.const 185 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#push - drop - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2288 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 i32.const 0 - call $~lib/array/Array#__get - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 102 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 - i32.const 1 - i32.ne + i32.const 3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2336 + 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 1344 - i32.const 103 + i32.const 1552 + i32.const 192 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2384 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 i32.const 1 - i32.ne + i32.const 3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2432 + 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 1344 - i32.const 104 + i32.const 1552 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - i32.const 42 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2480 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2528 + 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 1344 - i32.const 108 + i32.const 1552 + i32.const 196 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2576 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2624 + 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 1344 - i32.const 109 + i32.const 1552 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2672 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2720 + 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 1344 - i32.const 110 + i32.const 1552 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2768 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 i32.const 1 - i32.ne + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2816 + 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 1344 - i32.const 114 + i32.const 1552 + i32.const 202 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2864 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 i32.const 1 - i32.ne + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2912 + 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 1344 - i32.const 115 + i32.const 1552 + i32.const 204 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 2960 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 i32.const 0 - call $~lib/array/Array#__get - i32.const 43 - i32.ne + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3008 + 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 1344 - i32.const 116 + i32.const 1552 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - i32.ne + i32.const 3 + i32.const 3056 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3104 + 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 1344 - i32.const 120 + i32.const 1552 + i32.const 208 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - i32.ne + i32.const 3 + i32.const 3152 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3200 + 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 1344 - i32.const 121 + i32.const 1552 + i32.const 210 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 3248 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3296 + 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 $~lib/array/Array#__get - i32.const 43 - i32.ne + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 122 + i32.const 1552 + i32.const 212 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3344 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/array/Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3392 + 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 1344 - i32.const 123 + i32.const 1552 + i32.const 214 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 45 - call $~lib/array/Array#push + local.tee $0 + i32.store + 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 + i32.store + local.get $0 i32.load offset=12 - i32.const 3 + i32.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 127 + i32.const 1552 + i32.const 222 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 $std/array/internalCapacity - i32.const 3 + i32.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 128 + i32.const 1552 + i32.const 223 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#__get - i32.const 43 + call $~lib/array/Array#__get + i32.const 42 i32.ne if i32.const 0 - i32.const 1344 - i32.const 129 + i32.const 1552 + i32.const 224 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 1 - call $~lib/array/Array#__get - i32.const 44 + call $~lib/array/Array#__get + i32.const 43 i32.ne if i32.const 0 - i32.const 1344 - i32.const 130 + i32.const 1552 + i32.const 225 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#__get - i32.const 45 + call $~lib/array/Array#__get + i32.const 44 i32.ne if i32.const 0 - i32.const 1344 - i32.const 131 + i32.const 1552 + i32.const 226 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 2 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 0 - call $std/array/Ref#constructor i32.store local.get $0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $1 - i32.const 0 - call $~lib/array/Array#set:length - local.get $1 - i32.load offset=12 + i32.const 3 + call $~lib/array/Array#__get + i32.const 45 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 139 + i32.const 1552 + i32.const 227 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - call $~lib/array/Array#constructor - local.set $5 + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.get $5 - call $~lib/array/Array#concat - local.set $1 + local.tee $0 + i32.store + local.get $0 + i32.const 41 + call $~lib/array/Array#unshift + drop + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 148 + i32.const 1552 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.load offset=12 - i32.const 3 + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity + i32.const 5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 149 + i32.const 1552 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=12 - i32.const 3 + 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 + i32.const 41 i32.ne if i32.const 0 - i32.const 1344 - i32.const 150 + i32.const 1552 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/array/Array#concat - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 i32.ne if i32.const 0 - i32.const 1344 - i32.const 153 + i32.const 1552 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable - end - local.get $1 - i32.const 0 - call $~lib/array/Array#__get + 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#__get i32.const 43 i32.ne if i32.const 0 - i32.const 1344 - i32.const 155 + i32.const 1552 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - call $~lib/array/Array#__get + 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#__get i32.const 44 i32.ne if i32.const 0 - i32.const 1344 - i32.const 156 + i32.const 1552 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 - call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 4 + call $~lib/array/Array#__get i32.const 45 i32.ne if i32.const 0 - i32.const 1344 - i32.const 157 + i32.const 1552 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - i32.const 46 - call $~lib/array/Array#push - drop - local.get $5 - i32.const 47 - call $~lib/array/Array#push - drop + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - local.get $5 - call $~lib/array/Array#concat - local.set $3 + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.lt_s + if + i32.const 2176 + i32.const 1104 + i32.const 315 + i32.const 21 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.load local.get $1 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 + 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 $5 + call $~lib/memory/memory.copy + local.get $1 + local.get $5 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $2 + i32.store offset=12 + global.set $std/array/i + global.get $std/array/i + i32.const 41 i32.ne if i32.const 0 - i32.const 1344 - i32.const 164 + i32.const 1552 + i32.const 246 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + 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.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 165 + i32.const 1552 + i32.const 247 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity i32.const 5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 166 + i32.const 1552 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + 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 - i32.const 43 + call $~lib/array/Array#__get + i32.const 42 i32.ne if i32.const 0 - i32.const 1344 - i32.const 167 + i32.const 1552 + i32.const 249 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + 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#__get - i32.const 44 + call $~lib/array/Array#__get + i32.const 43 i32.ne if i32.const 0 - i32.const 1344 - i32.const 168 + i32.const 1552 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + 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#__get - i32.const 45 + call $~lib/array/Array#__get + i32.const 44 i32.ne if i32.const 0 - i32.const 1344 - i32.const 169 + i32.const 1552 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + 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#__get - i32.const 46 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 170 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 + call $~lib/array/Array#__get + i32.const 45 i32.ne if i32.const 0 - i32.const 1344 - i32.const 171 + i32.const 1552 + i32.const 252 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + 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 - local.get $3 - i32.load offset=12 - i32.const 4 + global.set $std/array/i + global.get $std/array/i + i32.const 45 i32.ne if i32.const 0 - i32.const 1344 - i32.const 174 + i32.const 1552 + i32.const 256 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 2112 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 + 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 3 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 182 + i32.const 1552 + i32.const 257 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $~lib/array/Array#concat - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=12 - i32.const 3 + local.tee $0 + i32.store + local.get $0 + call $std/array/internalCapacity + i32.const 5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 184 + i32.const 1552 + i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.load offset=12 + 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 + i32.const 42 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 185 + i32.const 1552 + i32.const 259 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2144 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $23 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2192 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $24 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 192 + i32.const 1552 + i32.const 260 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2240 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $25 - i32.const 5 i32.const 2 - i32.const 3 - i32.const 2288 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 44 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 194 + i32.const 1552 + i32.const 261 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2336 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $1 + i32.store + local.get $1 + i32.load offset=12 + local.tee $2 + if + local.get $1 + i32.load offset=4 + local.set $0 + local.get $1 + i32.load offset=4 + local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.set $2 + local.get $0 + local.get $1 + i32.load + i32.store + local.get $1 + local.get $2 + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.sub + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 - i32.const 2 + i32.store + local.get $0 + i32.load offset=12 i32.const 3 - i32.const 2384 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 196 + i32.const 1552 + i32.const 269 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2432 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $20 + i32.store + local.get $0 + call $std/array/internalCapacity i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2480 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 198 + i32.const 1552 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2528 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 + i32.store + local.get $0 i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $15 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2576 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 44 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 200 + i32.const 1552 + i32.const 271 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2624 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 + i32.store + local.get $0 i32.const 1 - i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $17 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2672 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 43 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 202 + i32.const 1552 + i32.const 272 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2720 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $11 - i32.const 5 + i32.store + local.get $0 i32.const 2 - i32.const 3 - i32.const 2768 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.const 42 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 204 + i32.const 1552 + i32.const 273 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2816 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release + i32.const 43 + 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 44 + 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 44 i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $13 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2864 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i if i32.const 0 - i32.const 1344 - i32.const 206 + i32.const 1552 + i32.const 283 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2912 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + 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 42 i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $8 - i32.const 5 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i i32.const 2 - i32.const 3 - i32.const 2960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 208 + i32.const 1552 + i32.const 286 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3008 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $2 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3056 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 + i32.store + local.get $0 + i32.const 45 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 210 + i32.const 1552 + i32.const 289 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3104 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const -4 - i32.const -3 + i32.store + local.get $0 + i32.const 43 + i32.const 100 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3152 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 212 + i32.const 1552 + i32.const 292 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3200 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $22 - local.get $0 - call $~lib/rt/pure/__release - local.get $22 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/array/Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3248 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.store + local.get $0 + 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.ne if i32.const 0 - i32.const 1344 - i32.const 214 + i32.const 1552 + i32.const 295 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 4 + local.tee $0 + i32.store + local.get $0 + 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.ne if i32.const 0 - i32.const 1344 - i32.const 222 + i32.const 1552 + i32.const 298 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $std/array/internalCapacity - i32.const 4 + local.tee $0 + i32.store + local.get $0 + 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.ne if i32.const 0 - i32.const 1344 - i32.const 223 + i32.const 1552 + i32.const 301 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 43 i32.const 0 - call $~lib/array/Array#__get - i32.const 42 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 224 + i32.const 1552 + i32.const 304 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get + local.tee $0 + i32.store + local.get $0 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.ne if i32.const 0 - i32.const 1344 - i32.const 225 + i32.const 1552 + i32.const 307 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 43 i32.const 2 - call $~lib/array/Array#__get - i32.const 44 + call $~lib/array/Array#indexOf + global.set $std/array/i + global.get $std/array/i + i32.const 3 i32.ne if i32.const 0 - i32.const 1344 - i32.const 226 + i32.const 1552 + i32.const 310 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 + i32.const 1 + i32.const 2 + i32.const 9 + i32.const 3440 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 0 + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|020 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f32.const nan:0x400000 + f32.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|020 + end + end + i32.const -1 + local.set $1 + end + local.get $1 + i32.const -1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 227 + i32.const 1552 + i32.const 312 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - i32.load offset=12 - i32.const 5 - i32.ne - if + i32.const 1 + i32.const 3 + i32.const 10 + i32.const 3472 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.set $1 + block $__inlined_func$~lib/array/Array#indexOf + local.get $0 + i32.load offset=12 + local.tee $2 i32.const 0 - i32.const 1344 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.le_s + i32.const 1 + local.get $2 + select + if + i32.const -1 + local.set $1 + br $__inlined_func$~lib/array/Array#indexOf + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|021 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + f64.const nan:0x8000000000000 + f64.eq + br_if $__inlined_func$~lib/array/Array#indexOf + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|021 + end + end + i32.const -1 + local.set $1 end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + local.get $1 + i32.const -1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 232 + i32.const 1552 + i32.const 313 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 44 i32.const 0 - call $~lib/array/Array#__get - i32.const 41 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 233 + i32.const 1552 + i32.const 320 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get + local.tee $0 + i32.store + local.get $0 i32.const 42 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 234 + i32.const 1552 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 43 - i32.ne + local.tee $0 + i32.store + local.get $0 + i32.const 45 + i32.const 0 + call $~lib/array/Array#includes if i32.const 0 - i32.const 1344 - i32.const 235 + i32.const 1552 + i32.const 326 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 44 - i32.ne + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 100 + call $~lib/array/Array#includes if i32.const 0 - i32.const 1344 - i32.const 236 + i32.const 1552 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -100 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 237 + i32.const 1552 + i32.const 332 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $~lib/array/Array#shift - global.set $std/array/i - global.get $std/array/i - i32.const 41 + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -2 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 246 + i32.const 1552 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.load offset=12 - i32.const 4 + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const -4 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 247 + i32.const 1552 + i32.const 338 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 0 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 248 + i32.const 1552 + i32.const 341 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 + local.tee $0 + i32.store + local.get $0 + i32.const 43 + i32.const 1 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 249 + i32.const 1552 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get + local.tee $0 + i32.store + local.get $0 i32.const 43 + i32.const 2 + call $~lib/array/Array#includes + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 250 + i32.const 1552 + i32.const 347 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + i32.const 1 i32.const 2 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if + i32.const 9 + i32.const 3504 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/array/Array#includes (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $1 + i32.load offset=12 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|022 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $1 + local.get $0 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $9 + local.get $9 + f32.ne + local.get $9 + f32.const nan:0x400000 + f32.eq + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|022 + end + end i32.const 0 - i32.const 1344 - i32.const 251 - i32.const 3 - call $~lib/builtins/abort - unreachable end - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 - i32.ne + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 252 + i32.const 1552 + i32.const 349 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - global.set $std/array/i - global.get $std/array/i - i32.const 45 - i32.ne + i32.const 1 + i32.const 3 + i32.const 10 + i32.const 3536 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/array/Array#includes (result i32) + i32.const 0 + local.set $0 + i32.const 0 + local.get $1 + i32.load offset=12 + local.tee $4 + i32.const 0 + i32.le_s + i32.const 1 + local.get $4 + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $1 + i32.load offset=4 + local.set $1 + loop $while-continue|023 + local.get $0 + local.get $4 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $1 + local.get $0 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $10 + local.get $10 + f64.ne + local.get $10 + f64.const nan:0x8000000000000 + f64.eq + select + br_if $__inlined_func$~lib/array/Array#includes + drop + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $while-continue|023 + end + end + i32.const 0 + end + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 256 + i32.const 1552 + i32.const 350 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 1 + i32.const 1 + call $~lib/array/Array#splice + drop + 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 3 + i32.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 257 + i32.const 1552 + i32.const 354 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 $std/array/internalCapacity i32.const 5 i32.ne if i32.const 0 - i32.const 1344 - i32.const 258 + i32.const 1552 + i32.const 355 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#__get - i32.const 42 + call $~lib/array/Array#__get + i32.const 44 i32.ne if i32.const 0 - i32.const 1344 - i32.const 259 + i32.const 1552 + i32.const 356 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 1 - call $~lib/array/Array#__get - i32.const 43 + call $~lib/array/Array#__get + i32.const 42 i32.ne if i32.const 0 - i32.const 1344 - i32.const 260 + i32.const 1552 + i32.const 357 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 - call $~lib/array/Array#__get - i32.const 44 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 261 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.load offset=12 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 269 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $std/array/internalCapacity + i32.const 3568 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 5 - i32.ne + i32.const 2 + i32.const 3 + i32.const 3616 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 270 + i32.const 1552 + i32.const 364 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.ne + i32.const 2 + i32.const 3 + i32.const 3664 + 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 1344 - i32.const 271 + i32.const 1552 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 43 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3696 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 3744 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 272 + i32.const 1552 + i32.const 368 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 i32.const 2 - call $~lib/array/Array#__get - i32.const 42 - i32.ne + i32.const 3 + i32.const 3776 + 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 1344 - i32.const 273 + i32.const 1552 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3824 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 3872 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 283 + i32.const 1552 + i32.const 372 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store i32.const 2 - i32.ne + i32.const 2 + i32.const 3 + i32.const 3904 + 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 1344 - i32.const 286 + i32.const 1552 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 45 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 3936 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 3984 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 289 + i32.const 1552 + i32.const 376 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - 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.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 4016 + 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 1344 - i32.const 292 + i32.const 1552 + i32.const 377 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4048 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 0 i32.const 1 - i32.ne + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4096 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 295 + i32.const 1552 + i32.const 380 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 i32.const 3 - i32.ne + i32.const 4128 + 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 1344 - i32.const 298 + i32.const 1552 + i32.const 381 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4176 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -1 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 1 - i32.ne + i32.const 2 + i32.const 3 + i32.const 4224 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 301 + i32.const 1552 + i32.const 384 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 4256 + 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 $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.ne + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 304 + i32.const 1552 + i32.const 385 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - 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.ne + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4304 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -2 + i32.const 2147483647 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 4352 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 307 + i32.const 1552 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i i32.const 3 - i32.ne + i32.const 4384 + 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 1344 - i32.const 310 + i32.const 1552 + i32.const 389 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 4416 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -2 + i32.const 1 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 1 i32.const 2 - i32.const 9 - i32.const 3296 + i32.const 3 + i32.const 4464 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - local.set $0 - i32.const 0 local.set $2 - block $__inlined_func$~lib/array/Array#indexOf - local.get $5 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - i32.const 1 - local.get $1 - select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - f32.const nan:0x400000 - f32.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - i32.const -1 - local.set $2 - end + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const -1 - i32.ne + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 312 + i32.const 1552 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 i32.const 3 - i32.const 10 - i32.const 3328 + i32.const 4496 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - local.set $0 + 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 - local.set $2 - block $__inlined_func$~lib/array/Array#indexOf - local.get $6 - i32.load offset=12 - local.tee $1 + call $std/array/isArraysEqual + i32.eqz + if i32.const 0 - i32.le_s - i32.const 1 - local.get $1 - select - if - i32.const -1 - local.set $2 - br $__inlined_func$~lib/array/Array#indexOf - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|021 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - f64.const nan:0x8000000000000 - f64.eq - br_if $__inlined_func$~lib/array/Array#indexOf - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|021 - end - end - i32.const -1 - local.set $2 + i32.const 1552 + i32.const 393 + 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 4544 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -7 + i32.const 1 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4592 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const -1 - i32.ne + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 313 + i32.const 1552 + i32.const 396 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 4624 + 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 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 320 + i32.const 1552 + i32.const 397 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 42 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4672 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const -2 + i32.const -1 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - call $~lib/array/Array#indexOf + i32.const 2 + i32.const 3 + i32.const 4720 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 i32.const 0 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 323 + i32.const 1552 + i32.const 400 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4752 + 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 - i32.ge_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 326 + i32.const 1552 + i32.const 401 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4800 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 1 + i32.const -2 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - i32.ge_s + i32.const 2 + i32.const 3 + i32.const 4848 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 329 + i32.const 1552 + i32.const 404 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4880 + 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 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 332 + i32.const 1552 + i32.const 405 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 4928 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 4 i32.const 0 - i32.lt_s + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 4976 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 335 + i32.const 1552 + i32.const 408 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 5008 + 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 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 338 + i32.const 1552 + i32.const 409 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 5056 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 7 i32.const 0 - call $~lib/array/Array#indexOf + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - i32.lt_s + i32.const 2 + i32.const 3 + i32.const 5104 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 341 + i32.const 1552 + i32.const 412 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 5136 + 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 - i32.lt_s + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 344 + i32.const 1552 + i32.const 413 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - call $~lib/array/Array#indexOf + i32.const 3 + i32.const 5184 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.const 7 + i32.const 5 + call $~lib/array/Array#splice + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - i32.lt_s + i32.const 2 + i32.const 3 + i32.const 5232 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 347 + i32.const 1552 + i32.const 416 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $2 - i32.const 0 - i32.const 1 - i32.const 2 - i32.const 9 - i32.const 3360 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - i32.const 1 - local.get $1 - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $5 - i32.load offset=4 - local.set $0 - loop $while-continue|031 - local.get $1 - local.get $2 - i32.gt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $26 - local.get $26 - f32.ne - local.get $26 - f32.const nan:0x400000 - f32.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|031 - end - end - i32.const 0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 5264 + 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 1344 - i32.const 349 + i32.const 1552 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes (result i32) - i32.const 0 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 8 + i32.const 5312 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + if i32.const 0 - i32.const 1 + i32.const 1552 + i32.const 421 i32.const 3 - i32.const 10 - i32.const 3392 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.load offset=12 - local.tee $1 - i32.const 0 - i32.le_s - i32.const 1 - local.get $1 - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $6 - i32.load offset=4 - local.set $0 - loop $while-continue|032 - local.get $1 - local.get $2 - i32.gt_s - if - i32.const 1 - i32.const 1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $27 - local.get $27 - f64.ne - local.get $27 - f64.const nan:0x8000000000000 - f64.eq - select - br_if $__inlined_func$~lib/array/Array#includes - drop - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|032 - end - end - i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 - i32.const 1344 - i32.const 350 + i32.const 1552 + i32.const 422 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 8 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=28 + local.get $0 + i32.const 0 i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 i32.const 1 - call $~lib/array/Array#splice - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.load offset=12 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 2 + i32.const 3 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 3 + i32.const 4 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 i32.const 4 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 2 i32.ne if i32.const 0 - i32.const 1344 - i32.const 354 + i32.const 1552 + i32.const 427 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.load + i32.const 3 i32.ne if i32.const 0 - i32.const 1344 - i32.const 355 + i32.const 1552 + i32.const 428 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.load + i32.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 356 + i32.const 1552 + i32.const 429 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 i32.ne if i32.const 0 - i32.const 1344 - i32.const 357 + i32.const 1552 + i32.const 431 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3424 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $37 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3472 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $38 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get + i32.load + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 364 + i32.const 1552 + i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + i32.load i32.const 2 - i32.const 3 - i32.const 3520 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $39 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 365 + i32.const 1552 + i32.const 433 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 2 + call $~lib/array/Array#__get + i32.load + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1552 + 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 3 - i32.const 3552 + i32.const 2 + i32.const 11 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=24 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 0 i32.const 0 - call $~lib/array/Array#splice - local.tee $40 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 i32.const 0 + call $~lib/array/Array#__uset + local.get $0 i32.const 2 - i32.const 3 - i32.const 3600 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $41 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 368 + i32.const 1552 + i32.const 439 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3632 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $42 i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + local.tee $1 + i32.store offset=32 + local.get $1 i32.eqz if - i32.const 0 - i32.const 1344 - i32.const 369 - i32.const 3 + i32.const 5472 + i32.const 1552 + i32.const 440 + i32.const 10 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $43 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3728 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.load + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 372 + i32.const 1552 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 i32.const 2 - i32.const 3 - i32.const 3760 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $45 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 373 + i32.const 1552 + i32.const 442 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.tee $46 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 3840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $47 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - call $std/array/isArraysEqual - i32.eqz + call $~lib/array/Array#__get if i32.const 0 - i32.const 1344 - i32.const 376 + i32.const 1552 + i32.const 443 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 3872 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $48 - i32.const 0 - call $std/array/isArraysEqual + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.tee $0 + i32.store offset=32 + local.get $0 i32.eqz + if + i32.const 5472 + i32.const 1552 + i32.const 444 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load + i32.const 2 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 377 + i32.const 1552 + i32.const 444 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3904 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 0 i32.const 0 + call $~lib/array/Array#__set + 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#splice - local.tee $49 i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 + i32.const 2 i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + local.get $0 i32.const 3 - i32.const 3952 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $50 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5536 + i32.store offset=8 + local.get $0 + i32.const 5536 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i if i32.const 0 - i32.const 1344 - i32.const 380 + i32.const 1552 + i32.const 457 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3984 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $51 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5568 + i32.store offset=8 + local.get $0 + i32.const 5568 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 381 + i32.const 1552 + i32.const 460 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4032 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5600 + i32.store offset=8 + local.get $0 + i32.const 5600 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i i32.const -1 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $52 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $53 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 384 + i32.const 1552 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4112 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $54 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5632 + i32.store offset=8 + local.get $0 + i32.const 5632 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 385 + i32.const 1552 + i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4160 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const 2147483647 - call $~lib/array/Array#splice - local.tee $55 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 4208 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $56 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + 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 1344 - i32.const 388 + i32.const 1552 + i32.const 472 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 4240 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $57 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store offset=8 + local.get $0 + i32.const 5664 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.eq if i32.const 0 - i32.const 1344 - i32.const 389 + i32.const 1552 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $58 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4320 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $30 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5696 + i32.store offset=8 + local.get $0 + i32.const 5696 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i + i32.const -1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 392 + i32.const 1552 + i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 + 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.const 3 - i32.const 4352 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 393 + i32.const 1552 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + 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 - i32.const 4400 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $32 + 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 5728 + i32.store offset=8 + local.get $0 + i32.const 5728 + call $~lib/array/Array#every i32.const 1 - i32.const 2 - i32.const 3 - i32.const 4448 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $22 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 396 + i32.const 1552 + i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 4480 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5760 + i32.store offset=8 + local.get $0 + i32.const 5760 + call $~lib/array/Array#every if i32.const 0 - i32.const 1344 - i32.const 397 + i32.const 1552 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4528 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $24 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4576 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5792 + i32.store offset=8 + local.get $0 + i32.const 5792 + call $~lib/array/Array#every + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 400 + i32.const 1552 + i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4608 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + 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 1344 - i32.const 401 + i32.const 1552 + i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4656 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $18 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4704 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store offset=8 + local.get $0 + i32.const 5824 + call $~lib/array/Array#every if i32.const 0 - i32.const 1344 - i32.const 404 + i32.const 1552 + i32.const 512 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4736 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $20 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5856 + i32.store offset=8 + local.get $0 + i32.const 5856 + call $~lib/array/Array#every + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 405 + i32.const 1552 + i32.const 525 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4784 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 4 - i32.const 0 - call $~lib/array/Array#splice - local.tee $12 - i32.const 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 2 - i32.const 3 - i32.const 4832 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.ne if i32.const 0 - i32.const 1344 - i32.const 408 + i32.const 1552 + i32.const 526 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 5 + 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 - i32.const 4864 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $16 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + 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 5888 + i32.store offset=8 + local.get $0 + i32.const 5888 + call $~lib/array/Array#some + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 409 + i32.const 1552 + i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4912 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5920 + i32.store offset=8 local.get $0 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $17 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.const 5920 + call $~lib/array/Array#some if i32.const 0 - i32.const 1344 - i32.const 412 + i32.const 1552 + i32.const 539 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 + global.get $~lib/memory/__stack_pointer + i32.const 5952 + i32.store offset=8 local.get $0 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4992 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.const 5952 + call $~lib/array/Array#some if i32.const 0 - i32.const 1344 - i32.const 413 + i32.const 1552 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5040 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $35 + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $35 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $9 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 5088 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.load offset=12 + i32.const 8 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 416 + i32.const 1552 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $35 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 5120 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5984 + i32.store offset=8 + local.get $0 + i32.const 5984 + call $~lib/array/Array#some + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 417 + i32.const 1552 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - i32.const 8 - i32.const 5168 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 1 - call $~lib/array/Array#splice + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.load offset=12 + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6016 + i32.store offset=8 + local.get $0 + i32.const 6016 + call $~lib/array/Array#some if i32.const 0 - i32.const 1344 - i32.const 421 + i32.const 1552 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + 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 1344 - i32.const 422 + i32.const 1552 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.load offset=4 - local.tee $6 - i32.const 1 - call $std/array/Ref#constructor + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.tee $0 i32.store - local.get $6 + local.get $0 i32.const 2 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $6 + 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 $std/array/Ref#constructor + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6048 i32.store offset=8 - local.get $6 - i32.const 4 - call $std/array/Ref#constructor - i32.store offset=12 - local.get $6 - i32.const 5 - call $std/array/Ref#constructor - i32.store offset=16 - local.get $1 - call $~lib/rt/pure/__release - local.get $28 - i32.const 2 - call $~lib/array/Array#splice - local.set $34 local.get $0 - call $~lib/rt/pure/__release - local.get $34 - i32.load offset=12 - i32.const 2 + i32.const 6048 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 427 + i32.const 1552 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $34 i32.const 0 - call $~lib/array/Array#__get - local.tee $8 - i32.load - i32.const 3 + 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 6080 + i32.store offset=8 + local.get $0 + i32.const 6080 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 428 + i32.const 1552 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $34 - i32.const 1 - call $~lib/array/Array#__get - local.tee $2 - i32.load - i32.const 4 + 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 1344 - i32.const 429 + i32.const 1552 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $28 - i32.load offset=12 - i32.const 3 + 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 6112 + i32.store offset=8 + local.get $0 + i32.const 6112 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 i32.ne if i32.const 0 - i32.const 1344 - i32.const 431 + i32.const 1552 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $28 + 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 - call $~lib/array/Array#__get - local.tee $3 - i32.load + 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 6144 + i32.store offset=8 + local.get $0 + i32.const 6144 + call $~lib/array/Array#forEach + global.get $std/array/i i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 432 + i32.const 1552 + i32.const 602 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $28 - i32.const 1 - call $~lib/array/Array#__get - local.tee $5 - i32.load + 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 1344 - i32.const 433 + i32.const 1552 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $28 + 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#__get - local.tee $6 - i32.load - i32.const 5 + 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 6176 + i32.store offset=8 + local.get $0 + i32.const 6176 + call $~lib/array/Array#forEach + 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 1344 - i32.const 434 + i32.const 1552 + i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 - i32.const 11 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + local.set $0 + loop $for-loop|0 + 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|0 + end + end + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr local.tee $0 - i32.load offset=4 - local.tee $1 - i32.const 1 - call $std/array/Ref#constructor i32.store - local.get $1 + local.get $0 i32.const 0 - i32.store offset=4 - local.get $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 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 $std/array/Ref#constructor - i32.store offset=8 - 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 - local.tee $4 + 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 6208 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load offset=12 - local.tee $33 - local.get $33 + local.tee $2 + i32.const 2 + i32.const 9 i32.const 0 - i32.gt_s - select - local.set $21 - i32.const 1 - local.get $33 - local.get $21 - i32.sub + call $~lib/rt/__newArray local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $5 + loop $for-loop|040 + local.get $3 + local.get $2 + local.get $1 + i32.load offset=12 + local.tee $6 + local.get $2 + local.get $6 + i32.lt_s + select + i32.lt_s + if + local.get $3 + i32.const 2 + i32.shl + local.tee $6 + local.get $1 + i32.load offset=4 + i32.add + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $5 + local.get $6 + i32.add + local.get $7 + local.get $3 + local.get $1 + i32.const 6208 + i32.load + call_indirect (type $i32_i32_i32_=>_f32) + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|040 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.gt_s - select - local.tee $0 - i32.const 0 + i32.store local.get $0 - i32.const 0 - i32.gt_s - select - local.tee $29 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $36 - i32.load offset=4 - local.get $4 - i32.load offset=4 - local.tee $1 - local.get $21 - i32.const 2 - i32.shl - i32.add - local.tee $0 - local.get $29 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $33 - local.get $21 - local.get $29 - i32.add - local.tee $21 - i32.ne - if - local.get $0 - local.get $1 - local.get $21 - i32.const 2 - i32.shl - i32.add - local.get $33 - local.get $21 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $4 - local.get $33 - local.get $29 - i32.sub - i32.store offset=12 - local.get $36 i32.load offset=12 - i32.const 1 + i32.const 4 i32.ne if i32.const 0 - i32.const 1344 - i32.const 439 + i32.const 1552 + i32.const 642 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 - call $~lib/array/Array#__get - local.tee $29 - local.get $29 - i32.eqz + call $~lib/array/Array#__get + 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 + f32.ne if - i32.const 5328 - i32.const 1344 - i32.const 440 - i32.const 10 + i32.const 0 + i32.const 1552 + i32.const 643 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.load - i32.const 1 + 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 6240 + i32.store offset=8 + local.get $0 + i32.const 6240 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 440 + i32.const 1552 + i32.const 652 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 + 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.const 8 i32.ne if i32.const 0 - i32.const 1344 - i32.const 442 + i32.const 1552 + i32.const 653 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 i32.const 0 - call $~lib/array/Array#__get - local.tee $1 - if - i32.const 0 - i32.const 1344 - i32.const 443 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 1 - call $~lib/array/Array#__get - local.tee $21 - local.get $21 - i32.eqz - if - i32.const 5328 - i32.const 1344 - i32.const 444 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 2 + 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 6272 + i32.store offset=8 + local.get $0 + i32.const 6272 + call $~lib/array/Array#map + global.get $std/array/i + i32.const 406 i32.ne if i32.const 0 - i32.const 1344 - i32.const 444 + i32.const 1552 + i32.const 660 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $35 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 1 - i32.const 1 - call $~lib/array/Array#__set + 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 - i32.const 2 - i32.const 2 - call $~lib/array/Array#__set + 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 - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set + 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 - i32.const 5392 - call $~lib/array/Array#findIndex + 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 6304 + i32.store offset=8 + local.get $0 + i32.const 6304 + call $~lib/array/Array#map global.get $std/array/i + i32.const 1 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 457 + i32.const 1552 + i32.const 675 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5424 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 1 + local.tee $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 2 i32.ne if i32.const 0 - i32.const 1344 - i32.const 460 + i32.const 1552 + i32.const 676 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5456 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + 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 6336 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 6336 + call $~lib/array/Array#filter + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 2 i32.ne if i32.const 0 - i32.const 1344 - i32.const 463 + i32.const 1552 + i32.const 686 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5488 - call $~lib/array/Array#findIndex + 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 6368 + i32.store offset=8 + local.get $0 + i32.const 6368 + call $~lib/array/Array#filter + drop global.get $std/array/i - i32.const -1 + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 471 + i32.const 1552 + i32.const 695 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 1344 - i32.const 472 + i32.const 1552 + i32.const 696 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5520 - call $~lib/array/Array#findIndex + 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 6400 + i32.store offset=8 + local.get $0 + i32.const 6400 + call $~lib/array/Array#filter + drop global.get $std/array/i - i32.const -1 - i32.eq + i32.const 406 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 474 + i32.const 1552 + i32.const 703 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 $std/array/arr - i32.const 5552 - call $~lib/array/Array#findIndex + 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 6432 + i32.store offset=8 + local.get $0 + i32.const 6432 + call $~lib/array/Array#filter + drop global.get $std/array/i - i32.const -1 + i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 487 + i32.const 1552 + i32.const 718 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 1344 - i32.const 488 + i32.const 1552 + i32.const 719 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 - i32.const 5584 - call $~lib/array/Array#every - i32.const 1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6464 + i32.store offset=8 + local.get $0 + i32.const 6464 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 498 + i32.const 1552 + i32.const 729 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5616 - call $~lib/array/Array#every + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6496 + i32.store offset=8 + local.get $0 + i32.const 6496 + i32.const 4 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 501 + i32.const 1552 + i32.const 733 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5648 - call $~lib/array/Array#every - i32.const 1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6528 + i32.store offset=8 + local.get $0 + i32.const 6528 + i32.const 0 + call $~lib/array/Array#reduce + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 736 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 6560 + i32.store offset=8 + local.get $0 + i32.const 6560 + i32.const 0 + call $~lib/array/Array#reduce + if + i32.const 0 + i32.const 1552 + i32.const 739 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 6592 + i32.store offset=8 + local.get $0 + i32.const 6592 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 509 + i32.const 1552 + i32.const 747 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 1344 - i32.const 510 + i32.const 1552 + i32.const 748 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5680 - call $~lib/array/Array#every + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6624 + i32.store offset=8 + local.get $0 + i32.const 6624 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 512 + i32.const 1552 + i32.const 750 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 - i32.const 5712 - call $~lib/array/Array#every + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6656 + i32.store offset=8 + local.get $0 + i32.const 6656 + i32.const 0 + call $~lib/array/Array#reduce + global.set $std/array/i + global.get $std/array/i i32.const 1 i32.ne if i32.const 0 - i32.const 1344 - i32.const 525 + i32.const 1552 + i32.const 763 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 1344 - i32.const 526 + i32.const 1552 + i32.const 764 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 - i32.const 5744 - call $~lib/array/Array#some - i32.const 1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6688 + i32.store offset=8 + local.get $0 + i32.const 6688 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 i32.ne if i32.const 0 - i32.const 1344 - i32.const 536 + i32.const 1552 + i32.const 774 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5776 - call $~lib/array/Array#some + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6720 + i32.store offset=8 + local.get $0 + i32.const 6720 + i32.const 4 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 539 + i32.const 1552 + i32.const 778 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 6752 + i32.store offset=8 + local.get $0 + i32.const 6752 + i32.const 0 + call $~lib/array/Array#reduceRight + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 781 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store offset=8 + local.get $0 + i32.const 6784 + i32.const 0 + call $~lib/array/Array#reduceRight + if + i32.const 0 + i32.const 1552 + i32.const 784 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5808 - call $~lib/array/Array#some + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6816 + i32.store offset=8 + local.get $0 + i32.const 6816 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 547 + i32.const 1552 + i32.const 792 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 1344 - i32.const 548 + i32.const 1552 + i32.const 793 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/array/arr - i32.const 5840 - call $~lib/array/Array#some - i32.const 1 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6848 + i32.store offset=8 + local.get $0 + i32.const 6848 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 10 i32.ne if i32.const 0 - i32.const 1344 - i32.const 550 + i32.const 1552 + i32.const 795 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 - i32.const 5872 - call $~lib/array/Array#some + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6880 + i32.store offset=8 + local.get $0 + i32.const 6880 + i32.const 0 + call $~lib/array/Array#reduceRight + global.set $std/array/i + global.get $std/array/i + i32.const 6 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 563 + i32.const 1552 + i32.const 808 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 1344 - i32.const 564 + i32.const 1552 + i32.const 809 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 + call $~lib/bindings/Math/random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 7152 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5904 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $~argumentsLength i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5936 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 7216 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 7216 + i32.store end - global.get $std/array/arr - i32.load offset=12 + local.get $1 + local.get $0 + call $~lib/array/Array#sort + 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 i32.const 8 - i32.ne + i32.const 2 + i32.const 9 + i32.const 7248 + 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 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 585 + i32.const 1552 + i32.const 898 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 + i32.const 10 + i32.const 7312 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 5968 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 406 - i32.ne + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of12 + block $0of13 + block $outOfRange4 + global.get $~argumentsLength + br_table $0of13 $1of12 $outOfRange4 + end + unreachable + end + i32.const 7408 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 7408 + i32.store + end + local.get $1 + local.get $0 + call $~lib/array/Array#sort + 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 + i32.const 8 + i32.const 3 + i32.const 10 + i32.const 7440 + 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 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 588 + i32.const 1552 + i32.const 902 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 7536 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6000 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 602 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of15 + block $0of16 + block $outOfRange7 + global.get $~argumentsLength + br_table $0of16 $1of15 $outOfRange7 + end + unreachable + end + i32.const 7584 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 7584 + i32.store end - global.get $std/array/arr - i32.load offset=12 + local.get $1 + local.get $0 + call $~lib/array/Array#sort + drop + 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 + i32.const 5 i32.const 2 - i32.ne + i32.const 3 + i32.const 7616 + 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 1344 - i32.const 603 + i32.const 1552 + i32.const 906 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 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push + i32.const 7 + i32.const 7664 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/array/Array#sort@varargs drop - global.get $std/array/arr - i32.const 6032 - call $~lib/array/Array#forEach - global.get $std/array/arr - i32.load offset=12 - i32.const 100 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 7744 + 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 1344 - i32.const 628 + i32.const 1552 + i32.const 910 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 100 - i32.lt_s - if - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr + i32.const 2 + i32.const 3 + i32.const 7792 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr i32.const 3 - call $~lib/array/Array#push - drop - i32.const 0 - local.set $5 - global.get $std/array/arr - local.tee $7 - i32.load offset=12 + i32.const 7824 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7856 + call $~lib/rt/__newArray local.tee $3 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 2 - i32.const 9 - i32.const 0 + i32.const 3 + i32.const 7888 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.load offset=4 - local.set $6 - loop $for-loop|050 - local.get $5 - local.get $3 - local.get $7 - i32.load offset=12 - local.tee $0 - local.get $0 - local.get $3 - i32.gt_s - select - i32.lt_s - if - local.get $5 - i32.const 2 - i32.shl - local.tee $1 - local.get $7 - i32.load offset=4 - i32.add - i32.load - local.set $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $6 - i32.add - local.get $0 - local.get $5 - local.get $7 - i32.const 6064 - i32.load - call_indirect (type $i32_i32_i32_=>_f32) - f32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|050 - end - end - i32.const 6064 - call $~lib/rt/pure/__release - local.get $8 - i32.load offset=12 + local.tee $2 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.ne + i32.const 2 + i32.const 3 + i32.const 7936 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $4 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $5 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $6 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $7 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $11 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 8016 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $1 + local.get $8 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 642 + i32.const 1552 + i32.const 930 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 0 - call $~lib/array/Array#__get - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + i32.const 2 + i32.const 2 + i32.const 3 + 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 $3 + local.get $1 i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 643 + i32.const 1552 + i32.const 933 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6096 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $2 + local.get $0 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 652 + i32.const 1552 + i32.const 936 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $4 + local.get $0 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 653 + i32.const 1552 + i32.const 939 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6128 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + local.get $0 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 660 + i32.const 1552 + i32.const 942 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6160 - call $~lib/array/Array#map - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $6 + local.get $0 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 675 + i32.const 1552 + i32.const 945 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $7 + local.get $0 + i32.const 4 + call $std/array/isArraysEqual + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 676 + i32.const 1552 + i32.const 948 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - local.get $8 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 6192 - call $~lib/array/Array#filter + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray local.tee $0 - i32.load offset=12 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8080 + i32.store offset=8 + local.get $0 + i32.const 8080 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8112 + i32.store offset=8 + local.get $0 + i32.const 8112 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8144 + i32.store offset=8 + local.get $1 + i32.const 8144 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8176 + i32.store offset=8 + local.get $1 + i32.const 8176 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + call $std/array/createReverseOrderedNestedArray + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8208 + i32.store offset=8 + local.get $0 + i32.const 8208 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + call $std/array/createReverseOrderedElementsArray + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8240 + i32.store offset=8 + local.get $0 + i32.const 8240 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 7 i32.const 2 - i32.ne - if + i32.const 27 + i32.const 8432 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 8480 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of18 + block $0of19 + block $outOfRange10 + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of19 $1of18 $outOfRange10 + end + unreachable + end + i32.const 8528 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8528 + i32.store + end + 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 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $3 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result 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.const 1344 - i32.const 686 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + local.set $7 + loop $for-loop|00 + local.get $2 + local.get $7 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $0 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + br $__inlined_func$std/array/isSorted<~lib/string/String|null> + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 end - i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6224 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 6 - i32.ne + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 695 + i32.const 1552 + i32.const 887 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.load offset=12 - i32.const 8 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + call $std/array/isArraysEqual<~lib/string/String|null> + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 696 + i32.const 1552 + i32.const 985 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 - global.set $std/array/i - global.get $std/array/arr - i32.const 6256 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 406 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 703 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop + local.set $0 + 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 - global.set $std/array/i - global.get $std/array/arr - i32.const 6288 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release - global.get $std/array/i - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 718 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 400 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $1 + i32.store + loop $for-loop|051 + local.get $0 + i32.const 400 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/math/NativeMath.random + f64.const 32 + f64.mul + i32.trunc_f64_s + call $std/array/createRandomString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $1 + 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|051 + end end - global.get $std/array/arr - i32.load offset=12 - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 719 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $1of111 + block $0of112 + block $outOfRange13 + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of112 $1of111 $outOfRange13 + end + unreachable + end + i32.const 8592 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8592 + i32.store end - global.get $std/array/arr + local.get $1 + 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 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop + i32.const 0 + i32.const 31 + i32.const 8624 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 6320 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=68 + global.get $~lib/memory/__stack_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#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 729 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 6352 + i32.store + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinBooleanArray + local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne + 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 8752 + i32.store offset=8 + local.get $0 + i32.const 8752 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 733 + i32.const 1552 + i32.const 994 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6384 - i32.const 0 - call $~lib/array/Array#reduce + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 8800 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=68 + local.get $0 + i32.const 8400 + 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 9152 + i32.store offset=8 + local.get $0 + i32.const 9152 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1344 - i32.const 736 + i32.const 1552 + i32.const 995 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6416 - i32.const 0 - call $~lib/array/Array#reduce + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 9184 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 9216 + i32.store offset=68 + local.get $0 + i32.const 9216 + 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 9152 + i32.store offset=8 + local.get $0 + i32.const 9152 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 739 + i32.const 1552 + i32.const 996 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6448 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 9248 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 9280 + i32.store offset=68 + local.get $0 + i32.const 9280 + 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 9312 + i32.store offset=8 + local.get $0 + i32.const 9312 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 747 + i32.const 1552 + i32.const 997 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + i32.const 6 + i32.const 3 + i32.const 10 + i32.const 9392 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 9472 + i32.store offset=68 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 i32.load offset=12 - i32.const 8 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 9472 + i32.store + call $~lib/util/string/joinFloatArray + 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 10640 + i32.store offset=8 + local.get $0 + i32.const 10640 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 748 + i32.const 1552 + i32.const 998 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6480 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 10784 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8400 + i32.store offset=68 + local.get $0 + i32.const 8400 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10752 + i32.store offset=8 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 750 + i32.const 1552 + i32.const 999 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6512 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3 + i32.const 2 + i32.const 11 i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=56 + local.get $0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 763 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.load offset=12 + i32.const 0 + call $~lib/array/Array#__uset + local.get $0 i32.const 2 - i32.ne + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=68 + 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 10880 + i32.store offset=8 + local.get $0 + i32.const 10880 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 764 + i32.const 1552 + i32.const 1001 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 6544 + i32.const 2 + i32.const 8 i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=64 + local.get $0 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=68 + 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 10976 + i32.store offset=8 + local.get $0 + i32.const 10976 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 774 + i32.const 1552 + i32.const 1004 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6576 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 11072 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 11104 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 11136 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne + i32.const 2 + i32.const 3 + i32.const 11168 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + 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 8400 + i32.store offset=8 + local.get $0 + i32.const 8400 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 778 + i32.const 1552 + i32.const 1014 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6608 - i32.const 0 - call $~lib/array/Array#reduceRight + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + 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 10752 + i32.store offset=8 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1344 - i32.const 781 + i32.const 1552 + i32.const 1015 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6640 - i32.const 0 - call $~lib/array/Array#reduceRight + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + 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 11216 + i32.store offset=8 + local.get $0 + i32.const 11216 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 784 + i32.const 1552 + i32.const 1016 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6672 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + 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 11248 + i32.store offset=8 + local.get $0 + i32.const 11248 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 792 + i32.const 1552 + i32.const 1017 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + i32.const 3 + i32.const 0 + i32.const 32 + i32.const 11296 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinIntegerArray + 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 i32.const 8 - i32.ne + 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 11328 + i32.store offset=8 + local.get $0 + i32.const 11328 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 793 + i32.const 1552 + i32.const 1019 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 6704 + i32.const 3 + i32.const 1 + i32.const 33 + i32.const 11360 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_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#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.ne + i32.store + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinIntegerArray + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11392 + i32.store offset=8 + local.get $0 + i32.const 11392 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 795 + i32.const 1552 + i32.const 1020 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 6736 + i32.const 3 + i32.const 3 + i32.const 34 + i32.const 11440 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_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#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.ne + i32.store + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinIntegerArray + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11488 + i32.store offset=8 + local.get $0 + i32.const 11488 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 808 + i32.const 1552 + i32.const 1021 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr + i32.const 4 + i32.const 3 + i32.const 35 + i32.const 11568 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinIntegerArray + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11632 + i32.store offset=8 + local.get $0 + i32.const 11632 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1344 - i32.const 809 + i32.const 1552 + i32.const 1022 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 7008 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $18 - i32.const 0 - global.set $~argumentsLength - local.get $18 - i32.const 7072 - call $~lib/array/Array#sort - i32.const 7072 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 8 - i32.const 2 - i32.const 9 - i32.const 7104 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $7 - i32.const 0 - local.set $3 - local.get $18 - call $~lib/rt/pure/__retain - local.set $5 - local.get $7 - call $~lib/rt/pure/__retain - local.set $6 - block $folding-inner1 - block $folding-inner0 - local.get $5 - i32.load offset=12 - local.tee $0 - local.get $6 - i32.load offset=12 - i32.ne - br_if $folding-inner0 - local.get $5 - local.get $6 - i32.eq - br_if $folding-inner1 - loop $for-loop|00 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.tee $26 - local.get $26 - f32.ne - if (result i32) - local.get $6 - local.get $3 - call $~lib/array/Array#__get - local.tee $26 - local.get $26 - f32.ne - else - i32.const 0 - end - i32.eqz - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.get $6 - local.get $3 - call $~lib/array/Array#__get - f32.ne - br_if $folding-inner0 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|00 - end - end - br $folding-inner1 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isArraysEqual - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 11744 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + 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 11792 + i32.store offset=8 + local.get $0 + i32.const 11792 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1026 + i32.const 3 + call $~lib/builtins/abort + unreachable end + i32.const 4 + i32.const 2 + i32.const 27 + i32.const 11904 + call $~lib/rt/__newArray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + 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 11952 + i32.store offset=8 + local.get $0 + i32.const 11952 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1344 - i32.const 898 + i32.const 1552 + i32.const 1027 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=64 + local.get $0 + i32.const 0 + i32.const 2 + i32.const 2 i32.const 3 - i32.const 10 - i32.const 7168 + i32.const 11984 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $19 + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 12016 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - global.set $~argumentsLength - local.get $19 - i32.const 7264 - call $~lib/array/Array#sort - i32.const 7264 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - block $__inlined_func$std/array/isArraysEqual (result i32) - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 7296 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $8 + i32.store + local.get $0 + i32.load offset=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12048 + i32.store offset=8 + local.get $0 + i32.const 12048 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - local.set $3 - local.get $19 - call $~lib/rt/pure/__retain - local.set $5 - local.get $8 - call $~lib/rt/pure/__retain - local.set $6 - block $folding-inner11 - block $folding-inner02 - local.get $5 - i32.load offset=12 - local.tee $0 - local.get $6 - i32.load offset=12 - i32.ne - br_if $folding-inner02 - local.get $5 - local.get $6 - i32.eq - br_if $folding-inner11 - loop $for-loop|03 - local.get $0 - local.get $3 - i32.gt_s - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.tee $27 - local.get $27 - f64.ne - if (result i32) - local.get $6 - local.get $3 - call $~lib/array/Array#__get - local.tee $27 - local.get $27 - f64.ne - else - i32.const 0 - end - i32.eqz - if - local.get $5 - local.get $3 - call $~lib/array/Array#__get - local.get $6 - local.get $3 - call $~lib/array/Array#__get - f64.ne - br_if $folding-inner02 - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|03 - end - end - br $folding-inner11 - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isArraysEqual - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 1 + i32.const 1552 + i32.const 1030 + 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 36 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=40 + local.get $0 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 12096 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 12128 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12048 + i32.store offset=8 + local.get $0 + i32.const 12048 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1344 - i32.const 902 + i32.const 1552 + i32.const 1033 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 2 - i32.const 3 - i32.const 7392 + i32.const 38 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 37 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $20 + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=12 + local.get $1 i32.const 0 - global.set $~argumentsLength - local.get $20 - i32.const 7440 - call $~lib/array/Array#sort - i32.const 7440 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $20 - i32.const 5 + i32.const 1 i32.const 2 - i32.const 3 - i32.const 7472 + i32.const 7 + i32.const 12160 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 + call $~lib/array/Array#__uset + local.get $0 i32.const 0 - call $std/array/isArraysEqual + local.get $1 + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store + call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + 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 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10752 + i32.store offset=8 + local.get $0 + i32.const 10752 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1344 - i32.const 906 + i32.const 1552 + i32.const 1036 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 2 - i32.const 7 - i32.const 7520 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $12 - i32.const 0 - global.set $~argumentsLength - local.get $12 + i32.const 22 i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $12 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 7600 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 910 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=40 + local.get $0 i32.const 0 + i32.const 1 i32.const 2 i32.const 3 - i32.const 7648 + i32.const 12192 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 + call $~lib/array/Array#__uset + local.get $0 i32.const 1 - i32.const 2 i32.const 3 - i32.const 7680 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $15 - i32.const 2 i32.const 2 i32.const 3 - i32.const 7712 + i32.const 12224 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $16 - i32.const 4 + call $~lib/array/Array#__uset + local.get $0 i32.const 2 i32.const 3 - i32.const 7744 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $17 - i32.const 4 i32.const 2 i32.const 3 - i32.const 7792 + i32.const 12256 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $14 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $10 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $11 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $9 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $13 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $3 - local.get $2 - call $std/array/assertSortedDefault - local.get $15 - call $std/array/assertSortedDefault - local.get $15 - i32.const 1 + call $~lib/array/Array#__uset + local.get $0 + i32.const 3 + i32.const 3 i32.const 2 i32.const 3 - i32.const 7872 + i32.const 12288 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array<~lib/array/Array>#flat local.tee $1 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=12 + i32.const 10 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 930 + i32.const 1552 + i32.const 1043 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $16 - call $std/array/assertSortedDefault - local.get $16 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + 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 1045 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=48 + local.get $0 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 27 + i32.const 12352 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 12448 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 i32.const 2 + i32.const 3 i32.const 2 + i32.const 27 + i32.const 12576 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 i32.const 3 - i32.const 7904 + i32.const 1 + i32.const 2 + i32.const 27 + i32.const 12640 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat local.tee $0 - i32.const 0 - call $std/array/isArraysEqual - i32.eqz + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 27 + i32.const 12672 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 8 + i32.ne if i32.const 0 - i32.const 1344 - i32.const 933 + i32.const 1552 + i32.const 1051 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $17 - call $std/array/assertSortedDefault - local.get $17 - local.get $14 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 936 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $std/array/assertSortedDefault - local.get $10 - local.get $14 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 939 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $1 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.load offset=12 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + local.get $1 + call $~lib/array/Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $2 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1552 + i32.const 1053 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|2 + end end - local.get $11 - call $std/array/assertSortedDefault - local.get $11 - local.get $14 - i32.const 4 - call $std/array/isArraysEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + i32.store offset=60 + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 12736 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.const 1 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 12768 + call $~lib/rt/__newArray + call $~lib/array/Array#__uset + local.get $0 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + 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 1344 - i32.const 942 + i32.const 1552 + i32.const 1057 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $9 - call $std/array/assertSortedDefault - local.get $9 - local.get $14 - i32.const 4 - call $std/array/isArraysEqual + i32.const 0 + global.set $std/array/arr + i32.const 29652 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|056 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|056 + 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 72 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/ArrayU32#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 - i32.const 0 - i32.const 1344 - i32.const 945 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $13 - call $std/array/assertSortedDefault - local.get $13 - local.get $14 - i32.const 4 - call $std/array/isArraysEqual + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - i32.const 0 - i32.const 1344 - i32.const 948 - i32.const 3 + 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 + 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 58 + i32.const 60 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 local.get $3 - call $std/array/assertSortedDefault - local.get $18 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release + call $~lib/memory/memory.fill + local.get $0 + local.get $2 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__release - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $1 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $0 - local.get $1 - i32.const 7936 - call $std/array/assertSorted local.get $1 - i32.const 7968 - call $std/array/assertSorted + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 8000 - call $std/array/assertSorted + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 8032 - call $std/array/assertSorted - local.get $1 - call $~lib/rt/pure/__release + ) + (func $std/array/ArrayU8#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 + 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 41 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - local.set $7 - i32.const 16 - i32.const 22 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $5 i32.const 0 - i32.store - local.get $5 + call $~lib/array/Array#set:buffer + local.get $0 i32.const 0 i32.store offset=4 - local.get $5 + local.get $0 i32.const 0 i32.store offset=8 - local.get $5 + local.get $0 i32.const 0 i32.store offset=12 - i32.const 8 + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 0 - call $~lib/rt/pure/__new - local.tee $0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 8 + local.get $1 call $~lib/memory/memory.fill local.get $0 - local.tee $1 - local.get $5 - i32.load - local.tee $6 - i32.ne - if + local.get $2 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#sort (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.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.le_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + local.get $2 + i32.const 2 + i32.eq + if + local.get $5 + i32.load8_u offset=1 + local.set $2 + local.get $5 + i32.load8_u + local.set $3 + i32.const 2 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $5 + local.get $3 + i32.store8 offset=1 + local.get $5 + local.get $2 + i32.store8 + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - i32.const 8 - i32.store offset=8 - local.get $5 - i32.const 2 - i32.store offset=12 - loop $for-loop|06 - local.get $7 - i32.const 2 + i32.store + local.get $2 + i32.const 256 i32.lt_s if - i32.const 1 - call $~lib/array/Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - local.get $7 - i32.sub - call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $5 + local.get $6 + i32.add + i32.load8_u + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $1 + local.get $5 + i32.add + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $8 + local.get $4 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $2 + i32.const 1 + i32.sub + local.set $1 + local.get $5 + local.get $2 + i32.const 1 + i32.add + i32.add + local.get $8 + i32.store8 + br $while-continue|1 + end + end + end + local.get $5 + local.get $1 + i32.const 1 + i32.add + i32.add + local.get $7 + i32.store8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $5 - local.get $7 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|06 + local.get $2 + local.get $1 + call $~lib/util/sort/weakHeapSort end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end - local.get $5 - i32.const 8064 - call $std/array/assertSorted<~lib/array/Array> - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - local.set $5 - i32.const 16 - i32.const 25 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array<~lib/string/String>#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 8 + 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 + local.get $0 + i32.load offset=12 local.tee $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 + i32.ge_s + i32.const 1 local.get $3 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return + end + local.get $2 i32.const 0 - i32.store offset=12 - i32.const 2048 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 0 - i32.const 2048 - call $~lib/memory/memory.fill - local.get $1 - local.set $0 - local.get $1 - local.get $3 - i32.load - local.tee $6 - i32.ne + i32.lt_s if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $6 - call $~lib/rt/pure/__release + 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 $3 local.get $0 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - local.get $3 - i32.const 2048 - i32.store offset=8 - local.get $3 - i32.const 512 - i32.store offset=12 - loop $for-loop|04 - local.get $5 - i32.const 512 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_s if - i32.const 4 - i32.const 24 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 511 - local.get $5 - i32.sub - i32.store - local.get $3 - local.get $5 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#__set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 i32.const 1 i32.add - local.set $5 - br $for-loop|04 + local.set $2 + br $while-continue|0 end end - local.get $3 - i32.const 8096 - call $std/array/assertSorted<~lib/array/Array> - local.get $3 - call $~lib/rt/pure/__release - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 8288 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $11 - i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/array/Array<~lib/string/String>#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 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 + i32.const 0 i32.const 2 - i32.const 27 - i32.const 8336 + i32.const 29 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $13 - i32.const 1 - global.set $~argumentsLength - block $__inlined_func$std/array/isSorted<~lib/string/String|null> (result i32) - local.get $11 - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 8384 - call $~lib/rt/pure/__retain - local.tee $5 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $6 - call $~lib/rt/pure/__retain - local.set $10 + local.tee $4 + i32.store + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $3 local.get $5 - call $~lib/rt/pure/__retain - local.set $7 - i32.const 1 - local.set $9 - local.get $10 + local.get $0 i32.load offset=12 - local.set $0 - loop $for-loop|05 + local.tee $2 + local.get $2 + local.get $5 + i32.gt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $9 - i32.gt_s + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $2 + 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 $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - local.get $10 - local.get $9 - i32.const 1 - i32.sub - call $~lib/array/Array#__get - local.set $8 - local.get $10 - local.get $9 - call $~lib/array/Array#__get - local.set $2 - i32.const 2 - global.set $~argumentsLength - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $7 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null> - end - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=16 + local.get $4 local.get $2 - call $~lib/rt/pure/__release - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|05 + 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 - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - i32.const 1 end - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#set:buffer + 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 0 - i32.const 1344 - i32.const 887 - i32.const 3 + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 8384 - call $~lib/rt/pure/__release - local.get $11 - local.get $13 - call $std/array/isArraysEqual<~lib/string/String|null> - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 985 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + call $~lib/array/Array#set:buffer + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $4 local.set $5 + local.get $4 i32.const 0 - i32.const 400 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - loop $for-loop|07 - local.get $5 - i32.const 400 - i32.lt_s - if - call $~lib/math/NativeMath.random - f64.const 32 - f64.mul - i32.trunc_f64_s - local.set $7 - i32.const 0 - local.set $9 - i32.const 8256 - local.set $3 - loop $for-loop|08 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $3 - local.tee $1 - local.tee $0 - block $__inlined_func$~lib/string/String#charAt (result i32) - i32.const 8256 - call $~lib/math/NativeMath.random - i32.const 6812 - i32.load - i32.const 1 - i32.shr_u - f64.convert_i32_s - f64.mul - f64.floor - i32.trunc_f64_s - local.tee $8 - i32.const 6812 - i32.load - i32.const 1 - i32.shr_u - i32.ge_u - br_if $__inlined_func$~lib/string/String#charAt - drop - i32.const 2 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $8 - i32.const 1 - i32.shl - i32.const 6816 - i32.add - i32.load16_u - i32.store16 - local.get $3 - call $~lib/rt/pure/__retain - end - local.tee $6 - call $~lib/string/String.__concat - local.tee $8 - local.tee $3 - local.get $0 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - end - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|08 - end - end - local.get $2 - local.get $5 - local.get $3 - call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|07 - end + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy end - i32.const 1 - global.set $~argumentsLength - local.get $2 - i32.const 8448 - call $std/array/assertSorted<~lib/array/Array> - i32.const 8448 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release + local.get $1 + local.tee $3 + i32.store + i32.const 16 local.get $2 - call $~lib/rt/pure/__release - i32.const 2 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 i32.const 0 - i32.const 31 - i32.const 8480 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $12 - i32.load offset=4 - local.get $12 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.load offset=12 - call $~lib/util/string/joinBooleanArray - local.set $16 - i32.const 8576 - call $~lib/rt/pure/__release - local.get $16 - i32.const 8608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 994 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 8656 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 8256 - call $~lib/array/Array#join - local.tee $9 - i32.const 9008 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 995 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 2 - i32.const 7 - i32.const 9040 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 9072 - call $~lib/array/Array#join - local.tee $7 - i32.const 9008 - call $~lib/string/String.__eq - i32.eqz + local.tee $3 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $4 + i32.add + local.tee $2 + i32.const 268435455 + i32.gt_u if - i32.const 0 - i32.const 1344 - i32.const 996 - i32.const 3 + i32.const 1056 + i32.const 1104 + i32.const 209 + i32.const 60 call $~lib/builtins/abort unreachable end - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 i32.const 3 - i32.const 9104 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - i32.const 9136 - call $~lib/array/Array#join local.tee $2 - i32.const 9168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 997 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 6 - i32.const 3 - i32.const 10 - i32.const 9248 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $15 + i32.store + local.get $2 i32.load offset=4 - local.get $15 - i32.load offset=12 - call $~lib/util/string/joinFloatArray - local.set $0 - i32.const 9328 - call $~lib/rt/pure/__release + local.tee $5 local.get $0 - i32.const 10496 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 998 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 + i32.load offset=4 + local.get $3 i32.const 2 - i32.const 27 - i32.const 10640 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + 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 + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 local.tee $3 - i32.const 8256 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $5 - i32.const 10608 - call $~lib/string/String.__eq - i32.eqz - if + 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 - i32.const 1344 - i32.const 999 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - i32.const 3 + local.tee $1 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 i32.const 2 - i32.const 11 + i32.const 3 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $17 + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $0 i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add local.tee $1 + i32.ne + if + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + end + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $std/array/Ref#constructor i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.load offset=12 + local.tee $3 local.get $1 i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $17 - call $~lib/array/Array#join - local.tee $6 - i32.const 10736 - call $~lib/string/String.__eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 i32.const 0 - i32.const 1344 - i32.const 1001 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $1 + i32.sub + local.tee $2 + local.get $2 i32.const 2 + i32.gt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - i32.load offset=4 - local.tee $1 - i32.const 0 - call $std/array/Ref#constructor + local.tee $4 i32.store - local.get $1 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $10 - call $~lib/array/Array#join - local.tee $1 - i32.const 10832 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1004 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $12 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release + local.get $4 + i32.load offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release + i32.load offset=4 + local.tee $5 local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 10928 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $14 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 10960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $18 i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 i32.const 2 - i32.const 3 - i32.const 10992 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $19 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 11024 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $20 - local.get $14 - i32.const 8576 - call $~lib/array/Array#join - local.tee $0 - local.get $0 - i32.const 8256 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1014 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $18 - i32.const 8576 - call $~lib/array/Array#join - local.tee $0 - local.set $16 - local.get $0 - i32.const 10608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1015 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $19 - i32.const 8576 - call $~lib/array/Array#join - local.tee $0 - local.set $17 - local.get $0 - i32.const 11072 - call $~lib/string/String.__eq - i32.eqz + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne if - i32.const 0 - i32.const 1344 - i32.const 1016 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end - local.get $20 - i32.const 8576 - call $~lib/array/Array#join - local.tee $0 - local.set $10 local.get $0 - i32.const 11104 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1017 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 + local.get $3 + local.get $2 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#splice (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - i32.const 11152 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $30 - i32.load offset=4 - local.get $30 + i32.store + i32.const 0 + local.get $0 i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $3 - i32.const 8576 - call $~lib/rt/pure/__release + local.tee $3 local.get $3 - i32.const 11184 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1019 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 + i32.const 0 + i32.gt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 1 - i32.const 33 - i32.const 11216 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.load offset=4 - local.get $31 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $12 - i32.const 8576 - call $~lib/rt/pure/__release - local.get $12 - i32.const 11248 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1020 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 34 - i32.const 11296 + local.get $3 + local.get $2 + i32.sub + local.tee $1 + local.get $1 + i32.const 1 + i32.gt_s + select + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 + i32.const 2 + i32.const 11 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $32 + local.tee $4 + i32.store + local.get $4 i32.load offset=4 - local.get $32 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $5 - i32.const 8576 - call $~lib/rt/pure/__release - local.get $5 - i32.const 11344 - call $~lib/string/String.__eq - i32.eqz + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $1 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add + local.tee $2 + i32.ne if - i32.const 0 - i32.const 1344 - i32.const 1021 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $5 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end + local.get $0 + local.get $3 + local.get $1 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 3 - i32.const 35 - i32.const 11424 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $22 - i32.load offset=4 - local.get $22 - i32.load offset=12 - call $~lib/util/string/joinIntegerArray - local.set $6 - i32.const 8576 - call $~lib/rt/pure/__release - local.get $6 - i32.const 11488 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1022 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (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 + call $~stack_check + 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 7712 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 7712 + i32.store end - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 11600 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 - i32.const 8576 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $0 - local.set $9 local.get $0 - i32.const 11648 - call $~lib/string/String.__eq + local.get $1 + call $~lib/array/Array#sort + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 1344 - i32.const 1026 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 4 - i32.const 2 - i32.const 27 - i32.const 11760 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 8576 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $0 - local.set $7 local.get $0 - i32.const 11808 - call $~lib/string/String.__eq - i32.eqz + i32.const 0 + call $~lib/array/Array#set:buffer + 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 0 - i32.const 1344 - i32.const 1027 - i32.const 3 + i32.const 1056 + i32.const 1104 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 2 - i32.const 2 - i32.const 22 + i32.shl + local.tee $3 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.load offset=4 - local.tee $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill local.get $0 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11872 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + local.get $2 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $2 i32.store offset=4 - local.get $23 - i32.load offset=4 - local.get $23 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $1 - i32.const 8576 - call $~lib/rt/pure/__release + local.get $0 + local.get $3 + i32.store offset=8 + local.get $0 local.get $1 - i32.const 11904 - call $~lib/string/String.__eq + 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/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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 1344 - i32.const 1030 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9024 + return end - i32.const 2 - i32.const 2 - i32.const 36 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $24 - i32.load offset=4 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + call $~lib/util/number/decimalCount32 + local.get $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 $0 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 11952 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store local.get $0 - i32.const 2 + local.get $2 + local.get $3 + call $~lib/util/number/utoa_dec_simple + 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 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 6 - i32.const 11984 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $24 - i32.load offset=4 - local.get $24 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.set $0 - i32.const 8576 - call $~lib/rt/pure/__release + i32.store local.get $0 - i32.const 11904 - call $~lib/string/String.__eq i32.eqz if - i32.const 0 - i32.const 1344 - i32.const 1033 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9024 + return end + local.get $0 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 - i32.const 2 - i32.const 38 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.load offset=4 + i32.shl i32.const 1 - i32.const 2 - i32.const 37 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $2 - i32.load offset=4 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 12016 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store - local.get $2 i32.store - local.get $25 - i32.load offset=4 - local.get $25 - i32.load offset=12 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.set $2 - i32.const 8576 - call $~lib/rt/pure/__release local.get $2 - i32.const 10608 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1344 - i32.const 1036 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $14 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/util/number/utoa_dec_simple + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/rt/pure/__release + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 22 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 12048 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12112 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12144 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=12 local.get $0 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $3 - i32.load offset=12 - i32.const 10 - i32.ne + i64.eqz if - i32.const 0 - i32.const 1344 - i32.const 1047 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 9024 + return end - i32.const 0 - local.set $7 - loop $for-loop|1 - local.get $7 - i32.const 10 - i32.lt_s - if - local.get $3 - local.get $7 - call $~lib/array/Array#__get - local.get $7 - i32.ne - if - i32.const 0 - i32.const 1344 - i32.const 1049 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|1 - end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $3 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.tee $4 + call $~lib/util/number/decimalCount32 + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $4 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 $1 + call $~lib/util/number/utoa_dec_simple end - i32.const 4 - i32.const 2 - i32.const 39 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12208 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store - local.get $1 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12304 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $1 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12432 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $1 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12496 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $5 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.set $8 - i32.const 8 - i32.const 2 - i32.const 27 - i32.const 12528 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 - local.get $8 - i32.load offset=12 - i32.const 8 - i32.ne + local.get $3 if - i32.const 0 - i32.const 1344 - i32.const 1055 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 45 + i32.store16 end - i32.const 0 - local.set $7 - loop $for-loop|2 - local.get $7 + 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/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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 + local.set $5 + local.get $0 + i32.load offset=4 + local.set $6 + loop $for-loop|0 local.get $2 - i32.load offset=12 + local.get $5 i32.lt_s if - local.get $8 - local.get $7 - call $~lib/array/Array#__get - local.tee $6 + local.get $6 local.get $2 - local.get $7 - call $~lib/array/Array#__get - local.tee $1 - call $~lib/string/String.__eq - i32.eqz - if + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=12 + else i32.const 0 - i32.const 1344 - i32.const 1057 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 + local.get $3 + i32.add + local.set $3 + local.get $2 i32.const 1 i32.add - local.set $7 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.load offset=4 - local.tee $1 + i32.shl + local.tee $2 i32.const 0 - i32.const 2 - i32.const 3 - i32.const 12592 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new + local.tee $4 i32.store - local.get $1 - i32.const 0 - i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 3 - i32.const 12624 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new + local.tee $0 i32.store offset=4 - local.get $6 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $1 - i32.load offset=12 - if - i32.const 0 - i32.const 1344 - i32.const 1061 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $0 local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=12 + local.get $0 local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + i32.store offset=8 local.get $0 - i32.load offset=12 - drop + local.get $4 + i32.store offset=4 local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize + local.get $4 + i32.store + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $3 + if + local.get $1 + local.get $4 + i32.add + local.get $3 + i32.load offset=4 + local.get $3 + i32.load offset=8 + local.tee $3 + call $~lib/memory/memory.copy + local.get $1 + local.get $3 + i32.add + local.set $1 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=12 ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store 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 $4 - i32.add - local.tee $2 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.tee $5 + local.set $6 local.get $0 i32.load offset=4 - local.get $3 + local.set $7 + loop $for-loop|0 + local.get $2 + local.get $6 + i32.lt_s + if + local.get $7 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + if (result i32) + local.get $0 + i32.load offset=12 + else + i32.const 0 + end + local.get $4 + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 2 i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $0 - call $~lib/memory/memory.copy - local.get $0 - local.get $5 - i32.add - local.get $1 - i32.load offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 local.get $4 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=12 + local.get $3 local.get $2 - ) - (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=8 + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + local.get $0 + i32.store + local.get $3 + local.get $0 i32.const 0 - i32.const 2 - i32.const 7 + call $~lib/rt/itcms/__link i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - i32.load offset=12 - local.set $5 - loop $for-loop|0 + local.set $2 + loop $for-loop|1 local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select + local.get $6 i32.lt_s if - local.get $0 - i32.load offset=4 + local.get $7 local.get $2 i32.const 2 i32.shl i32.add i32.load - local.set $3 - i32.const 3 - global.set $~argumentsLength - local.get $3 + local.tee $5 + if + local.get $0 + local.get $1 + i32.add + local.get $5 + i32.load offset=4 + local.get $5 + i32.load offset=8 + local.tee $5 + call $~lib/memory/memory.copy + local.get $1 + local.get $5 + i32.add + local.set $1 + end local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + i32.const 0 + local.set $2 + loop $for-loop|2 + local.get $2 + local.get $4 + i32.lt_s + if local.get $0 - local.get $1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop - end + i32.const 1 + call $~lib/rt/itcms/__link local.get $2 i32.const 1 i32.add local.set $2 - br $for-loop|0 + br $for-loop|2 end end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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) + (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.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.tee $3 + local.set $3 local.get $1 i32.const 0 i32.lt_s @@ -17608,344 +23176,406 @@ i32.lt_s select end - local.tee $1 - i32.sub - local.tee $4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $4 + i32.const 0 i32.lt_s - select + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub local.tee $2 i32.const 0 local.get $2 i32.const 0 i32.gt_s select - local.tee $2 + local.tee $3 i32.const 2 i32.const 7 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 + local.tee $2 + i32.store + local.get $2 i32.load offset=4 local.get $0 i32.load offset=4 - local.tee $5 local.get $1 i32.const 2 i32.shl i32.add - local.tee $6 - local.get $2 + local.get $3 i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - end - local.get $0 - local.get $3 + global.set $~lib/memory/__stack_pointer local.get $2 - i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 12656 - i32.const 1104 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/array/Array#every (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 $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 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 + global.get $~lib/memory/__stack_pointer local.get $2 local.get $0 i32.load offset=12 local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - i32.const -1 - return - end - local.get $2 + local.get $1 i32.const 0 i32.lt_s - if - local.get $2 + if (result i32) + local.get $1 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 - local.set $2 + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end + local.tee $1 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 local.get $0 i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $2 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy end - i32.const -1 + local.get $0 + local.get $3 + local.get $2 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - local.get $0 + (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 + global.get $~lib/memory/__stack_pointer + local.get $2 local.get $0 i32.load offset=12 local.tee $3 - i32.const 1 - i32.add + 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 $1 + i32.sub + local.tee $4 + local.get $2 + local.get $4 + i32.lt_s + select local.tee $2 i32.const 0 - call $~lib/array/ensureSize + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 local.get $0 i32.load offset=4 - local.get $3 + local.tee $5 + local.get $1 i32.add + local.tee $6 + local.get $2 + call $~lib/memory/memory.copy + local.get $3 local.get $1 - i32.store8 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $1 + local.get $5 + i32.add + local.get $3 + local.get $1 + i32.sub + call $~lib/memory/memory.copy + end local.get $0 + local.get $3 local.get $2 + i32.sub i32.store offset=12 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 i32.load offset=12 - local.tee $3 + local.tee $2 local.get $1 i32.load offset=12 i32.const 0 local.get $1 select - local.tee $4 + local.tee $6 i32.add - local.tee $2 - i32.const 1073741820 + local.tee $3 + i32.const 268435455 i32.gt_u if i32.const 1056 i32.const 1104 - i32.const 229 + i32.const 209 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 6 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.const 29 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 + local.tee $3 + i32.store + local.get $3 i32.load offset=4 - local.tee $5 + local.set $5 + local.get $2 + i32.const 2 + i32.shl + local.set $2 local.get $0 i32.load offset=4 - local.get $3 - call $~lib/memory/memory.copy - local.get $3 + local.set $0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.gt_u + if + local.get $4 + local.get $5 + i32.add + local.get $0 + local.get $4 + i32.add + i32.load + local.tee $7 + i32.store + local.get $3 + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $2 local.get $5 i32.add + local.set $4 local.get $1 i32.load offset=4 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $2 + local.set $1 + local.get $6 + i32.const 2 + i32.shl + local.set $5 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $5 + i32.lt_u + if + local.get $0 + local.get $4 + i32.add + local.get $0 + local.get $1 + i32.add + i32.load + local.tee $2 + i32.store + local.get $3 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.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 + local.get $3 i32.add local.tee $1 i32.const 0 @@ -17955,21 +23585,20 @@ select else local.get $1 - local.get $4 + local.get $3 local.get $1 - local.get $4 + local.get $3 i32.lt_s select end - local.tee $1 - i32.add - local.get $5 + 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 + local.get $3 i32.add local.tee $2 i32.const 0 @@ -17979,1293 +23608,2008 @@ 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 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.set $4 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl i32.add + local.set $1 + i32.const 0 + local.set $0 local.get $3 + i32.const 2 + i32.shl + local.set $3 + loop $while-continue|0 + local.get $0 + local.get $3 + i32.lt_u + if + local.get $0 + local.get $4 + i32.add + local.get $0 + local.get $1 + i32.add + i32.load + local.tee $5 + i32.store + local.get $2 + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array<~lib/string/String>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $1 i32.const 0 i32.lt_s if (result i32) + local.get $1 local.get $3 - local.get $4 i32.add - local.tee $3 + local.tee $1 i32.const 0 - local.get $3 + local.get $1 i32.const 0 i32.gt_s select else + local.get $1 local.get $3 - local.get $4 + local.get $1 local.get $3 - local.get $4 i32.lt_s select end - local.get $2 + local.tee $1 i32.sub - local.tee $2 + local.tee $4 + local.get $2 local.get $4 - local.get $1 - i32.sub - local.tee $1 - local.get $1 + i32.lt_s + select + local.tee $2 + i32.const 0 local.get $2 + i32.const 0 i32.gt_s select + local.tee $2 + i32.const 2 + i32.const 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $0 + i32.load offset=4 + local.tee $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $6 + local.get $2 + i32.const 2 + i32.shl call $~lib/memory/memory.copy + local.get $3 + local.get $1 + local.get $2 + i32.add + local.tee $1 + i32.ne + if + local.get $6 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + end local.get $0 - call $~lib/rt/pure/__retain + local.get $3 + local.get $2 + i32.sub + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $export:std/array/ArrayU32#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 2032 - i32.const 1104 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 end + local.get $0 local.get $1 - i32.const 1 + call $std/array/ArrayU32#constructor + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $1 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_u + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (func $export:~lib/array/Array#every (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 + global.get $~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.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array#every (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.tee $3 - local.get $3 - local.get $4 - i32.gt_s - select - i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength + local.set $4 + loop $for-loop|0 local.get $2 + local.get $4 local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $0 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $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#every + 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 + i32.const 1 end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.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 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 + i32.store offset=4 + local.get $1 + local.set $2 i32.const 0 - i32.const 6 + local.set $1 + global.get $~lib/memory/__stack_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/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 + i32.store local.get $0 i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $3 - local.get $5 - i32.gt_s - select - i32.lt_s - if + local.set $4 + block $__inlined_func$~lib/array/Array#findIndex + loop $for-loop|0 + local.get $1 + local.get $4 local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - local.set $3 - i32.const 3 - global.set $~argumentsLength + i32.load offset=12 + local.tee $3 local.get $3 - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) + local.get $4 + i32.gt_s + select + i32.lt_s if - local.get $4 - local.get $3 - call $~lib/array/Array#push - drop + 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 + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + local.get $2 + i32.load + call_indirect (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#findIndex + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - local.get $2 - i32.const 1 - i32.add + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 + call $~stack_check + 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 local.set $2 - br $for-loop|0 end + i32.const 2147483647 + local.set $3 end + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#shift (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $1 - i32.const 1 - i32.lt_s - if - i32.const 2032 - i32.const 1104 - i32.const 361 - i32.const 21 - call $~lib/builtins/abort - unreachable + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~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 + 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 - i32.load offset=4 - local.tee $2 - i32.load8_u - local.get $2 - local.get $2 - i32.const 1 - i32.add - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - call $~lib/memory/memory.copy local.get $1 local.get $2 + call $~lib/array/Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.const 0 - i32.store8 - local.get $0 - local.get $1 - i32.store offset=12 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $export:~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~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.load offset=12 - local.set $4 - loop $for-loop|0 - local.get $2 - local.get $4 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end local.get $0 i32.load offset=12 + local.set $2 + end + block $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 local.tee $3 - local.get $3 - local.get $4 - i32.gt_s + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf + end + local.get $0 + local.get $2 + i32.add + local.get $0 + i32.const 1 + i32.sub + local.get $2 + local.get $0 + local.get $2 + i32.le_s select + local.get $2 + i32.const 0 i32.lt_s - if - local.get $0 - i32.load offset=4 - local.get $2 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 + select + local.set $0 + local.get $3 + i32.load offset=4 + local.set $2 + loop $while-continue|0 local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) + i32.const 0 + i32.ge_s if local.get $1 - call $~lib/rt/pure/__release + local.get $2 + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 i32.const 1 - return + i32.sub + local.set $0 + br $while-continue|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + i32.const -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 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - call $~lib/rt/pure/__release - i32.const 0 + call $~lib/array/Array#push + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (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 + 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 + i32.const 4 + 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 + local.tee $3 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $4 i32.add local.tee $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 209 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 7 i32.const 0 - call $~lib/array/ensureSize + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $5 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 + i32.const 2 + i32.shl + local.tee $0 call $~lib/memory/memory.copy - local.get $3 - local.get $1 - i32.store8 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 + 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 - i32.store offset=12 + ) + (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 + call $~stack_check + 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 $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 $~lib/array/Array#reverse (param $0 i32) (result i32) + (func $export:~lib/array/Array#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 + local.get $0 + i32.store local.get $0 i32.load offset=12 - local.tee $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - i32.add - local.set $1 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.gt_u - if - local.get $2 - i32.load8_u - local.set $3 - local.get $2 - local.get $1 - i32.load8_u - i32.store8 - local.get $1 - local.get $3 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end + local.tee $1 + i32.const 1 + i32.lt_s + if + i32.const 2176 + i32.const 1104 + i32.const 256 + i32.const 21 + call $~lib/builtins/abort + unreachable end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $6 + i32.load offset=4 local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.const 1 + i32.sub + local.tee $1 i32.const 2 i32.shl - local.tee $2 - call $~lib/rt/tlsf/__alloc - local.tee $4 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill + i32.add + i32.load + local.get $0 local.get $1 - i32.const 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 - local.set $3 + 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 + i32.const 4 + 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 $4 loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 local.get $3 - i32.const 0 + local.get $4 i32.gt_s + select + i32.lt_s if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $4 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end local.get $0 + i32.load offset=4 local.get $2 - i32.const 1 - i32.shr_s - local.tee $7 + i32.const 2 + i32.shl i32.add - i32.load8_u - local.set $2 + i32.load + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - i32.add - i32.load8_u - local.set $5 - i32.const 2 + i32.store + i32.const 3 global.set $~argumentsLength local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.add - local.get $2 - i32.store8 - local.get $0 - local.get $7 - i32.add - local.get $5 - i32.store8 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if local.get $0 - i32.load8_u - local.set $1 - local.get $0 - local.get $0 - local.get $3 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 local.get $1 - i32.store8 - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $3 - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.gt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - i32.load8_u - local.set $2 - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $2 - local.get $5 - local.get $6 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $7 - local.get $7 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.add - local.get $2 - i32.store8 - local.get $0 - local.get $5 - i32.store8 - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $1 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $1 - i32.store8 - local.get $6 - call $~lib/rt/pure/__release + 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 ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (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) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 7 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store + local.get $0 + i32.load offset=12 local.set $5 - block $folding-inner0 + loop $for-loop|0 + local.get $2 + local.get $5 local.get $0 i32.load offset=12 - local.tee $1 - i32.const 1 - i32.le_s - br_if $folding-inner0 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.const 2 - i32.eq + local.tee $3 + local.get $3 + local.get $5 + i32.gt_s + select + i32.lt_s if - local.get $4 - i32.load8_u offset=1 - local.set $2 - local.get $4 - i32.load8_u - local.set $1 + local.get $0 + i32.load offset=4 + local.get $2 i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 global.set $~argumentsLength + local.get $3 local.get $2 + local.get $0 local.get $1 - local.get $5 i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + call_indirect (type $i32_i32_i32_=>_i32) if + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $1 - i32.store8 offset=1 + i32.store offset=8 local.get $4 - local.get $2 - i32.store8 - end - br $folding-inner0 - end - local.get $5 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $3 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - loop $for-loop|0 local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $6 - i32.add - i32.load8_u - local.set $9 - local.get $6 - i32.const 1 - i32.sub - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $4 - i32.add - i32.load8_u - local.set $10 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $10 - local.get $8 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $2 - local.tee $1 - i32.const 1 - i32.sub - local.set $2 - local.get $4 - local.get $1 - i32.const 1 - i32.add - i32.add - local.get $10 - i32.store8 - br $while-continue|1 - end - end - end - local.get $4 - local.get $2 - i32.const 1 - i32.add - i32.add - local.get $9 - i32.store8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + call $~lib/array/Array#push + drop end - local.get $8 - call $~lib/rt/pure/__release - else - local.get $4 - local.get $1 - local.get $7 - call $~lib/util/sort/weakHeapSort + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - return end - local.get $0 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array<~lib/string/String>#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $export:~lib/array/Array#shift (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~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.load offset=4 - local.set $5 + i32.store local.get $0 i32.load offset=12 - local.set $1 - local.get $2 - i32.const 0 + local.tee $1 + i32.const 1 i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $1 - local.get $1 - local.get $2 - i32.gt_s - select + if + i32.const 2176 + i32.const 1104 + i32.const 315 + i32.const 21 + call $~lib/builtins/abort + unreachable end - local.set $2 - local.get $3 - 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 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.load + local.get $2 + local.get $2 + i32.const 4 + i32.add + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + local.tee $4 + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $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 + 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 + block $__inlined_func$~lib/array/Array#some (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - end - local.set $1 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.gt_s - if - local.get $4 - local.get $5 + i32.store + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + local.get $4 + local.get $0 + i32.load offset=12 local.tee $3 - i32.ne + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s if - local.get $5 + local.get $0 + i32.load offset=4 local.get $2 i32.const 2 i32.shl i32.add - local.get $4 - call $~lib/rt/pure/__retain + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store - local.get $3 - call $~lib/rt/pure/__release + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (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#some + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - 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 + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release + 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 $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + 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.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $2 + call $~lib/array/Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - return + 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 $0 + local.get $1 local.get $2 - i32.const 0 - i32.lt_s + call $~lib/array/Array#splice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#reverse (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 + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $1 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.get $0 + i32.load offset=4 local.set $2 - end - local.get $0 - i32.load offset=4 - local.set $0 - loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $1 + loop $while-continue|0 local.get $1 - call $~lib/string/String.__eq + local.get $2 + i32.gt_u if + local.get $2 + i32.load + local.set $3 + local.get $2 + local.get $1 + i32.load + i32.store local.get $1 - call $~lib/rt/pure/__release + local.get $3 + i32.store local.get $2 - return + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 4 + i32.sub + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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#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) + global.get $~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 + global.get $~lib/memory/__stack_pointer + i32.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 + br_table $0of1 $1of1 $outOfRange end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 + unreachable end + i32.const 8720 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store end + local.get $0 local.get $1 - call $~lib/rt/pure/__release - i32.const -1 + call $~lib/array/Array#join + 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 ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 12800 + i32.const 1104 + i32.const 457 + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $0 - i32.load offset=12 - local.tee $3 - i32.const 1 + call $~lib/array/Array#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $2 - i32.const 2 - call $~lib/array/ensureSize + global.set $~lib/memory/__stack_pointer + ) + (func $export:std/array/ArrayU8#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end local.get $0 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add local.get $1 - call $~lib/rt/pure/__retain + call $std/array/ArrayU8#constructor + global.get $~lib/memory/__stack_pointer + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store local.get $0 - local.get $2 - i32.store offset=12 local.get $1 - call $~lib/rt/pure/__release - local.get $2 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + (func $export:~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) + global.get $~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 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array#every (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $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#every + 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 + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=12 - i32.const 0 + i32.store offset=4 local.get $1 - select - local.tee $5 - i32.add - local.tee $3 - i32.const 268435455 - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - i32.load offset=4 - local.set $3 - local.get $2 - i32.const 2 - i32.shl local.set $2 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 - local.set $0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.gt_u - if - local.get $3 + i32.load offset=12 + local.set $4 + block $__inlined_func$~lib/array/Array#findIndex + loop $for-loop|0 + local.get $1 local.get $4 - i32.add local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 local.get $4 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $for-loop|0 + i32.gt_s + select + i32.lt_s + if + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + local.get $2 + i32.load + call_indirect (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#findIndex + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 + call $~stack_check + 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 + local.set $2 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 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $3 - local.get $5 - i32.const 2 - i32.shl - local.set $2 - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $0 - local.get $3 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $for-loop|1 + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array#includes@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable end + i32.const 0 + local.set $2 end - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (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) + global.get $~lib/memory/__stack_pointer + i32.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.set $5 - local.get $3 + i32.store 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 $1 + local.get $2 + call $~lib/array/Array#indexOf 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.ge_s + 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 + ) + (func $export:~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i32.lt_s - select + local.set $2 end - local.tee $1 + local.get $0 + local.get $1 local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + call $~lib/array/Array#indexOf + 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 + call $~stack_check + 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 + local.get $0 + i32.load offset=12 + local.set $2 + end + block $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 + local.tee $3 + i32.load offset=12 + local.tee $0 + i32.eqz + if + i32.const -1 + local.set $0 + br $__inlined_func$~lib/array/Array#lastIndexOf + end + local.get $0 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 $0 + i32.const 1 + i32.sub local.get $2 - local.get $4 + local.get $0 local.get $2 - local.get $4 - i32.lt_s + i32.le_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 + local.get $2 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 $3 - local.get $4 - local.get $1 - i32.sub - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - local.tee $3 - i32.add - i32.lt_s - i32.const 0 - local.get $1 - local.get $2 - i32.gt_s - select - if - local.get $2 + local.set $0 local.get $3 - i32.const 1 - i32.sub - local.tee $4 - i32.add + i32.load offset=4 local.set $2 - local.get $1 - local.get $4 - i32.add - local.set $1 loop $while-continue|0 - local.get $3 + local.get $0 + i32.const 0 + i32.ge_s if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - local.get $5 + local.get $0 local.get $2 - i32.const 2 - i32.shl i32.add - i32.load - local.tee $6 - i32.ne - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.get $0 i32.const 1 i32.sub - local.set $3 + local.set $0 br $while-continue|0 end end - else - loop $while-continue|1 - local.get $3 - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $4 - local.get $5 - local.get $2 + i32.const -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 + ) + (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 + 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 + 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 + 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 + i32.const 4 + 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.tee $3 + local.get $1 + i32.load offset=12 + i32.const 0 + local.get $1 + select + local.tee $4 + i32.add + local.tee $2 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 209 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.const 6 + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + local.tee $5 + local.get $0 + i32.load offset=4 + local.get $3 + call $~lib/memory/memory.copy + local.get $3 + local.get $5 + i32.add + local.get $1 + i32.load offset=4 + local.get $4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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) + global.get $~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 + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength i32.const 2 - i32.shl - i32.add - i32.load - local.tee $6 - i32.ne - if - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - i32.const 1 i32.sub - local.set $3 - br $while-continue|1 + br_table $0of1 $1of1 $outOfRange end + unreachable end + i32.const 2147483647 + local.set $3 end local.get $0 - call $~lib/rt/pure/__retain + 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 $~lib/array/Array<~lib/string/String>#pop (param $0 i32) (result i32) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=12 local.tee $1 i32.const 1 i32.lt_s if - i32.const 2032 + i32.const 2176 i32.const 1104 - i32.const 300 + i32.const 256 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 + local.get $0 + i32.load offset=4 i32.add - i32.load - call $~lib/rt/pure/__retain + 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 $~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) + (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 + 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 + i32.const 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + 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 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 + 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.const 2 - i32.const 29 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + i32.const 6 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store local.get $0 i32.load offset=12 local.set $5 @@ -19274,38 +25618,39 @@ local.get $5 local.get $0 i32.load offset=12 - local.tee $1 - local.get $1 + local.tee $3 + local.get $3 local.get $5 i32.gt_s select i32.lt_s if + local.get $2 local.get $0 i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $1 + i32.load8_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 3 global.set $~argumentsLength - local.get $1 + local.get $3 local.get $2 local.get $0 - local.get $3 + local.get $1 i32.load call_indirect (type $i32_i32_i32_=>_i32) if + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $1 - call $~lib/array/Array<~lib/string/String>#push + i32.store offset=8 + local.get $4 + local.get $3 + call $~lib/array/Array#push drop end - local.get $1 - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -19313,24 +25658,37 @@ br $for-loop|0 end end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/array/Array<~lib/string/String>#shift (param $0 i32) (result i32) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=12 local.tee $1 i32.const 1 i32.lt_s if - i32.const 2032 + i32.const 2176 i32.const 1104 - i32.const 361 + i32.const 315 i32.const 21 call $~lib/builtins/abort unreachable @@ -19338,69 +25696,183 @@ local.get $0 i32.load offset=4 local.tee $2 - i32.load - call $~lib/rt/pure/__retain + i32.load8_u local.get $2 local.get $2 - i32.const 4 + i32.const 1 i32.add local.get $1 i32.const 1 i32.sub local.tee $1 - i32.const 2 - i32.shl - local.tee $4 call $~lib/memory/memory.copy + local.get $1 local.get $2 - local.get $4 i32.add i32.const 0 - i32.store + i32.store8 local.get $0 local.get $1 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#unshift (param $0 i32) (param $1 i32) (result i32) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + i32.store offset=4 + block $__inlined_func$~lib/array/Array#some (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $4 + loop $for-loop|0 + local.get $2 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $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#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.add + global.set $~lib/memory/__stack_pointer + 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 + call $~stack_check + 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 $1 - i32.const 2 + local.tee $2 + i32.const 0 call $~lib/array/ensureSize local.get $0 i32.load offset=4 local.tee $3 - i32.const 4 + i32.const 1 i32.add local.get $3 - local.get $1 + local.get $2 i32.const 1 i32.sub - i32.const 2 - i32.shl call $~lib/memory/memory.copy local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $0 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 - call $~lib/rt/pure/__release - local.get $1 ) - (func $~lib/array/Array<~lib/string/String>#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -19426,6 +25898,7 @@ select end local.set $1 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 i32.lt_s @@ -19456,144 +25929,73 @@ i32.gt_s select local.tee $2 - i32.const 2 - i32.const 29 + i32.const 0 + i32.const 6 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain local.tee $3 + i32.store + local.get $3 i32.load offset=4 - local.set $4 + local.get $1 local.get $0 i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl i32.add - local.set $1 - i32.const 0 - local.set $0 local.get $2 - i32.const 2 - i32.shl - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $2 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $0 - local.get $1 - i32.add - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#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.get $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 + (func $export:~lib/array/Array#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 2 - i32.const 29 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $6 - local.get $2 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $1 - local.get $2 - i32.add - local.tee $1 - i32.ne - if - local.get $6 - local.get $5 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - local.get $1 - i32.sub - i32.const 2 - i32.shl - call $~lib/memory/memory.copy + 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 $0 - local.get $3 + local.get $1 local.get $2 - i32.sub - i32.store offset=12 - local.get $4 + call $~lib/array/Array#splice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#reverse (param $0 i32) (result i32) + (func $export:~lib/array/Array#reverse (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 + local.get $0 + i32.store local.get $0 i32.load offset=12 local.tee $1 @@ -19606,8 +26008,6 @@ local.get $1 i32.const 1 i32.sub - i32.const 2 - i32.shl i32.add local.set $1 loop $while-continue|0 @@ -19616,504 +26016,443 @@ i32.gt_u if local.get $2 - i32.load - call $~lib/rt/pure/__retain + i32.load8_u local.set $3 local.get $2 local.get $1 - i32.load - i32.store - local.get $1 - local.get $3 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $1 - i32.const 4 - i32.sub - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - end - 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 1216 - 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-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $invalid - block $std/array/ArrayStr - block $~lib/typedarray/Uint8Array - block $~lib/arraybuffer/ArrayBufferView - local.get $0 - i32.const 20 - i32.add - local.tee $1 - i32.const 8 - i32.sub - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $~lib/arraybuffer/ArrayBufferView $folding-inner1 $__inlined_func$~lib/rt/__visit_members $~lib/typedarray/Uint8Array $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner2 $folding-inner3 $__inlined_func$~lib/rt/__visit_members $folding-inner2 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner2 $folding-inner3 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner4 $folding-inner4 $std/array/ArrayStr $invalid - end - local.get $1 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - call $~lib/array/Array~visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $1 - i32.load - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - call $~lib/array/Array~visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - i32.load offset=4 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - i32.load - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1216 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - 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 - local.get $1 - i32.const 1 - i32.sub - local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - end - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 12700 - i32.lt_u - if - return - end - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - ) - (func $~start - call $start:std/array - ) - (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 $2 - loop $while-continue|0 - local.get $1 - local.get $2 - i32.lt_u - if - local.get $1 - i32.load - local.tee $3 - if - local.get $3 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load - call $~lib/rt/pure/__visit - ) - (func $std/array/ArrayU32#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 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 - i32.eqz - if - i32.const 16 - i32.const 40 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 16 - 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 - 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 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 0 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $0 - ) - (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 + i32.load8_u + i32.store8 + local.get $1 + local.get $3 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 end - i32.const 0 - local.set $2 end - i32.const 2147483647 - local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $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) + (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.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 - i32.const 0 - local.set $2 + i32.const 12864 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12864 + i32.store end local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s + call $~lib/array/Array#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 ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array#join@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.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 - i32.const 0 - local.set $2 + i32.const 8720 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store end local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#indexOf + call $~lib/array/Array#join + 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 ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (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 + call $~stack_check + 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 + call $~stack_check + 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 - local.get $0 - i32.load offset=12 - local.set $2 + i32.const 0 + local.set $1 end - block $__inlined_func$~lib/array/Array#lastIndexOf - local.get $0 - local.tee $3 - i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 42 + call $~lib/rt/itcms/__new local.tee $0 - i32.eqz - if - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf - end - local.get $0 - local.get $2 - i32.add - local.get $0 - i32.const 1 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 + 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 + block $__inlined_func$~lib/array/Array<~lib/string/String>#every (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.get $2 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.get $2 - i32.le_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 local.get $0 - i32.const 0 - i32.ge_s + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $0 local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + 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$~lib/array/Array<~lib/string/String>#every + 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 + global.set $~lib/memory/__stack_pointer + 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<~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 + 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 $1 + local.set $2 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 + local.set $4 + block $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + loop $for-loop|0 + local.get $1 + local.get $4 + local.get $0 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 i32.shl i32.add i32.load - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $1 + local.get $0 + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array<~lib/string/String>#findIndex + 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.add + global.set $~lib/memory/__stack_pointer i32.const -1 - local.set $0 + local.set $1 end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (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 - i32.const 2147483647 - local.set $3 - end + (func $export:~lib/array/Array<~lib/string/String>#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 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 - 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) - (local $3 i32) + 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 $1 + local.set $2 end i32.const 2147483647 - local.set $2 + local.set $3 end local.get $0 + local.tee $4 + i32.load offset=4 + local.set $6 + local.get $0 i32.load offset=12 - local.set $3 - local.get $1 + local.set $5 + local.get $2 i32.const 0 i32.lt_s if (result i32) - local.get $1 - local.get $3 + local.get $2 + local.get $5 i32.add - local.tee $1 + local.tee $0 i32.const 0 - local.get $1 + local.get $0 i32.const 0 i32.gt_s select else - local.get $1 - local.get $3 - local.get $1 - local.get $3 + local.get $2 + local.get $5 + local.get $2 + local.get $5 i32.lt_s select end - local.set $1 - local.get $2 + local.set $0 + local.get $3 i32.const 0 i32.lt_s if (result i32) - local.get $2 local.get $3 + local.get $5 i32.add local.tee $2 i32.const 0 @@ -20122,193 +26461,55 @@ i32.gt_s select else - local.get $2 local.get $3 - local.get $2 + local.get $5 local.get $3 + local.get $5 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 $3 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - ) - (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 - i32.const 2147483647 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#splice - ) - (func $~lib/array/Array#join@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 8576 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#join - ) - (func $std/array/ArrayU8#constructor@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 41 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 16 - 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 - 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 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.tee $2 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - local.set $3 - local.get $1 - local.get $0 - 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 $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $2 - i32.store offset=12 - local.get $0 - ) - (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 + local.set $2 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + local.get $6 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $4 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - i32.const 2147483647 - local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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) + global.get $~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 - 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) + i32.store offset=4 block $1of1 block $0of1 block $outOfRange @@ -20322,14 +26523,47 @@ i32.const 0 local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 local.get $2 - call $~lib/array/Array#indexOf + call $~lib/array/Array<~lib/string/String>#indexOf i32.const 0 i32.ge_s + 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 ) - (func $~lib/array/Array#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#indexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 block $1of1 block $0of1 block $outOfRange @@ -20346,10 +26580,25 @@ local.get $0 local.get $1 local.get $2 - call $~lib/array/Array#indexOf + call $~lib/array/Array<~lib/string/String>#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 block $1of1 block $0of1 block $outOfRange @@ -20364,16 +26613,28 @@ i32.load offset=12 local.set $2 end - block $__inlined_func$~lib/array/Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf local.get $0 local.tee $3 i32.load offset=12 local.tee $0 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#lastIndexOf + br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf end local.get $0 local.get $2 @@ -20399,15 +26660,28 @@ i32.const 0 i32.ge_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $2 + local.get $0 + i32.const 2 + i32.shl i32.add - i32.load8_u + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 255 - i32.and - i32.eq - br_if $__inlined_func$~lib/array/Array#lastIndexOf + i32.store offset=4 + local.get $3 + local.get $1 + call $~lib/string/String.__eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + end local.get $0 i32.const 1 i32.sub @@ -20415,445 +26689,428 @@ br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#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 - i32.const 2147483647 - local.set $3 - end + (func $export:~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer 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) - (local $3 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 - i32.const 2147483647 - local.set $2 - end + i32.store offset=4 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 - 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 $3 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=4 local.get $1 - local.get $0 - i32.load offset=4 + call $~lib/array/Array<~lib/string/String>#push + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 + global.set $~lib/memory/__stack_pointer ) - (func $~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) - 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 $2 - local.get $0 - i32.load offset=12 - local.tee $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.tee $1 + (func $export:~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.tee $4 - local.get $2 - local.get $4 - i32.lt_s - select - local.tee $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 + 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 - i32.load offset=4 - local.tee $5 - i32.add - local.tee $6 - local.get $2 - call $~lib/memory/memory.copy - local.get $3 local.get $1 - local.get $2 + call $~lib/array/Array<~lib/string/String>#concat + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array<~lib/string/String>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 local.tee $1 - i32.ne + i32.const 1 + i32.lt_s if - local.get $6 - local.get $1 - local.get $5 - i32.add - local.get $3 - local.get $1 - i32.sub - call $~lib/memory/memory.copy + i32.const 2176 + i32.const 1104 + i32.const 256 + i32.const 21 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - local.get $2 + i32.load offset=4 + local.get $1 + i32.const 1 i32.sub - i32.store offset=12 - local.get $4 - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - i32.const 12720 - local.tee $2 - local.set $1 - end + 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#sort + 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 $2 - call $~lib/rt/pure/__release ) - (func $~lib/array/Array#join@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 8576 - local.set $1 - end + (func $export:~lib/array/Array<~lib/string/String>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#join - ) - (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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - if (result i32) + i32.load offset=12 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 local.get $0 - else - i32.const 16 - i32.const 42 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - end - local.get $1 - call $~lib/array/Array<~lib/string/String>#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 + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add local.set $2 + br $for-loop|0 end - i32.const 2147483647 - local.set $3 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array<~lib/string/String>#filter (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#indexOf + call $~lib/array/Array<~lib/string/String>#filter + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $export:~lib/array/Array<~lib/string/String>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.ge_s + i32.store local.get $0 - call $~lib/rt/pure/__release - ) - (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 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.lt_s + if + i32.const 2176 + i32.const 1104 + i32.const 315 + i32.const 21 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.load offset=4 + local.tee $2 + i32.load + local.tee $3 + i32.store + local.get $2 + local.get $2 + i32.const 4 + i32.add local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.const 2 + i32.shl + local.tee $4 + call $~lib/memory/memory.copy 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) - (local $3 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 $4 + i32.add + i32.const 0 + i32.store + local.get $0 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + 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>#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - local.get $0 - local.tee $3 - i32.load offset=12 - local.tee $0 - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - local.set $0 - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf - end - local.get $0 - local.get $2 - i32.add - local.get $0 - i32.const 1 + i32.store offset=4 + block $__inlined_func$~lib/array/Array<~lib/string/String>#some (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.get $2 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - local.get $2 - i32.le_s - select - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $0 - local.get $3 - i32.load offset=4 - local.set $2 - loop $while-continue|0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 local.get $0 - i32.const 0 - i32.ge_s + i32.load offset=12 + local.tee $3 + local.get $3 + local.get $4 + i32.gt_s + select + i32.lt_s if - local.get $2 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 3 + global.set $~argumentsLength + local.get $3 + local.get $2 + local.get $0 local.get $1 - call $~lib/string/String.__eq + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - local.get $1 - call $~lib/rt/pure/__release - br $__inlined_func$~lib/array/Array<~lib/string/String>#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + br $__inlined_func$~lib/array/Array<~lib/string/String>#some end - local.get $0 + local.get $2 i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $1 - call $~lib/rt/pure/__release - i32.const -1 - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 - i32.const 2147483647 - local.set $3 - end + (func $export:~lib/array/Array<~lib/string/String>#unshift (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 + 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 $0 + i32.load offset=12 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + i32.load offset=4 + local.tee $3 + i32.const 4 + i32.add + local.get $3 local.get $2 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + call $~lib/memory/memory.copy local.get $3 - call $~lib/array/Array<~lib/string/String>#copyWithin + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#slice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $2of2 block $1of2 block $0of2 @@ -20873,8 +27130,20 @@ local.get $1 local.get $2 call $~lib/array/Array<~lib/string/String>#slice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#splice@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store block $1of1 block $0of1 block $outOfRange @@ -20892,9 +27161,106 @@ local.get $1 local.get $2 call $~lib/array/Array<~lib/string/String>#splice + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#reverse (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.tee $1 + if + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + i32.const 2 + i32.shl + i32.add + local.set $1 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $3 + i32.store + local.get $2 + local.get $1 + i32.load + i32.store + local.get $1 + local.get $3 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 4 + i32.sub + local.set $1 + br $while-continue|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.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 @@ -20903,17 +27269,44 @@ end unreachable end - i32.const 12752 - local.tee $2 + i32.const 12896 local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12896 + i32.store end local.get $0 local.get $1 call $~lib/array/Array<~lib/array/Array>#sort - local.get $2 - call $~lib/rt/pure/__release + 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 ) - (func $~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.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 @@ -20922,15 +27315,38 @@ end unreachable end - i32.const 8576 + i32.const 8720 local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8720 + i32.store end local.get $0 local.get $1 call $~lib/array/Array<~lib/string/String|null>#join + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~setArgumentsLength (param $0 i32) + (func $export:~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) + global.get $~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 - global.set $~argumentsLength + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String|null>#toString + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/array.ts b/tests/compiler/std/array.ts index 97742c1706..50e4614cba 100644 --- a/tests/compiler/std/array.ts +++ b/tests/compiler/std/array.ts @@ -416,8 +416,8 @@ var i: i32; assert(isArraysEqual(sarr.splice(7, 5), [])); assert(isArraysEqual(sarr, [1, 2, 3, 4, 5])); - var refArr: Ref[] = []; - var spliced = refArr.splice(1, 2); + let refArr: Ref[] = []; + let spliced = refArr.splice(1, 2); assert(spliced.length == 0); assert(refArr.length == 0); @@ -433,8 +433,8 @@ var i: i32; assert(refArr[1].v == 2); assert(refArr[2].v == 5); - var refArr2: (Ref | null)[] = [new Ref(1), null, new Ref(2)]; - var spliced2 = refArr2.splice(0, 1); + let refArr2: (Ref | null)[] = [new Ref(1), null, new Ref(2)]; + let spliced2 = refArr2.splice(0, 1); assert(spliced2.length == 1); assert(spliced2[0]!.v == 1); @@ -1026,32 +1026,28 @@ function assertSortedDefault(arr: Array): void { assert(arrStr.toString() == ",a,a,ab,b,ba,"); assert((>["1", "2", null, "4"]).toString() == "1,2,,4"); - var subarr32: i32[][] = [[1,2], [3,4]]; + let subarr32: i32[][] = [[1,2], [3,4]]; assert(subarr32.toString() == "1,2,3,4"); - var subarr8: u8[][] = [[1,2], [3,4]]; + let subarr8: u8[][] = [[1,2], [3,4]]; assert(subarr8.toString() == "1,2,3,4"); - var subarrU32: u32[][][] = [[[1]]]; + let subarrU32: u32[][][] = [[[1]]]; assert(subarrU32.toString() == "1"); } -// Unleak globals -__release(changetype(arr)); - - // Array#flat ////////////////////////////////////////////////////////////////////////////////// { - var flatTarget: i32[][] = [[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]; - var result = flatTarget.flat(); + let flatTarget: i32[][] = [[0], [1, 2, 3], [4, 5, 6], [7, 8, 9]]; + let result = flatTarget.flat(); assert(result.length == 10); for (let i = 0; i < 10; i++) { assert(result[i] == i); } - var flatStringTarget: Array> = [["one"], ["two", null, "three"], ["four", "five", "six"], ["seven"]]; - var stringResult = flatStringTarget.flat(); - var expected = ["one", "two", null, "three", "four", "five", "six", "seven"]; + let flatStringTarget: Array> = [["one"], ["two", null, "three"], ["four", "five", "six"], ["seven"]]; + let stringResult = flatStringTarget.flat(); + let expected = ["one", "two", null, "three", "four", "five", "six", "seven"]; assert(stringResult.length == 8); for (let i = 0; i < expected.length; i++) { assert(stringResult[i] == expected[i]); @@ -1066,5 +1062,11 @@ __release(changetype(arr)); export class ArrayU32 extends Array {} export class ArrayU8 extends Array {} export class ArrayStr extends Array {} -// TODO: +// FIXME: Fails on 'sort' due to operators '>', '<' // export class ArrayArrayI32 extends Array> {} + +// Unleak globals +arr = changetype>(0); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index cfb5c972e4..38392ec05d 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -6,9 +6,9 @@ (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_=>_none (func (param i32))) + (type $none_=>_none (func)) (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $none_=>_none (func)) (type $i64_i32_=>_i32 (func (param i64 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) @@ -19,277 +19,294 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i64_=>_none (func (param i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i64_=>_none (func (param i64))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Math" "random" (func $~lib/bindings/Math/random (result f64))) (import "env" "seed" (func $~lib/builtins/seed (result f64))) (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\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00") - (data (i32.const 348) "<\00\00\00\01\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 412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") - (data (i32.const 444) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\02\03\04\05\00\00\00\00\00\00\00") - (data (i32.const 476) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05\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) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 604) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 636) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data (i32.const 668) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data (i32.const 700) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 748) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 796) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 844) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 892) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 940) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 988) ",\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 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1100) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1148) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1196) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1244) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1292) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1340) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1388) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1436) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1484) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1532) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1580) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1628) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1676) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1724) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1772) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1820) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1868) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1916) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1964) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2012) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2060) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2108) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2156) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2204) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2252) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") - (data (i32.const 2284) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") - (data (i32.const 2316) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") - (data (i32.const 2348) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\f8\7f\00\00\00\00") - (data (i32.const 2380) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2428) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2476) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2508) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2556) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2588) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2636) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2684) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00") - (data (i32.const 2716) "\1c\00\00\00\01\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 2748) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2796) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 2828) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\05\00\00\00") - (data (i32.const 2860) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2908) "\1c\00\00\00\01\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 2940) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2988) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3036) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3068) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3116) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3164) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00") - (data (i32.const 3196) "\1c\00\00\00\01\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 3228) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3276) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3308) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3356) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3404) "\1c\00\00\00\01\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 3436) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3484) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3532) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3564) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3612) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3660) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3692) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3740) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3788) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3820) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3868) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3916) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3948) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3996) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4044) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4076) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4124) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4156) "|\00\00\00\01\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 4284) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4348) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4380) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4412) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4444) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4476) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4508) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4540) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4572) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4604) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4636) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4668) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4700) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4732) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4764) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4796) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4828) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4860) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4892) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4924) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4956) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4988) "\1c\00\00\00\01\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5020) "\1c\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5052) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5084) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5116) "\1c\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5148) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5180) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5212) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5244) "\1c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5276) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5308) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5340) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5372) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5404) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5436) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5468) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5500) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5532) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5564) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5596) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5628) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5660) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5692) "\1c\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5724) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") - (data (i32.const 5772) "\bc\00\00\00\01\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?\00") - (data (i32.const 5964) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6028) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6060) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6124) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6220) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6252) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6348) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6396) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6428) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6476) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6524) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6556) ",\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 6604) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6636) "\1c\00\00\00\01\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 6668) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00") - (data (i32.const 6700) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\03\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6748) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6796) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6828) "\1c\00\00\00\01\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 6860) "\1c\00\00\00\01\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 6892) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6924) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6956) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6988) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7020) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7052) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7084) "\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 7116) "\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 7148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 7180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 7212) "\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 7244) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\c0\1b\00\00\e0\1b\00\00\c0\1b\00\00\00\1c\00\00 \1c\00\00@\1c\00\00\00\00\00\00") - (data (i32.const 7292) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00@\1c\00\00\c0\1b\00\00\c0\1b\00\00\00\1c\00\00\e0\1b\00\00 \1c\00\00\00\00\00\00") - (data (i32.const 7340) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7372) "\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 7404) "\1c\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7436) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7468) "\1c\00\00\00\01\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 7500) "\1c\00\00\00\01\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 7532) "\1c\00\00\00\01\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") - (data (i32.const 7564) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00t\00r\00u\00e\00,\00f\00a\00l\00s\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 7612) "\1c\00\00\00\01\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 7644) "|\00\00\00\01\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 7772) "<\00\00\00\01\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 7836) "\1c\00\00\00\01\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 7868) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 8268) "\1c\04\00\00\01\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 9324) "\\\00\00\00\01\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 9420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") - (data (i32.const 9452) "\1c\00\00\00\01\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 9484) "\1c\00\00\00\01\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") - (data (i32.const 9516) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\80\00\00\00\80\00\00\00\00") - (data (i32.const 9548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") - (data (i32.const 9580) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9660) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9740) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data (i32.const 9772) "\1c\00\00\00\01\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 9804) "\1c\00\00\00\01\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 9836) ",\00\00\00\01\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 9884) ",\00\00\00\01\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 9936) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 9992) "\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]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11340) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11372) "\1c\00\00\00\01\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 11404) "\1c\00\00\00\01\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 11436) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") - (data (i32.const 11516) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00,\001\00,\002\00,\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11564) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\00-\001\00,\000\00") - (data (i32.const 11628) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") - (data (i32.const 11660) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\006\005\005\003\005\00,\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11708) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11756) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11836) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11900) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 12012) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00@\1c\00\00\c0\1b\00\00\c0\1b\00\00\00\1c\00\00\e0\1b\00\00 \1c\00\00\00\00\00\00") - (data (i32.const 12060) ",\00\00\00\01\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,\00\00\00") - (data (i32.const 12108) "\1c\00\00\00\01\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 12140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12172) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00 +\00\00`/\00\00\00\00\00\00\80/\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00,\002\00,\00,\004\00") - (data (i32.const 12252) "\1c\00\00\00\01\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 12284) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\03\00\00\00\04\00\00\00\00\00\00\00") - (data (i32.const 12316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00,\002\00,\003\00,\004\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12364) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12396) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12428) "\1c\00\00\00\01\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 12460) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12492) "\1c\00\00\00\01\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 12524) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\04\00\00\00\05\00\00\00\06\00\00\00") - (data (i32.const 12556) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\07\00\00\00\08\00\00\00\t\00\00\00") - (data (i32.const 12588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") - (data (i32.const 12620) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00@1\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") - (data (i32.const 12684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") - (data (i32.const 12716) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\801\00\00\00\00\00\00\a01\00\00") - (data (i32.const 12748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") - (data (i32.const 12780) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") - (data (i32.const 12812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") - (data (i32.const 12844) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\e01\00\00\002\00\00 2\00\00") - (data (i32.const 12876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") - (data (i32.const 12908) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00`2\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12940) "<\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00 \00\00\00@1\00\00\801\00\00\00\00\00\00\a01\00\00\e01\00\00\002\00\00 2\00\00`2\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13004) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13036) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13068) "<\00\00\00\01\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") - (table $0 57 funcref) - (elem (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 $~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 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0) + (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\18\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00\00\00") + (data (i32.const 556) "<\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 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (data (i32.const 652) "\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\00\00\00\00\00\00\00") + (data (i32.const 684) "\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\00\00\00\00\00\00\00") + (data (i32.const 716) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 748) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 780) "\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\00\00\00\00\00\00\00") + (data (i32.const 812) "\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\00\00\00\00\00\00\00") + (data (i32.const 844) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 892) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 940) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 988) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1036) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1084) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1132) ",\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\00") + (data (i32.const 1180) "\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 1212) "\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 1244) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1292) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1340) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1388) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1436) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1484) ",\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\00\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\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1580) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1628) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1676) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1724) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1772) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1820) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (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\03\00\00\00\04\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (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\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1964) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (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\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2060) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (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\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2156) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2204) ",\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\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\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2300) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (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\03\00\00\00\04\00\00\00\05\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data (i32.const 2428) "\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\00\00\00\00") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\c0\7f\00\00\00\00\00\00\00\00") + (data (i32.const 2492) "\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\00\00\00\00") + (data (i32.const 2524) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2572) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2620) "\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 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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2700) "\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 2732) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (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\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2828) "\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\00\00\00") + (data (i32.const 2860) "\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 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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2940) "\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\00\00\00\00\00\00\00") + (data (i32.const 2972) "\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\00\00\00") + (data (i32.const 3004) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3052) "\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 3084) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3180) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3212) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3260) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3308) "\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\00\00\00\00\00\00\00") + (data (i32.const 3340) "\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 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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3452) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3500) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3548) "\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 3580) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3628) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3676) "\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 3708) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3756) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3804) "\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 3836) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3884) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3932) "\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 3964) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4012) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4060) "\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 4092) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4140) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4188) "\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 4220) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4268) "\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 4300) "|\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 4428) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4492) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4524) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4556) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4588) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4620) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4684) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4716) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4748) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4780) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4812) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4844) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4876) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4908) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4940) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4972) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5004) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5036) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5068) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5100) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5132) "\1c\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5164) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5196) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5228) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5260) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5292) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5324) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5356) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5388) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5420) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5452) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5484) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5612) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5708) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5740) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5772) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5804) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5836) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5868) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") + (data (i32.const 5916) "\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?\00") + (data (i32.const 6108) "<\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6172) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6204) "<\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6268) "\\\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6364) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6396) "\\\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6492) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6540) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6572) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6620) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6668) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6700) ",\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\00\00\00\00\00\00\00\00") + (data (i32.const 6748) "\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 6780) "\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 6812) "\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\00\00\00\00\00\00\00") + (data (i32.const 6844) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6892) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6940) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6972) "\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 7004) "\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 7036) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7068) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7100) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7132) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7164) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7196) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7228) "\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 7260) "\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 7292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 7324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") + (data (i32.const 7356) "\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 7388) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00P\1c\00\00p\1c\00\00P\1c\00\00\90\1c\00\00\b0\1c\00\00\d0\1c\00\00\00\00\00\00") + (data (i32.const 7436) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\d0\1c\00\00P\1c\00\00P\1c\00\00\90\1c\00\00p\1c\00\00\b0\1c\00\00\00\00\00\00") + (data (i32.const 7484) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7516) "\1c\00\00\00\00\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 7548) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7580) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7612) "\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 7644) "\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 7676) "\1c\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") + (data (i32.const 7708) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 7756) "\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 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\00\00\00\00\00\00\00\00\00") + (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\00\00\00\00\00\00\00") + (data (i32.const 7980) "\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 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\00") + (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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (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\00\00\00\00\00") + (data (i32.const 9564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00-\002\00-\003\00\00\00") + (data (i32.const 9596) "\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 9628) "\1c\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") + (data (i32.const 9660) "\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\00\00\00\00") + (data (i32.const 9692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00_\00_\00\00\00\00\00\00\00\00\00") + (data (i32.const 9724) "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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9804) "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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9884) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") + (data (i32.const 9916) "\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 9948) "\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 9980) ",\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 10028) ",\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 10080) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 10136) "\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]\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11484) "\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 11516) "\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 11548) "\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 11580) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11628) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00,\002\00\00\00\00\00\00\00") + (data (i32.const 11660) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11708) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\01\ff\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11740) "\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\00") + (data (i32.const 11772) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\01\00\ff\ff\00\00\00\00\00\00\00\00") + (data (i32.const 11804) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11852) ",\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11900) "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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11980) "<\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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12044) "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\00\00\00\00\00\00\00\00\00") + (data (i32.const 12156) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\d0\1c\00\00P\1c\00\00P\1c\00\00\90\1c\00\00p\1c\00\00\b0\1c\00\00\00\00\00\00") + (data (i32.const 12204) ",\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,\00\00\00") + (data (i32.const 12252) "\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 12284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12316) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\b0+\00\00\f0/\00\00\00\00\00\00\100\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12364) "\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\00") + (data (i32.const 12396) "\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 12428) "\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\00\00\00\00\00\00\00") + (data (i32.const 12460) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12508) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\01\02\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12540) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\03\04\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12572) "\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 12604) "\1c\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\00\00\00\00") + (data (i32.const 12636) "\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 12668) "\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\00\00\00") + (data (i32.const 12700) "\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\00\00\00") + (data (i32.const 12732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00o\00n\00e\00\00\00\00\00\00\00") + (data (i32.const 12764) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\d01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00t\00w\00o\00\00\00\00\00\00\00") + (data (i32.const 12828) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00t\00h\00r\00e\00e\00\00\00") + (data (i32.const 12860) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\102\00\00\00\00\00\0002\00\00") + (data (i32.const 12892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00o\00u\00r\00\00\00\00\00") + (data (i32.const 12924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00f\00i\00v\00e\00\00\00\00\00") + (data (i32.const 12956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00s\00i\00x\00\00\00\00\00\00\00") + (data (i32.const 12988) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00p2\00\00\902\00\00\b02\00\00") + (data (i32.const 13020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00e\00v\00e\00n\00\00\00") + (data (i32.const 13052) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\f02\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13084) "<\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\d01\00\00\102\00\00\00\00\00\0002\00\00p2\00\00\902\00\00\b02\00\00\f02\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13148) "\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 13180) "\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 13212) "<\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 13276) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13308) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13344) ",\00\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\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\00\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\82\00\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\02\01\00\00\07\00\00\00B\00\00\00\06\00\00\00\02A\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (table $0 59 funcref) + (elem (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 $~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 $start:std/array~anonymous|43 $start:std/array~anonymous|44 $start:std/array~anonymous|45 $start:std/array~anonymous|46 $start:std/array~anonymous|47 $start:std/array~anonymous|48 $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) @@ -302,7 +319,7 @@ (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (global $std/array/charset i32 (i32.const 5792)) + (global $std/array/charset i32 (i32.const 5936)) (global $~lib/builtins/i32.MIN_VALUE i32 (i32.const -2147483648)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -312,238 +329,549 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/memory/__heap_base i32 (i32.const 13132)) (global $std/array/ArrayU32 i32 (i32.const 40)) (global $std/array/ArrayU8 i32 (i32.const 41)) (global $std/array/ArrayStr i32 (i32.const 42)) - (export "memory" (memory $0)) + (global $~lib/rt/__rtti_base i32 (i32.const 13344)) + (global $~lib/memory/__data_end i32 (i32.const 13700)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30084)) + (global $~lib/memory/__heap_base i32 (i32.const 30084)) + (global $~started (mut i32) (i32.const 0)) (export "ArrayU32" (global $std/array/ArrayU32)) - (export "ArrayU32#constructor" (func $std/array/ArrayU32#constructor@varargs)) - (export "ArrayU32#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU32#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU32#every" (func $~lib/array/Array#every)) - (export "ArrayU32#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU32#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU32#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU32#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU32#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU32#push" (func $~lib/array/Array#push)) - (export "ArrayU32#concat" (func $~lib/array/Array#concat)) - (export "ArrayU32#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU32#pop" (func $~lib/array/Array#pop)) - (export "ArrayU32#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU32#filter" (func $~lib/array/Array#filter)) - (export "ArrayU32#shift" (func $~lib/array/Array#shift)) - (export "ArrayU32#some" (func $~lib/array/Array#some)) - (export "ArrayU32#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU32#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU32#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU32#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU32#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU32#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU32#flat" (func $~lib/array/Array#flat)) - (export "ArrayU32#toString" (func $~lib/array/Array#toString)) (export "ArrayU8" (global $std/array/ArrayU8)) - (export "ArrayU8#constructor" (func $std/array/ArrayU8#constructor@varargs)) - (export "ArrayU8#get:length" (func $~lib/array/Array#get:length)) - (export "ArrayU8#set:length" (func $~lib/array/Array#set:length)) - (export "ArrayU8#every" (func $~lib/array/Array#every)) - (export "ArrayU8#findIndex" (func $~lib/array/Array#findIndex)) - (export "ArrayU8#fill" (func $~lib/array/Array#fill@varargs)) - (export "ArrayU8#includes" (func $~lib/array/Array#includes@varargs)) - (export "ArrayU8#indexOf" (func $~lib/array/Array#indexOf@varargs)) - (export "ArrayU8#lastIndexOf" (func $~lib/array/Array#lastIndexOf@varargs)) - (export "ArrayU8#push" (func $~lib/array/Array#push)) - (export "ArrayU8#concat" (func $~lib/array/Array#concat)) - (export "ArrayU8#copyWithin" (func $~lib/array/Array#copyWithin@varargs)) - (export "ArrayU8#pop" (func $~lib/array/Array#pop)) - (export "ArrayU8#forEach" (func $~lib/array/Array#forEach)) - (export "ArrayU8#filter" (func $~lib/array/Array#filter)) - (export "ArrayU8#shift" (func $~lib/array/Array#shift)) - (export "ArrayU8#some" (func $~lib/array/Array#some)) - (export "ArrayU8#unshift" (func $~lib/array/Array#unshift)) - (export "ArrayU8#slice" (func $~lib/array/Array#slice@varargs)) - (export "ArrayU8#splice" (func $~lib/array/Array#splice@varargs)) - (export "ArrayU8#reverse" (func $~lib/array/Array#reverse)) - (export "ArrayU8#sort" (func $~lib/array/Array#sort@varargs)) - (export "ArrayU8#join" (func $~lib/array/Array#join@varargs)) - (export "ArrayU8#flat" (func $~lib/array/Array#flat)) - (export "ArrayU8#toString" (func $~lib/array/Array#toString)) (export "ArrayStr" (global $std/array/ArrayStr)) - (export "ArrayStr#constructor" (func $std/array/ArrayStr#constructor@varargs)) - (export "ArrayStr#get:length" (func $~lib/array/Array<~lib/string/String>#get:length)) - (export "ArrayStr#set:length" (func $~lib/array/Array<~lib/string/String>#set:length)) - (export "ArrayStr#every" (func $~lib/array/Array<~lib/string/String>#every)) - (export "ArrayStr#findIndex" (func $~lib/array/Array<~lib/string/String>#findIndex)) - (export "ArrayStr#fill" (func $~lib/array/Array<~lib/string/String>#fill@varargs)) - (export "ArrayStr#includes" (func $~lib/array/Array<~lib/string/String>#includes@varargs)) - (export "ArrayStr#indexOf" (func $~lib/array/Array<~lib/string/String>#indexOf@varargs)) - (export "ArrayStr#lastIndexOf" (func $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs)) - (export "ArrayStr#push" (func $~lib/array/Array<~lib/string/String>#push)) - (export "ArrayStr#concat" (func $~lib/array/Array<~lib/string/String>#concat)) - (export "ArrayStr#copyWithin" (func $~lib/array/Array<~lib/string/String>#copyWithin@varargs)) - (export "ArrayStr#pop" (func $~lib/array/Array<~lib/string/String>#pop)) - (export "ArrayStr#forEach" (func $~lib/array/Array<~lib/string/String>#forEach)) - (export "ArrayStr#filter" (func $~lib/array/Array<~lib/string/String>#filter)) - (export "ArrayStr#shift" (func $~lib/array/Array<~lib/string/String>#shift)) - (export "ArrayStr#some" (func $~lib/array/Array<~lib/string/String>#some)) - (export "ArrayStr#unshift" (func $~lib/array/Array<~lib/string/String>#unshift)) - (export "ArrayStr#slice" (func $~lib/array/Array<~lib/string/String>#slice@varargs)) - (export "ArrayStr#splice" (func $~lib/array/Array<~lib/string/String>#splice@varargs)) - (export "ArrayStr#reverse" (func $~lib/array/Array<~lib/string/String>#reverse)) - (export "ArrayStr#sort" (func $~lib/array/Array<~lib/string/String>#sort@varargs)) - (export "ArrayStr#join" (func $~lib/array/Array<~lib/string/String>#join@varargs)) - (export "ArrayStr#flat" (func $~lib/array/Array<~lib/string/String>#flat)) - (export "ArrayStr#toString" (func $~lib/array/Array<~lib/string/String>#toString)) + (export "memory" (memory $0)) (export "__setArgumentsLength" (func $~setArgumentsLength)) - (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (export "_start" (func $~start)) + (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#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#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#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#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#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 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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/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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 256 - i32.const 272 - i32.const 14 + i32.const 192 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 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 + 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 0 - i32.const 256 - i32.const 274 - i32.const 14 + i32.const 320 + i32.const 384 + i32.const 22 + i32.const 28 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne 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 + ) + (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 $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.set $3 + local.get $0 local.get $1 + local.get $2 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $5 - local.set $8 - local.get $10 - local.get $9 + 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 273 + 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 464 + i32.const 275 + 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 464 + i32.const 288 + 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 @@ -619,7 +947,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -643,8 +971,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 200 + i32.const 464 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,8 +988,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 202 + i32.const 464 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -714,7 +1042,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -755,8 +1083,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 223 + i32.const 464 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -789,7 +1117,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -798,7 +1126,7 @@ 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 @@ -820,8 +1148,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 238 + i32.const 464 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -838,8 +1166,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 239 + i32.const 464 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -897,8 +1225,8 @@ i32.eqz if i32.const 0 + i32.const 464 i32.const 256 - i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -922,15 +1250,15 @@ 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 @@ -958,7 +1286,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -1002,8 +1330,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 380 + i32.const 464 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -1045,8 +1373,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 387 + i32.const 464 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1078,8 +1406,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 400 + i32.const 464 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1116,13 +1444,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 @@ -1133,7 +1461,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 @@ -1160,6 +1488,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 @@ -1202,7 +1532,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 @@ -1290,7 +1620,335 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1316,8 +1974,8 @@ i32.ge_u if i32.const 128 - i32.const 256 - i32.const 461 + i32.const 464 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1400,8 +2058,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 333 + i32.const 464 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1465,8 +2123,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 346 + i32.const 464 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1616,8 +2274,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 360 + i32.const 464 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1642,7 +2300,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 @@ -1655,7 +2313,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 @@ -1666,7 +2324,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 @@ -1696,7 +2354,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) @@ -1725,8 +2383,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 498 + i32.const 464 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1745,8 +2403,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 500 + i32.const 464 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1774,44 +2432,15 @@ 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/rt/itcms/Object#set:rtId (param $0 i32) (param $1 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 $1 + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) 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) @@ -2026,154 +2655,151 @@ end end ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 128 i32.const 192 - i32.const 109 - i32.const 3 + i32.const 256 + 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 - i32.const 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 - i32.store offset=4 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 i32.const 0 - drop + 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.load - i32.const 1 - i32.and - i32.eqz i32.eqz if i32.const 0 i32.const 192 - i32.const 112 + i32.const 290 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 + 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 - call $~lib/rt/pure/increment + 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 - 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 + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 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 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - local.get $3 + local.get $1 i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - local.get $2 + 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 - local.get $0 ) (func $~lib/array/Array.isArray<~lib/array/Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 if (result i32) local.get $0 @@ -2182,31 +2808,13 @@ else i32.const 0 end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) - (func $std/array/Ref#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $std/array/Ref#set:v (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store - local.get $0 ) (func $~lib/array/Array.isArray (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 0 if (result i32) local.get $0 @@ -2215,126 +2823,40 @@ else i32.const 0 end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) - (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.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 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 - i32.const 0 - i32.store offset=8 local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 368 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable + i32.store offset=8 + ) + (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) + i32.const 0 + if (result i32) + local.get $0 + i32.const 0 + i32.ne + else + i32.const 0 end - local.get $1 - local.get $2 - i32.shl - local.tee $1 + ) + (func $~lib/array/Array.isArray (param $0 i32) (result i32) i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - 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 $1 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 0 - if (result i32) - local.get $0 - i32.const 0 - i32.ne - else - i32.const 0 - end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (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 $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + ) + (func $~lib/array/Array.isArray<~lib/string/String> (param $0 i32) (result i32) i32.const 0 if (result i32) local.get $0 @@ -2343,16 +2865,8 @@ else i32.const 0 end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/array/Array.isArray<~lib/array/Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 if (result i32) local.get $0 @@ -2361,10 +2875,6 @@ else i32.const 0 end - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3623,7 +4133,7 @@ (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.set $3 local.get $2 if @@ -3634,38 +4144,6 @@ end local.get $3 ) - (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) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) (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) @@ -3747,7 +4225,6 @@ call $~lib/memory/memory.fill end local.get $0 - call $~lib/rt/pure/__retain ) (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 @@ -3762,115 +4239,6 @@ i32.add i32.load8_u ) - (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 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - 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 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 $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 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - 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.get $3 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - 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 $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - 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) @@ -3960,7 +4328,6 @@ end end local.get $0 - call $~lib/rt/pure/__retain ) (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 @@ -3975,1021 +4342,639 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $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 - i32.const 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + ) + (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 ) - (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + i32.const 20 + i32.sub + local.set $2 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $2 - i32.eqz + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u 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 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + call $~lib/rt/itcms/Object#set:rtSize local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + return end - i32.const 0 + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new local.set $3 - loop $for-loop|0 - local.get $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/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.lt_s + 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/itcms/__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 - 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 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link 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 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + i32.const 2 + call $~lib/array/ensureSize + i32.const 0 + drop local.get $0 - i32.load offset=12 - ) - (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $3 + call $~lib/array/Array#set:length_ + local.get $3 ) - (func $std/array/internalCapacity (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load - call $~lib/rt/pure/__retain - local.set $1 + i32.load offset=4 local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength i32.const 2 - i32.shr_s - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 + i32.shl + i32.add + i32.load ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (func $~lib/array/Array#pop (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) local.get $0 - i32.const 4 - i32.sub + i32.load offset=12 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 + local.get $1 + i32.const 1 + i32.lt_s if - i32.const 0 + i32.const 1152 + i32.const 80 i32.const 256 - i32.const 563 - i32.const 3 + i32.const 21 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) + 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.load - i32.const 1 - i32.or + i32.const 2 + i32.shl + i32.add + local.get $2 i32.store - i32.const 0 + i32.const 1 drop local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 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 + i32.store offset=12 + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - call $~lib/memory/memory.copy + i32.const 2 + call $~lib/array/ensureSize + local.get $0 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 + call $~lib/array/Array#set:length_ ) - (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) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 - local.get $1 - i32.load + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $0 + i32.load offset=4 local.set $4 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and + local.get $0 + i32.load offset=12 local.set $5 local.get $3 + local.tee $6 local.get $5 - i32.le_u - if - local.get $0 + 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.get $3 - call $~lib/rt/tlsf/prepareBlock + i32.add + local.tee $7 i32.const 0 - drop + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + else local.get $1 - return + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select 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 $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $5 - i32.const 4 - i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor - i32.and + local.get $2 i32.add - local.set $6 + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 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 + 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.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u + local.set $9 + local.get $3 + i32.const 0 + i32.lt_s 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 + 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 - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $1 - call $~lib/rt/tlsf/reallocateBlock + local.get $3 + local.tee $6 + local.get $5 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select end - i32.const 4 + 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/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#unshift (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 $3 i32) local.get $0 - i32.const 16 - i32.sub - i32.const 16 - local.get $1 + i32.load offset=12 + i32.const 1 i32.add - call $~lib/rt/tlsf/__realloc local.set $2 + local.get $0 local.get $2 + i32.const 2 + call $~lib/array/ensureSize + 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 offset=16 + i32.store + i32.const 0 + drop + local.get $0 + local.get $2 + call $~lib/array/Array#set:length_ local.get $2 - i32.const 16 - i32.add ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#shift (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=8 - local.set $3 + i32.load offset=12 + local.set $1 local.get $1 - local.get $3 - local.get $2 - i32.shr_u - i32.gt_u + i32.const 1 + i32.lt_s 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 + i32.const 1152 + i32.const 80 + i32.const 315 + i32.const 21 + call $~lib/builtins/abort + unreachable 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 + 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.set $3 - local.get $0 - local.get $3 + local.get $4 i32.const 2 - call $~lib/array/ensureSize + i32.shl + call $~lib/memory/memory.copy i32.const 0 drop - local.get $0 - i32.load offset=4 local.get $2 + local.get $4 i32.const 2 i32.shl i32.add - local.get $1 + i32.const 0 i32.store local.get $0 + local.get $4 + call $~lib/array/Array#set:length_ local.get $3 - i32.store offset=12 - local.get $3 - ) - (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#__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 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) + (func $~lib/array/Array#reverse (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 1008 - i32.const 80 - i32.const 300 - 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#set:length (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) local.get $0 i32.load offset=12 - local.set $2 - i32.const 1 - drop - local.get $2 + local.set $1 local.get $1 - i32.gt_s if local.get $0 i32.load offset=4 - local.set $3 - local.get $3 + local.set $2 + local.get $0 + i32.load offset=4 local.get $1 + i32.const 1 + i32.sub i32.const 2 i32.shl i32.add - local.set $4 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $5 - loop $do-continue|0 - local.get $4 - i32.load - call $~lib/rt/pure/__release - local.get $4 - i32.const 4 - i32.add - local.tee $4 - local.get $5 + local.set $3 + loop $while-continue|0 + local.get $2 + local.get $3 i32.lt_u - local.set $6 - local.get $6 - br_if $do-continue|0 + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $2 + local.get $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.set $3 + br $while-continue|0 + end end - else - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize end 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#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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 $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 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 + 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 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable + i32.const -1 + return end - local.get $4 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 local.get $2 - i32.const 2 - i32.shl - local.set $7 i32.const 0 - drop - local.get $6 + 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.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 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 + 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#copyWithin (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 $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 + local.get $3 i32.const 0 - i32.lt_s + i32.eq 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 + i32.const 1 else - local.get $1 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select + local.get $2 + local.get $3 + i32.ge_s + end + if + i32.const -1 + return end - local.set $8 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 $7 + local.tee $4 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.tee $5 + local.get $4 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 + local.set $2 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 - i32.const 0 - drop - 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 - call $~lib/rt/pure/__retain - ) - (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array#get:length - local.set $2 + i32.load offset=4 + local.set $6 + loop $while-continue|0 local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - 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 $6 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load local.get $1 - local.get $3 - call $~lib/array/Array#__get - i32.ne + f32.eq if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 + local.get $2 return end - local.get $3 + local.get $2 i32.const 1 i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (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 - call $~lib/array/ensureSize - 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 - i32.const 0 - drop - local.get $3 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=12 - 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 - i32.const 1008 - i32.const 80 - i32.const 361 - i32.const 21 - 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 - i32.store offset=12 - local.get $3 - ) - (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.get $0 - i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - 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 $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $while-continue|0 - end + local.set $2 + br $while-continue|0 end end - local.get $0 - call $~lib/rt/pure/__retain + i32.const -1 ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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) @@ -5039,12 +5024,12 @@ if local.get $6 local.get $2 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + f64.load local.get $1 - i32.eq + f64.eq if local.get $2 return @@ -5058,11 +5043,13 @@ end i32.const -1 ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result 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 $6 f32) + i32.const 1 + drop local.get $0 i32.load offset=12 local.set $3 @@ -5077,7 +5064,7 @@ i32.ge_s end if - i32.const -1 + i32.const 0 return end local.get $2 @@ -5098,24 +5085,37 @@ end local.get $0 i32.load offset=4 - local.set $6 + local.set $4 loop $while-continue|0 local.get $2 local.get $3 i32.lt_s - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $6 + local.get $4 local.get $2 i32.const 2 i32.shl 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 - local.get $2 + i32.const 1 return end local.get $2 @@ -5125,13 +5125,16 @@ br $while-continue|0 end end - i32.const -1 + i32.const 0 + return ) - (func $~lib/array/Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result 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 i32) + (local $6 f64) + i32.const 1 + drop local.get $0 i32.load offset=12 local.set $3 @@ -5146,7 +5149,7 @@ i32.ge_s end if - i32.const -1 + i32.const 0 return end local.get $2 @@ -5167,24 +5170,37 @@ end local.get $0 i32.load offset=4 - local.set $6 + local.set $4 loop $while-continue|0 local.get $2 local.get $3 i32.lt_s - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $6 + 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 - local.get $2 + i32.const 1 return end local.get $2 @@ -5194,1603 +5210,1274 @@ 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 + return + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 + i32.load offset=4 local.get $1 - local.get $2 - call $~lib/array/Array#indexOf - i32.const 0 - i32.ge_s - return + i32.const 2 + i32.shl + i32.add + i32.load ) - (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) + (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 - 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 - 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 - local.set $5 - local.get $5 - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - 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 - end - i32.const 0 - return - ) - (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 $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 - i32.gt_s - select - local.set $2 - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) 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.store offset=12 ) - (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) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) 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 - 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 - local.get $2 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) 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.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 - 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 - i32.store offset=12 - local.get $6 + i32.store + i32.const 0 + drop ) - (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) + (func $start:std/array~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) 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 - 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.eq + ) + (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|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|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 - local.tee $4 - local.get $5 - local.get $4 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 8 + i32.ge_s + ) + (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 + i32.le_s + ) + (func $start:std/array~anonymous|9 (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|11 (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|12 (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|14 (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|16 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i 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 - call $~lib/memory/memory.copy - local.get $1 - local.get $2 + global.set $std/array/i + ) + (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $std/array/i + local.get $0 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 + global.set $std/array/i + ) + (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 + f32.convert_i32_s ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 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#__uget (param $0 i32) (param $1 i32) (result f32) local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain + f32.load ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $std/array/i local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/array/i + local.get $0 + ) + (func $start:std/array~anonymous|25 (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|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 + i32.const 2 + i32.ge_s + ) + (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 4176 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.add ) - (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) + (func $start:std/array~anonymous|30 (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 $1 - i32.const 0 - i32.lt_s + i32.add + ) + (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 if (result i32) - local.get $3 + i32.const 1 + else local.get $1 - i32.add - local.tee $4 - i32.const 0 - local.tee $5 - local.get $4 - local.get $5 + i32.const 2 i32.gt_s - select + end + ) + (func $start:std/array~anonymous|32 (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 - local.tee $5 - local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + i32.const 100 + i32.gt_s end - local.set $1 - local.get $2 - local.tee $4 - local.get $3 + ) + (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.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 - local.get $2 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 + i32.add + ) + (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) 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 - call $~lib/memory/memory.copy + ) + (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 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 + ) + (func $start:std/array~anonymous|38 (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.shl - call $~lib/memory/memory.copy + i32.gt_s end - local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $start:std/array~anonymous|39 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) local.get $0 - i32.load offset=12 + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 100 + i32.gt_s + end ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|41 (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 - i32.load - call $~lib/rt/pure/__retain ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/math/murmurHash3 (param $0 i64) (result i64) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz - drop - local.get $2 + 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/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop + (func $~lib/math/splitMix32 (param $0 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + i32.const 1831565813 i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + local.set $0 local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 528 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - 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 $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + i32.const 15 + i32.shr_u + i32.xor local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + 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/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + i32.const 1 + global.set $~lib/math/random_seeded 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 + 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 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + if (result i32) + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state0_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 5888 + i32.const 1399 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 f32) + (local $9 i32) + 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 $0 - i32.load offset=4 - local.get $2 + local.get $3 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 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return + f32.load + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_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 $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + else + br $while-break|1 + end + br $while-continue|1 + end + end end - local.get $2 + local.get $0 + local.get $6 i32.const 1 i32.add - local.set $2 + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 br $for-loop|0 end end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 1 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|2 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|4 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 100 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 ) - (func $start:std/array~anonymous|5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 100 - i32.eq + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + (local $10 f32) + (local $11 i32) + (local $12 f32) + local.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 - ) - (func $start:std/array~anonymous|6 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 + call $~lib/rt/tlsf/__alloc + local.set $4 + local.get $4 i32.const 0 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 - ) - (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) + call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 + i32.const 1 + i32.sub + local.set $5 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 + i32.const 0 + i32.gt_s + local.set $6 + local.get $6 if + local.get $5 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 local.get $0 - i32.load offset=4 - local.get $2 + local.get $8 i32.const 2 i32.shl i32.add - i32.load - local.get $2 + f32.load + local.set $9 local.get $0 - i32.const 3 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + local.get $9 + local.get $10 + i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release + local.get $4 local.get $5 - return + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $9 + f32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $10 + f32.store end - local.get $2 + local.get $5 i32.const 1 - i32.add - local.set $2 + i32.sub + local.set $5 br $for-loop|0 end end - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|7 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|8 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop - local.get $0 - i32.const 10 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 10 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 - i32.lt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|11 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 3 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - 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) local.get $1 - call $~lib/rt/pure/__retain - local.set $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 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 local.get $5 - i32.lt_s - select - i32.lt_s - local.set $4 - local.get $4 + i32.const 2 + i32.ge_s + local.set $6 + local.get $6 if local.get $0 - i32.load offset=4 - local.get $2 + f32.load + local.set $10 + local.get $0 + local.get $0 + local.get $5 i32.const 2 i32.shl i32.add - i32.load - local.get $2 + f32.load + f32.store local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 + local.get $5 + i32.const 2 + i32.shl i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|12 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const -1 - i32.le_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $10 + f32.store + i32.const 1 + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $7 + local.set $8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if + local.get $0 + f32.load + local.set $10 + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $9 + local.get $10 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $8 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $10 + f32.store + local.get $0 + local.get $9 + f32.store + end + local.get $8 + i32.const 1 + i32.shr_s + local.set $8 + br $while-continue|4 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|2 + end + end + local.get $4 + call $~lib/rt/tlsf/__free + local.get $0 + f32.load offset=4 + local.set $12 + local.get $0 + local.get $0 + f32.load + f32.store offset=4 + local.get $0 + local.get $12 + f32.store ) - (func $start:std/array~anonymous|13 (param $0 i32) (param $1 i32) (param $2 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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - i32.const 100 - call $~lib/array/Array#push - drop local.get $0 - i32.const 10 - i32.gt_s + i32.reinterpret_f32 + local.set $2 + local.get $1 + i32.reinterpret_f32 local.set $3 local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|14 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) local.get $2 - call $~lib/rt/pure/__retain + i32.const 31 + i32.shr_s + i32.const 1 + i32.shr_u + i32.xor local.set $2 - local.get $0 - i32.const 10 - i32.gt_s + 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 - call $~lib/rt/pure/__release local.get $3 - ) - (func $start:std/array~anonymous|15 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $2 - call $~lib/array/Array#pop - drop - local.get $0 - i32.const 3 i32.gt_s - local.set $3 local.get $2 - call $~lib/rt/pure/__release local.get $3 + i32.lt_s + i32.sub ) - (func $start:std/array~anonymous|16 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 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 + local.get $1 i32.lt_s local.set $4 local.get $4 if local.get $0 - i32.load offset=4 - local.get $2 - i32.const 2 + local.get $3 + i32.const 3 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 (type $i32_i32_i32_=>_none) - local.get $2 + f64.load + local.set $5 + local.get $3 i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|17 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|18 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|19 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 0 - i32.eq - 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 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + else + br $while-break|1 + end + br $while-continue|1 + end + end end - end - i32.const 0 - local.set $3 - loop $for-loop|3 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store 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 - local.get $0 - i32.const 202 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 625 - i32.const 7 - call $~lib/builtins/abort - unreachable + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $start:std/array~anonymous|21 (param $0 i32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.convert_i32_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 ) - (func $~lib/array/Array#map (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/sort/weakHeapSort (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 $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 i32) + (local $12 f64) 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 31 + i32.add + i32.const 5 + i32.shr_u i32.const 2 - i32.const 9 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + i32.shl local.set $3 local.get $3 - i32.load offset=4 + call $~lib/rt/tlsf/__alloc local.set $4 + local.get $4 i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub 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 + i32.const 0 + i32.gt_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 (type $i32_i32_i32_=>_f32) - local.set $8 - i32.const 0 - drop - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (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 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $10 + local.get $9 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|0 + end end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $start:std/array~anonymous|22 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - 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.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 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 + i32.const 1 + i32.sub local.set $5 - loop $for-loop|0 + loop $for-loop|2 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 + i32.const 2 + i32.ge_s local.set $6 local.get $6 if local.get $0 - i32.load offset=4 + f64.load + local.set $10 + local.get $0 + local.get $0 local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load - local.get $5 + f64.load + f64.store local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - local.set $7 - i32.const 0 - drop - local.get $4 local.get $5 - i32.const 2 + i32.const 3 i32.shl i32.add - local.get $7 - i32.store - local.get $5 + local.get $10 + f64.store i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|24 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $7 + local.set $8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if + local.get $0 + f64.load + local.set $10 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + local.get $10 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $8 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + local.get $0 + local.get $9 + f64.store + end + local.get $8 + i32.const 1 + i32.shr_s + local.set $8 + br $while-continue|4 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|2 + end + end + local.get $4 + call $~lib/rt/tlsf/__free + local.get $0 + f64.load offset=8 + local.set $12 + local.get $0 + local.get $0 + f64.load + f64.store offset=8 + local.get $0 + local.get $12 + f64.store ) - (func $start:std/array~anonymous|25 (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + i64.reinterpret_f64 + local.set $2 + local.get $1 + i64.reinterpret_f64 + local.set $3 local.get $2 - call $~lib/rt/pure/__retain + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor local.set $2 - local.get $0 - i32.const 2 - i32.ge_s + 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 - call $~lib/rt/pure/__release local.get $3 + i64.gt_s + local.get $2 + local.get $3 + i64.lt_s + i32.sub ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 + (local $7 i32) + (local $8 i32) + (local $9 i32) 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.get $1 i32.lt_s - local.set $5 - local.get $5 + local.set $4 + local.get $4 if local.get $0 - i32.load offset=4 local.get $3 i32.const 2 i32.shl i32.add i32.load + local.set $5 + local.get $3 + i32.const 1 + i32.sub local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 local.get $6 - local.get $3 - local.get $0 - i32.const 3 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop - end + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store local.get $3 i32.const 1 i32.add @@ -6798,2669 +6485,4951 @@ br $for-loop|0 end end - local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|26 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|27 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - global.get $std/array/i - local.get $0 - i32.add - global.set $std/array/i - local.get $0 - i32.const 2 - i32.ge_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|28 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $start:std/array~anonymous|29 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 ) - (func $~lib/array/Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/weakHeapSort (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl local.set $3 - i32.const 0 + local.get $3 + call $~lib/rt/tlsf/__alloc local.set $4 - local.get $0 - i32.load offset=12 + local.get $4 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub 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 - i32.lt_s - select - i32.lt_s + i32.const 0 + i32.gt_s local.set $6 local.get $6 if - local.get $3 + local.get $5 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 local.get $0 - i32.load offset=4 - local.get $4 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.get $4 + local.set $9 local.get $0 - i32.const 4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + local.get $9 + local.get $10 + i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $2 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + end + local.get $5 i32.const 1 - i32.add - local.set $4 + i32.sub + local.set $5 br $for-loop|0 end end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|30 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|31 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 i32.const 2 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (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 $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 - i32.lt_s - select - i32.lt_s + i32.ge_s local.set $6 local.get $6 if - local.get $3 local.get $0 - i32.load offset=4 - local.get $4 + i32.load + local.set $10 + local.get $0 + local.get $0 + local.get $5 i32.const 2 i32.shl i32.add i32.load - local.get $4 + i32.store local.get $0 - i32.const 4 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 - i32.const 1 + local.get $5 + i32.const 2 + i32.shl i32.add - local.set $4 - br $for-loop|0 + local.get $10 + i32.store + i32.const 1 + local.set $9 + loop $while-continue|3 + local.get $9 + i32.const 1 + i32.shl + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $8 + local.get $5 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $8 + local.set $9 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 0 + i32.gt_s + local.set $7 + local.get $7 + if + local.get $0 + i32.load + local.set $10 + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $10 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $9 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + local.get $0 + local.get $11 + i32.store + end + local.get $9 + i32.const 1 + i32.shr_s + local.set $9 + br $while-continue|4 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|2 end end - local.get $3 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $start:std/array~anonymous|32 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release local.get $4 - ) - (func $start:std/array~anonymous|33 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.const 1 - call $~lib/array/Array#push - drop + call $~lib/rt/tlsf/__free local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|34 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + i32.load offset=4 + local.set $12 local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - call $~lib/array/Array#pop - drop local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.load + i32.store offset=4 + local.get $0 + local.get $12 + i32.store ) - (func $start:std/array~anonymous|36 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.sub ) - (func $~lib/array/Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + i32.const 0 local.set $3 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 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 $3 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 (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 + local.set $5 + local.get $3 i32.const 1 i32.sub - local.set $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + local.get $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 br $for-loop|0 end end - local.get $3 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 ) - (func $start:std/array~anonymous|37 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 + (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 $1 + i32.const 31 i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|38 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 2 - i32.gt_s - end - local.set $4 local.get $3 - call $~lib/rt/pure/__release + call $~lib/rt/tlsf/__alloc + local.set $4 local.get $4 - ) - (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) + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - local.set $3 - local.get $0 - i32.load offset=12 i32.const 1 i32.sub - local.set $4 + local.set $5 loop $for-loop|0 - local.get $4 - i32.const 0 - i32.ge_s - local.set $5 local.get $5 + i32.const 0 + i32.gt_s + local.set $6 + local.get $6 if - local.get $3 + local.get $5 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 local.get $0 - i32.load offset=4 - local.get $4 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.get $4 + local.set $9 local.get $0 - i32.const 4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $10 + local.get $9 + local.get $10 + i32.const 2 global.set $~argumentsLength - local.get $1 + local.get $2 i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $4 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + local.get $0 + local.get $8 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + end + local.get $5 i32.const 1 i32.sub - local.set $4 + local.set $5 br $for-loop|0 end end - local.get $3 - local.set $4 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|39 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 100 - i32.gt_s - end - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|40 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 i32.const 1 - call $~lib/array/Array#push - drop - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + local.set $6 + local.get $6 + if + local.get $0 + i32.load + local.set $10 + local.get $0 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + i32.const 1 + local.set $9 + loop $while-continue|3 + local.get $9 + i32.const 1 + i32.shl + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $8 + local.get $5 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $8 + local.set $9 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 0 + i32.gt_s + local.set $7 + local.get $7 + if + local.get $0 + i32.load + local.set $10 + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + local.get $10 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $9 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store + local.get $0 + local.get $11 + i32.store + end + local.get $9 + i32.const 1 + i32.shr_s + local.set $9 + br $while-continue|4 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|2 + end + end local.get $4 + call $~lib/rt/tlsf/__free + local.get $0 + i32.load offset=4 + local.set $12 + local.get $0 + local.get $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $12 + i32.store ) - (func $start:std/array~anonymous|41 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $start:std/array~anonymous|42 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - call $~lib/array/Array#pop - drop + i32.gt_u local.get $0 local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.lt_u + i32.sub ) - (func $~lib/math/murmurHash3 (param $0 i64) (result i64) + (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 33 - i64.shr_u + i64.const 23 + i64.shl 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.const 17 i64.shr_u i64.xor local.set $0 local.get $0 - i64.const -4265267296055464877 - i64.mul + local.get $1 + i64.xor local.set $0 local.get $0 - local.get $0 - i64.const 33 + 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/math/splitMix32 (param $0 i32) (result i32) - local.get $0 - i32.const 1831565813 - i32.add - local.set $0 + (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 15 - i32.shr_u - i32.xor + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - i32.const 1 - i32.or - i32.mul - local.set $0 + i32.sub + ) + (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) local.get $0 + local.get $1 + i32.sub + ) + (func $start:std/array~anonymous|46 (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 + local.get $1 + i32.store local.get $0 - i32.const 7 - i32.shr_u - i32.xor + local.get $1 + 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 - i32.const 61 - i32.or - i32.mul - i32.add - i32.xor - local.set $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array<~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) local.get $0 - i32.const 14 - i32.shr_u - i32.xor + local.get $1 + i32.store offset=12 ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) + (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 - global.set $~lib/math/random_seeded + drop 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 $2 + i32.const 1 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) 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 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - if (result i32) - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state0_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 5744 - i32.const 1399 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.load offset=12 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 i32) - (local $8 f32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/array/Array<~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>#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 - 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 $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_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 $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - f32.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__link ) - (func $~lib/rt/tlsf/__free (param $0 i32) + (func $~lib/array/Array>#set:dataStart (param $0 i32) (param $1 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 $1 + i32.store offset=4 + ) + (func $~lib/array/Array>#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - call $~lib/rt/tlsf/freeBlock + local.get $1 + i32.store offset=8 ) - (func $~lib/util/sort/weakHeapSort (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 i32) - (local $12 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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 31 - i32.add - i32.const 5 - i32.shr_u i32.const 2 i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 + 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|48 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + ) + (func $~lib/array/Array>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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<~lib/string/String|null>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array<~lib/string/String|null>#__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/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 - loop $for-loop|0 + 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 0 - i32.gt_s - local.set $6 + i32.const 7 + i32.and local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|0 + local.get $5 + i64.load + local.get $6 + i64.load + i64.ne if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 + br $do-break|0 end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 local.get $5 - i32.const 2 - i32.shl + i32.const 8 i32.add - local.get $9 - f32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl + local.set $5 + local.get $6 + i32.const 8 i32.add - local.get $10 - f32.store + local.set $6 + local.get $4 + i32.const 4 + i32.sub + local.set $4 + local.get $4 + i32.const 4 + i32.ge_u + local.set $7 + local.get $7 + br_if $do-continue|0 end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 end end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 + 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 $0 - f32.load - local.set $10 - local.get $0 - local.get $0 + 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.shl i32.add - f32.load - f32.store - local.get $0 - local.get $5 + local.set $5 + local.get $6 i32.const 2 - i32.shl i32.add - local.get $10 - f32.store - i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u + local.set $6 + br $while-continue|1 + end + end + i32.const 0 + ) + (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.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f32.load - local.set $10 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - f32.store - local.get $0 - local.get $9 - f32.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $5 + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + drop + i32.const 7504 + br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 end + local.tee $1 + i32.store end - local.get $4 - call $~lib/rt/tlsf/__free local.get $0 - f32.load offset=4 - local.set $12 + 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/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store local.get $0 - f32.load - f32.store offset=4 + 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 $12 - f32.store - local.get $2 - call $~lib/rt/pure/__release + local.get $1 + i32.store offset=4 ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 f32) - (local $7 i32) - (local $8 i32) + (func $~lib/array/Array<~lib/string/String>#set:byteLength (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=8 + ) + (func $~lib/array/Array<~lib/string/String>#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - local.set $2 - local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + local.get $1 + i32.store offset=12 + ) + (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.set $4 - local.get $2 + local.get $1 i32.const 2 - i32.eq - if - local.get $4 - f32.load offset=4 - local.set $5 - local.get $4 - f32.load - local.set $6 - local.get $5 - local.get $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - f32.store offset=4 - local.get $4 - local.get $5 - f32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $4 - local.set $8 + i32.shl + i32.add local.get $2 - local.set $7 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 + i32.store + i32.const 1 drop - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/weakHeapSort - end - local.get $3 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array<~lib/string/String>#get:length (param $0 i32) (result i32) local.get $0 - 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 + i32.load offset=12 ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (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 $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 - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) i32.const 0 drop - i32.const 1 + i32.const 0 drop - i32.const 4 - i32.const 4 - i32.eq + i32.const 1 drop - i32.const 6048 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 7568 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end - local.tee $2 - local.set $1 + local.tee $1 + i32.store end local.get $0 local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + 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 $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result 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 $2 - i32.eqz + i32.const 100000 + i32.lt_u 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 + i32.const 100 + i32.lt_u if - i32.const 0 - local.set $3 + i32.const 1 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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.eq + i32.const 10000000 + i32.lt_u if - i32.const 1 - local.set $3 + i32.const 6 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + i32.const 1000000 + i32.ge_u + i32.add 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 - 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 - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - end - local.get $3 - i32.const 1 + else + i32.const 8 + local.get $0 + i32.const 1000000000 + i32.ge_u i32.add - local.set $3 - br $for-loop|0 + local.get $0 + i32.const 100000000 + i32.ge_u + i32.add + return end + unreachable end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + unreachable ) - (func $~lib/util/sort/insertionSort (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 f64) + (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 local.get $1 - i32.lt_s - local.set $4 - local.get $4 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 if - local.get $0 - local.get $3 - i32.const 3 + 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 8012 + local.get $6 + i32.const 2 i32.shl i32.add - f64.load - local.set $5 - local.get $3 - i32.const 1 + i64.load32_u + local.set $8 + i32.const 8012 + 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 $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end + local.set $2 local.get $0 - local.get $6 + local.get $2 i32.const 1 - i32.add - i32.const 3 i32.shl i32.add - local.get $5 - f64.store - local.get $3 + 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 8012 + 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 8012 + 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.set $3 - br $for-loop|0 + i32.const 8432 + 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 - call $~lib/rt/pure/__release + i32.const 1 + i32.and + if + local.get $0 + i32.const 8432 + local.get $1 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (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 $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - local.get $2 - call $~lib/rt/pure/__retain + 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 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + i64.extend_i32_s local.set $3 local.get $3 - call $~lib/rt/tlsf/__alloc local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 i32.const 1 - i32.sub local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 + 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 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 i32.shl - i32.add - f64.load - local.set $9 + 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 $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.get $9 - f64.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - end + local.get $3 + i64.div_u + local.set $0 local.get $5 i32.const 1 - i32.sub + i32.add local.set $5 - br $for-loop|0 + br $while-continue|1 end end - local.get $1 + local.get $5 i32.const 1 i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s + ) + (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 $7 i32) + 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 - local.get $6 - if - local.get $0 - f64.load - local.set $10 - local.get $0 + loop $do-continue|0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 local.get $0 - local.get $5 - i32.const 3 + local.get $2 + i32.const 1 i32.shl i32.add - f64.load - f64.store - local.get $0 + i32.const 9488 + 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 - i32.const 3 + i64.shr_u + local.set $1 + local.get $1 + i64.const 0 + i64.ne + local.set $7 + local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 - local.get $10 - f64.store + i32.const 9488 + local.get $1 + local.get $6 + local.get $4 + i64.mul + i64.sub + i32.wrap_i64 i32.const 1 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if - local.get $0 - f64.load - local.set $10 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - local.get $10 - f64.store - local.get $0 - local.get $9 - f64.store - end - local.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 - end - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $6 + local.set $1 + local.get $1 + i64.const 0 + i64.ne + local.set $7 + local.get $7 + br_if $do-continue|1 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store - local.get $2 - call $~lib/rt/pure/__release ) - (func $~lib/array/Array#sort (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 f64) - (local $6 f64) - (local $7 i32) - (local $8 i32) + (local $5 i32) + (local $6 i32) + i32.const 0 + local.set $2 + i32.const 1 + drop local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 + 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 - call $~lib/rt/pure/__retain - local.set $3 + local.get $2 + i32.const 1 + i32.shl + i32.add local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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 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 - i32.load offset=4 + local.set $6 + local.get $1 + local.set $5 + local.get $3 local.set $4 - local.get $2 - i32.const 2 - i32.eq + 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/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 10 + i32.lt_u if - local.get $4 - f64.load offset=8 - local.set $5 - local.get $4 - f64.load - local.set $6 - local.get $5 - local.get $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $6 - f64.store offset=8 - local.get $4 - local.get $5 - f64.store - end local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__release - local.get $3 + i32.const 48 + i32.or + i32.store16 + i32.const 1 return end - local.get $4 - local.set $8 local.get $2 - local.set $7 - local.get $1 - call $~lib/rt/pure/__retain local.set $3 - i32.const 0 + i32.const 4 + i32.const 4 + i32.le_u drop - local.get $7 - i32.const 256 - i32.lt_s - if - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/insertionSort - else - local.get $8 - local.get $7 - local.get $3 - call $~lib/util/sort/weakHeapSort - end local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 local.get $0 - i64.reinterpret_f64 - local.set $2 + local.set $6 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.set $5 local.get $3 - i64.gt_s - local.get $2 + 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 - i64.lt_s - i32.sub ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - 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 6240 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (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 528 - i32.const 80 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - 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 $6 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 $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 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - end + (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 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.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 - local.set $6 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release + 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 - call $~lib/rt/pure/__release + i64.sub + local.set $10 local.get $3 - ) - (func $~lib/util/sort/insertionSort (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 + 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 $13 + i32.const 0 + i32.gt_s + local.set $15 + local.get $15 if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 + 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 - br $while-continue|1 + 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 $0 - local.get $6 + 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.add - i32.const 2 - i32.shl - i32.add + 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 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/util/sort/weakHeapSort (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u + 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 11008 + local.get $13 i32.const 2 i32.shl i32.add - i32.load + 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.shr_s - i32.const 31 - i32.and - i32.shr_u + i32.sub i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|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 - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $9 - local.get $0 + 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 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + 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 $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $0 + local.get $14 + local.tee $25 + i32.const 1 i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 + local.set $14 + local.get $25 + i32.const 1 i32.shl i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 + i32.const 48 + local.get $22 + i32.wrap_i64 + i32.const 65535 i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 + 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 11008 + i32.const 0 + local.get $13 + i32.sub i32.const 2 i32.shl i32.add - local.get $9 - i32.store + 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 - i32.const 2 + 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.get $10 - i32.store - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + 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 $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load + local.get $24 i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store + i32.sub + local.set $24 + local.get $21 + local.get $20 + i64.add + local.set $21 + br $while-continue|6 end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 end + local.get $25 + local.get $24 + i32.store16 + local.get $14 + return end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + br $while-continue|4 end end - local.get $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load offset=4 - local.set $12 - local.get $0 - local.get $0 - i32.load - i32.store offset=4 - local.get $0 - local.get $12 - i32.store - local.get $2 - call $~lib/rt/pure/__release + unreachable ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $2 - i32.const 1 - i32.le_s + i32.eqz if local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__release - 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 $1 + i32.const 2 + i32.add return end - local.get $0 - i32.load offset=4 - local.set $4 + local.get $1 local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load - local.set $5 + i32.add + local.set $3 + local.get $1 + local.get $3 + i32.le_s + if (result i32) local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) + i32.const 21 + i32.le_s + else i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 + end + if + local.get $1 + local.set $4 + loop $for-loop|0 local.get $4 local.get $3 - i32.store + 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 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop - local.get $3 - i32.const 256 - i32.lt_s - if - local.get $5 local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort + 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 $5 local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort - end - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - i32.sub - ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 6416 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 + i32.const 0 + i32.gt_s + if (result i32) + local.get $3 + i32.const 21 + i32.le_s + else + i32.const 0 end - local.tee $2 - local.set $1 - end - local.get $0 - local.get $1 - call $~lib/array/Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/util/sort/insertionSort (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $0 local.get $3 - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - local.set $5 + 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.sub - local.set $6 - block $while-break|1 - loop $while-continue|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 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 if local.get $0 - local.get $6 - i32.const 2 + local.get $5 + i32.const 1 i32.shl i32.add - i32.load - local.set $8 + i32.const 48 + i32.store16 local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - br $while-break|1 - end - br $while-continue|1 + i32.const 1 + i32.add + local.set $5 + br $for-loop|1 end end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + 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 - local.get $2 - call $~lib/rt/pure/__release + unreachable ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) + (local $5 f64) + (local $6 i64) (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.get $2 - call $~lib/rt/pure/__retain + (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 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $0 local.set $4 - local.get $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 $3 - call $~lib/memory/memory.fill - local.get $1 + 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 $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 + 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 10136 + local.get $14 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 10832 + 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 $std/array/Ref#toString (param $0 i32) (result i32) + i32.const 11248 + ) + (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 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/number/decimalCount32 + i32.add + local.set $3 + local.get $0 + local.set $6 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_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/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/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 8012 + local.get $10 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 8012 + 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 8012 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 8012 + 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 + i64.const 48 + 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/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 + i64.const 48 + 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<~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<~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<~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 $~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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + 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 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (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#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#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 + 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 + 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 256 + 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 + 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 + i32.const 1152 + i32.const 80 + i32.const 315 + i32.const 21 + 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#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 + call $~lib/array/ensureSize + 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/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + if + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + 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 $2 + local.get $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.set $3 + br $while-continue|0 + end + end + end + local.get $0 + ) + (func $~lib/array/Array#flat (param $0 i32) (result i32) + i32.const 0 + i32.eqz + drop + i32.const 13232 + i32.const 80 + i32.const 457 + 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 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (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#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#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 + call $~lib/array/ensureSize + 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 256 + 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 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#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 315 + i32.const 21 + 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#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 + call $~lib/array/ensureSize + 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/array/Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load offset=12 + local.set $1 + local.get $1 + if + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + i32.const 0 + 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.load8_u + local.set $5 + local.get $2 + local.get $3 + i32.load8_u + i32.store8 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|0 + end + end + end + local.get $0 + ) + (func $~lib/util/sort/insertionSort (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) + 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 $0 + local.get $3 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_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 $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 0 + i32.shl + i32.add + local.get $8 + i32.store8 + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 0 + i32.shl + i32.add + local.get $5 + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/weakHeapSort (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.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.set $3 + local.get $3 + call $~lib/rt/tlsf/__alloc + local.set $4 + local.get $4 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + local.set $6 + local.get $6 + if + local.get $5 + local.set $7 + loop $while-continue|1 local.get $7 i32.const 1 i32.and @@ -9487,1874 +11456,2381 @@ local.get $7 i32.const 1 i32.shr_s - local.set $7 - br $while-continue|1 + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 + local.get $0 + local.get $8 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $9 + local.get $0 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $10 + local.get $9 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 0 + i32.shl + i32.add + local.get $9 + i32.store8 + local.get $0 + local.get $8 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|0 + end + end + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + local.set $6 + local.get $6 + if + local.get $0 + i32.load8_u + local.set $10 + local.get $0 + local.get $0 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store8 + local.get $0 + local.get $5 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 + i32.const 1 + local.set $9 + loop $while-continue|3 + local.get $9 + i32.const 1 + i32.shl + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $8 + local.get $5 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $8 + local.set $9 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $9 + i32.const 0 + i32.gt_s + local.set $7 + local.get $7 + if + local.get $0 + i32.load8_u + local.set $10 + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $11 + local.get $10 + local.get $11 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $9 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $9 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $10 + i32.store8 + local.get $0 + local.get $11 + i32.store8 + end + local.get $9 + i32.const 1 + i32.shr_s + local.set $9 + br $while-continue|4 end end - local.get $7 + local.get $5 i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 + i32.sub + local.set $5 + br $for-loop|2 + end + end + local.get $4 + call $~lib/rt/tlsf/__free + local.get $0 + i32.load8_u offset=1 + local.set $12 + local.get $0 + local.get $0 + i32.load8_u + i32.store8 offset=1 + local.get $0 + local.get $12 + i32.store8 + ) + (func $~lib/array/Array#flat (param $0 i32) (result i32) + i32.const 0 + i32.eqz + drop + i32.const 13232 + i32.const 80 + i32.const 457 + 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 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#set:length_ + ) + (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 - i32.load - local.set $9 + local.get $1 + i32.store local.get $0 - local.get $5 - i32.const 2 - i32.shl + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + i32.const 1 i32.add - i32.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength + local.set $2 + br $for-loop|0 + end + end + 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.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 + 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 + call $~lib/array/ensureSize + 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/array/Array<~lib/string/String>#flat (param $0 i32) (result i32) + i32.const 0 + i32.eqz + drop + i32.const 13232 + i32.const 80 + i32.const 457 + 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 - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + local.set $5 + local.get $5 if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load + 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 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - local.get $0 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 + unreachable end + i32.const 0 + local.set $2 end + local.get $0 local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 + 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.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u + 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.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 + 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 - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load - local.set $10 - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store - local.get $0 - local.get $11 - i32.store - end - local.get $9 + 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.shr_s - local.set $9 - br $while-continue|4 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange end + unreachable end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|2 + i32.const 0 + local.set $2 end + global.get $~lib/builtins/i32.MAX_VALUE + local.set $3 end - local.get $4 - call $~lib/rt/tlsf/__free local.get $0 - i32.load offset=4 - local.set $12 + 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 - i32.load - i32.store offset=4 + 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 $12 - i32.store + local.get $1 local.get $2 - call $~lib/rt/pure/__release + call $~lib/array/Array#lastIndexOf ) - (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + (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 - call $~lib/rt/pure/__retain - local.set $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 - i32.load offset=12 - local.set $2 + local.get $1 local.get $2 - i32.const 1 - i32.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return + 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 - i32.load offset=4 - local.set $4 + local.get $1 local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - local.set $3 - local.get $4 - i32.load - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) + 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 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store + 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 - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return + global.get $~lib/builtins/i32.MAX_VALUE + local.set $3 end - local.get $4 - local.set $5 - local.get $2 - local.set $3 + local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop + local.get $2 local.get $3 - i32.const 256 - i32.lt_s - if - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort - else - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort + 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 $6 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - call $~lib/rt/pure/__release - local.get $5 + local.get $2 + call $~lib/array/Array<~lib/string/String>#includes ) - (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/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 - i32.lt_u - i32.sub + local.get $2 + call $~lib/array/Array<~lib/string/String>#indexOf ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (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 - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 + 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 - drop - i32.const 6544 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 + unreachable end - local.tee $2 - local.set $1 + global.get $~lib/builtins/i32.MAX_VALUE + local.set $3 end local.get $0 local.get $1 - call $~lib/array/Array#sort - local.set $3 local.get $2 - call $~lib/rt/pure/__release local.get $3 + call $~lib/array/Array<~lib/string/String>#copyWithin ) - (func $std/array/createReverseOrderedArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 + (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 - call $~lib/array/Array#constructor - local.set $1 - 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 + 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/math/NativeMath.random (result f64) - (local $0 i64) - (local $1 i64) - (local $2 i64) - global.get $~lib/math/random_seeded - i32.eqz + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/array/arr + local.tee $1 if - call $~lib/builtins/seed - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit 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 + global.get $std/array/charset + 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 - i64.const 23 - i64.shl - i64.xor - local.set $0 + call $~lib/rt/itcms/__visit + i32.const 13232 local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1152 local.get $0 - i64.const 17 - i64.shr_u - i64.xor - local.set $0 + call $~lib/rt/itcms/__visit + i32.const 4320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 8432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 9488 + 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 - i64.xor - local.set $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i64.const 26 - i64.shr_u - i64.xor - local.set $0 + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Uint8Array~visit (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 + call $~lib/arraybuffer/ArrayBufferView~visit ) - (func $std/array/createRandomOrderedArray (param $0 i32) (result i32) - (local $1 i32) + (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) - i32.const 0 + (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 - call $~lib/array/Array#constructor - local.set $1 - i32.const 0 + i32.load offset=4 local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s - local.set $3 + 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 $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 + 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 1 + i32.const 4 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/util/sort/COMPARATOR~anonymous|1 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.sub + call $~lib/array/Array#__visit ) - (func $std/array/isSorted (param $0 i32) (param $1 i32) (result i32) + (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) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 i32.const 1 + drop + local.get $0 + i32.load offset=4 local.set $2 + local.get $2 local.get $0 - call $~lib/array/Array#get:length + i32.load offset=12 + i32.const 2 + i32.shl + i32.add local.set $3 - loop $for-loop|0 + loop $while-continue|0 local.get $2 local.get $3 - i32.lt_s + i32.lt_u 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 (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + local.set $5 + local.get $5 if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $5 - return + local.get $1 + call $~lib/rt/itcms/__visit end local.get $2 - i32.const 1 + i32.const 4 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end - i32.const 1 - local.set $3 local.get $0 - call $~lib/rt/pure/__release + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/rt/itcms/__visit ) - (func $std/array/assertSorted (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $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/array/Array#sort - local.tee $2 - local.get $1 - call $std/array/isSorted - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release + 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/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>bool>#__visit ) - (func $std/array/assertSortedDefault (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit (param $0 i32) (param $1 i32) local.get $0 - block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) - i32.const 1 - drop - i32.const 1 - if (result i32) - i32.const 4 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 6816 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.1 - end - local.tee $1 - call $std/array/assertSorted + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__visit ) - (func $start:std/array~anonymous|43 (param $0 i32) (param $1 i32) (result i32) + (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 - i32.sub + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>void>#__visit ) - (func $start:std/array~anonymous|44 (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.sub + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $start:std/array~anonymous|45 (param $0 i32) (param $1 i32) (result i32) + (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 - i32.sub + call $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>f32>#__visit ) - (func $start:std/array~anonymous|46 (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.sub + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit ) - (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 $0 - i32.eqz - if - i32.const 16 - i32.const 22 - 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 + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=8 + 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.const 0 - i32.store offset=12 + i32.load offset=4 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 + 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 - 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 + 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 - 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 + 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 $3 - i32.store offset=4 + local.get $1 + call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $0 i32) (param $1 i32) local.get $0 - local.get $2 - i32.store offset=8 + 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 - i32.store offset=12 + 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/array/Array<~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - drop + (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 - i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 528 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + 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 - local.get $2 - call $~lib/array/Array<~lib/array/Array>#__uset - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit ) - (func $std/array/createReverseOrderedNestedArray (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 0 + (local $5 i32) + i32.const 1 + drop local.get $0 - call $~lib/array/Array<~lib/array/Array>#constructor - local.set $1 - i32.const 0 + i32.load offset=4 local.set $2 - loop $for-loop|0 + 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 $0 - i32.lt_s - local.set $3 local.get $3 + i32.lt_u + local.set $4 + local.get $4 if - i32.const 0 - i32.const 1 - call $~lib/array/Array#constructor - local.set $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 $4 - call $~lib/rt/pure/__release + 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 1 + i32.const 4 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit ) - (func $start:std/array~anonymous|47 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $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.const 0 - call $~lib/array/Array#__get + i32.load offset=4 local.get $1 - i32.const 0 - call $~lib/array/Array#__get - i32.sub - local.set $2 + 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 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 + call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit ) - (func $~lib/util/sort/insertionSort<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array>#__visit (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.get $2 - call $~lib/rt/pure/__retain + i32.const 1 + drop + local.get $0 + i32.load offset=4 local.set $2 - i32.const 0 + local.get $2 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add local.set $3 - loop $for-loop|0 + loop $while-continue|0 + local.get $2 local.get $3 - local.get $1 - i32.lt_s + i32.lt_u local.set $4 local.get $4 if - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add + local.get $2 i32.load - call $~lib/rt/pure/__retain local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $2 + i32.const 4 i32.add - local.set $3 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - local.get $2 - call $~lib/rt/pure/__release + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array<~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (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) - (local $6 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.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + drop local.get $0 i32.load offset=4 - local.set $4 + local.set $2 local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 + i32.shl + i32.add + local.set $3 + loop $while-continue|0 + local.get $2 local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s + i32.lt_u + local.set $4 + local.get $4 if - local.get $4 + local.get $2 + i32.load + local.set $5 local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store + 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 - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return end - local.get $4 - local.set $5 - local.get $2 - local.set $3 + local.get $0 + i32.load local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/array/Array> - local.get $6 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - call $~lib/rt/pure/__release - local.get $5 + call $~lib/array/Array<~lib/string/String|null>#__visit ) - (func $~lib/array/Array<~lib/array/Array>#get:length (param $0 i32) (result i32) + (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=12 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__uget (param $0 i32) (param $1 i32) (result i32) + (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 - i32.const 2 - i32.shl - i32.add + 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 - call $~lib/rt/pure/__retain + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array<~lib/array/Array>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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 offset=12 - i32.ge_u - if - i32.const 528 - i32.const 80 - i32.const 104 - i32.const 42 - 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<~lib/array/Array>#__uget - local.set $2 - i32.const 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 - i32.eqz drop - local.get $2 - i32.eqz - if - i32.const 4176 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $std/array/isSorted<~lib/array/Array> (param $0 i32) (param $1 i32) (result i32) + (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) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 i32.const 1 + drop + local.get $0 + i32.load offset=4 local.set $2 + local.get $2 local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length + i32.load offset=12 + i32.const 2 + i32.shl + i32.add local.set $3 - loop $for-loop|0 + loop $while-continue|0 local.get $2 local.get $3 - i32.lt_s + i32.lt_u 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.tee $5 - local.get $0 local.get $2 - call $~lib/array/Array<~lib/array/Array>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end + local.set $5 local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + if + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit + end local.get $2 - i32.const 1 + i32.const 4 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end - i32.const 1 - local.set $3 local.get $0 - call $~lib/rt/pure/__release + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/rt/itcms/__visit ) - (func $std/array/assertSorted<~lib/array/Array> (param $0 i32) (param $1 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 - local.get $1 - call $~lib/array/Array<~lib/array/Array>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/array/Array> - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + call $~lib/array/Array<~lib/array/Array>#__visit ) - (func $~lib/array/Array>#constructor (param $0 i32) (param $1 i32) (result i32) + (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) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 25 - 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 + i32.const 1 + drop local.get $0 - i32.const 0 - i32.store offset=8 + i32.load offset=4 + local.set $2 + local.get $2 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.load offset=12 i32.const 2 i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new + i32.add 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 + 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 $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 + i32.load local.get $1 - i32.store offset=12 - local.get $0 + call $~lib/rt/itcms/__visit ) - (func $std/array/Proxy#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 4 - i32.const 24 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store - local.get $0 + call $~lib/array/Array<~lib/array/Array>#__visit ) - (func $~lib/array/Array>#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (local $5 i32) i32.const 1 drop local.get $0 i32.load offset=4 - local.get $1 + local.set $2 + local.get $2 + local.get $0 + i32.load offset=12 i32.const 2 i32.shl i32.add local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 + loop $while-continue|0 local.get $2 - call $~lib/rt/pure/__retain - i32.store + local.get $3 + i32.lt_u + local.set $4 local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 528 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 end local.get $0 + i32.load local.get $1 - local.get $2 - call $~lib/array/Array>#__uset - local.get $2 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__visit ) - (func $std/array/createReverseOrderedElementsArray (param $0 i32) (result i32) - (local $1 i32) + (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) - i32.const 0 + (local $5 i32) + i32.const 1 + drop local.get $0 - call $~lib/array/Array>#constructor - local.set $1 - i32.const 0 + i32.load offset=4 local.set $2 - loop $for-loop|0 + 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 $0 - i32.lt_s - local.set $3 local.get $3 + i32.lt_u + local.set $4 + local.get $4 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.tee $4 - call $~lib/array/Array>#__set - local.get $4 - call $~lib/rt/pure/__release + 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 1 + i32.const 4 i32.add local.set $2 - br $for-loop|0 + br $while-continue|0 end end + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit ) - (func $start:std/array~anonymous|48 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit + ) + (func $std/array/ArrayU32~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load local.get $1 - i32.load - i32.sub - local.set $2 + call $~lib/array/Array~visit + ) + (func $std/array/ArrayU8~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 + call $~lib/array/Array~visit ) - (func $~lib/util/sort/insertionSort> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 + (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/array/Array<~lib/array/Array<~lib/string/String|null>> + block $~lib/array/Array<~lib/array/Array<~lib/array/Array>> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array<~lib/array/Array> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> + block $~lib/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<%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/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/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/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> $~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/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/array/Array<~lib/string/String|null>> $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/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 + 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/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~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 $8 - call $~lib/rt/pure/__release - br $while-continue|1 + 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 $std/array/ArrayU32~visit + return end + local.get $0 + local.get $1 + call $std/array/ArrayU8~visit + return end local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + local.get $1 + call $std/array/ArrayStr~visit + return end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - 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.le_s - if local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/function/Function<%28u8%2Cu8%29=>i32>~visit return end + unreachable + ) + (func $~setArgumentsLength (param $0 i32) local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq + global.set $~argumentsLength + ) + (func $~start + global.get $~started if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 return end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (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 - call $~lib/rt/pure/__retain + global.set $~started + call $start:std/array ) - (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 + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 528 - i32.const 80 - i32.const 104 - i32.const 42 + i32.const 30112 + i32.const 30160 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + ) + (func $~lib/typedarray/Uint8Array#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 + i64.const 0 + i64.store local.get $0 - local.get $1 - call $~lib/array/Array>#__uget - local.set $2 - i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 i32.eqz if - i32.const 4176 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $2 - ) - (func $std/array/isSorted> (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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - 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.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/array/assertSorted> (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (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 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - local.get $1 - call $~lib/array/Array>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted> - i32.eqz + i32.load offset=12 + i32.ge_u if - i32.const 0 i32.const 320 - i32.const 887 - i32.const 3 + i32.const 80 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/rt/pure/__release + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/util/sort/insertionSort<~lib/string/String|null> (param $0 i32) (param $1 i32) (param $2 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 $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 $2 - call $~lib/rt/pure/__retain - local.set $2 + i32.eqz + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + end i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $1 + local.get $2 i32.lt_s local.set $4 local.get $4 if + i32.const 0 + drop local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add + call $~lib/array/Array#__get + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 i32.store local.get $5 - call $~lib/rt/pure/__release + local.get $3 + call $~lib/array/Array#__get + i32.ne + if + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end local.get $3 i32.const 1 i32.add @@ -11362,4441 +13838,5462 @@ br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - 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.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 - i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store offset=4 - local.get $4 - local.get $3 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 i32.const 1 - drop - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String|null> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array<~lib/string/String|null>#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array<~lib/string/String|null>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/array/Array<~lib/string/String|null>#__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 $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 528 + i32.const 320 i32.const 80 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array<~lib/string/String|null>#__uget - local.set $2 - i32.const 1 - drop - i32.const 1 - i32.eqz + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 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 $std/array/isSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) - (local $2 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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + end + i32.const 0 local.set $3 loop $for-loop|0 - local.get $2 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 $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $6 - i32.const 2 - global.set $~argumentsLength + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $3 + call $~lib/array/Array#__get local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.gt_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $3 + call $~lib/array/Array#__get + i32.ne if i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 return end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end i32.const 1 - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $std/array/internalCapacity (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.load + local.tee $1 + i32.store local.get $1 - call $~lib/rt/pure/__release - local.get $3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.shr_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/array/assertSorted<~lib/string/String|null> (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (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 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/string/String|null> - i32.eqz + i32.load offset=12 + i32.ge_u if - i32.const 0 i32.const 320 - i32.const 887 - i32.const 3 + i32.const 80 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/rt/pure/__release - ) - (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 $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain + call $~lib/array/Array#__uget local.set $2 - 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 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/array/isArraysEqual (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + i32.eqz if - block $do-break|0 - loop $do-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return end end - loop $while-continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s local.set $4 - local.get $7 - local.set $7 - local.get $7 + local.get $4 if + i32.const 0 + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer 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.store + local.get $5 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $3 + call $~lib/array/Array#__get i32.ne if - local.get $8 - local.get $9 - i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 return end - local.get $5 - i32.const 2 - i32.add - local.set $5 - local.get $6 - i32.const 2 + local.get $3 + i32.const 1 i32.add - local.set $6 - br $while-continue|1 + local.set $3 + br $for-loop|0 end end + i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array#includes (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 i32.const 0 - local.set $7 + i32.store + i32.const 0 + drop local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 local.get $2 - call $~lib/rt/pure/__release - local.get $7 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (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 $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 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 + i32.load offset=12 + i32.ge_u if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/string/String#get:length local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $3 - local.get $4 - i32.or - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end + i32.store local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 + drop + local.get $2 i32.eqz if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 4320 + i32.const 80 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $2 local.get $2 - if (result i32) - local.get $2 - else - local.get $3 - local.get $4 - i32.sub - end - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/array/assertSorted<~lib/string/String|null>@varargs (param $0 i32) (param $1 i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - 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 7360 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String|null>|inlined.0 - end - local.tee $2 - local.set $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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $std/array/assertSorted<~lib/string/String|null> + call $~lib/array/Array#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 1 + i32.eqz + drop local.get $2 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/string/String.__eq (param $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 - call $~lib/rt/pure/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - local.get $1 - i32.eq + i32.load offset=12 + i32.ge_u if - i32.const 1 - local.set $2 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - 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 - local.set $2 + i32.add + i32.const 2 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end local.get $0 - call $~lib/string/String#get:length local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 + i32.store local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#findIndex (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 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (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) (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 + i32.const 0 + local.set $2 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/array/Array<~lib/string/String|null>#get:length - local.set $2 + i32.load offset=12 + local.set $3 + loop $for-loop|0 local.get $2 - local.get $1 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.ne - if - i32.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + local.get $3 + local.tee $4 local.get $0 - local.get $1 - i32.eq + 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 1 - local.set $3 local.get $0 - call $~lib/rt/pure/__release + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return + i32.load + call_indirect (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 $start:std/array~anonymous|3 (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 + i32.const 0 + i32.store + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + local.get $0 + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:std/array~anonymous|5 (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 + i32.const 0 + i32.store + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 100 + i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 + local.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<~lib/string/String|null>#__get - local.tee $5 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $2 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $6 - call $~lib/string/String.__ne + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz if i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 return end - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $start:std/array~anonymous|8 (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 + i32.const 0 + i32.store + local.get $2 local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.const 10 + i32.lt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#constructor (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|10 (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 + i32.const 0 + i32.store + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + local.get $0 + i32.const 3 + i32.lt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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.get $0 - i32.eqz - if - i32.const 16 - i32.const 29 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - i32.store offset=4 - local.get $0 i32.const 0 - i32.store offset=8 + local.set $2 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 + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $start:std/array~anonymous|13 (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 i32.const 0 + i32.store local.get $2 - call $~lib/memory/memory.fill - local.get $0 - local.tee $4 + local.set $3 + global.get $~lib/memory/__stack_pointer 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 + i32.const 100 + call $~lib/array/Array#push + drop local.get $0 + i32.const 10 + i32.gt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/string/String#charAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - local.get $0 - call $~lib/string/String#get:length - i32.ge_u - if - i32.const 7232 - call $~lib/rt/pure/__retain - return - end - i32.const 2 - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 + (func $start:std/array~anonymous|15 (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 + i32.const 0 + i32.store local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop local.get $0 - local.get $1 - i32.const 1 - i32.shl + i32.const 3 + i32.gt_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load16_u - i32.store16 - local.get $2 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/string/String#concat (param $0 i32) (param $1 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) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - if - i32.const 7392 - local.tee $2 - local.get $1 - local.tee $3 - i32.ne + 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.get $2 - call $~lib/rt/pure/__retain + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add local.set $2 - local.get $3 - call $~lib/rt/pure/__release + br $for-loop|0 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $6 - local.get $6 + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/array~anonymous|17 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - if - i32.const 7232 - 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 + i32.store + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i 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 + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.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 7392 - local.get $0 + (func $start:std/array~anonymous|19 (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer 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 + i32.store local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/array/createRandomString (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $start:std/array~anonymous|20 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 7232 - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $2 - loop $for-loop|0 - local.get $2 - local.get $0 - i32.lt_s + i32.store + local.get $1 + i32.const 0 + i32.eq + if + i32.const 0 local.set $3 - local.get $3 - if - local.get $1 - global.get $std/array/charset - call $~lib/math/NativeMath.random - global.get $std/array/charset - call $~lib/string/String#get:length - f64.convert_i32_s - f64.mul + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 - f64.floor - i32.trunc_f64_s - call $~lib/string/String#charAt - local.tee $5 - call $~lib/string/String.__concat - local.tee $6 - local.tee $7 - local.get $1 - local.tee $8 - i32.ne if - local.get $7 - call $~lib/rt/pure/__retain - local.set $7 - local.get $8 - call $~lib/rt/pure/__release + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 $7 - local.set $1 - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end end local.get $1 - ) - (func $~lib/array/Array<~lib/string/String>#__uset (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 1 - drop - local.get $0 - i32.load offset=4 - local.get $1 i32.const 2 - i32.shl - i32.add - local.set $3 - local.get $3 - i32.load - local.set $4 - local.get $2 - local.get $4 - i32.ne - if - local.get $3 - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u + i32.eq if - local.get $1 - i32.const 0 - i32.lt_s + local.get $0 + i32.const 202 + i32.eq + i32.eqz if + i32.const 0 i32.const 528 - i32.const 80 - i32.const 120 - i32.const 22 + i32.const 625 + i32.const 7 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__uset - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/array/createRandomStringArray (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - local.get $0 - call $~lib/array/Array<~lib/string/String>#constructor - local.set $1 - 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.tee $4 - call $~lib/array/Array<~lib/string/String>#__set - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - ) - (func $~lib/util/sort/insertionSort<~lib/string/String> (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $8 - i32.store - else - local.get $8 - call $~lib/rt/pure/__release - br $while-break|1 - end - local.get $8 - call $~lib/rt/pure/__release - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - i32.store - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array<~lib/string/String>#sort (param $0 i32) (param $1 i32) (result i32) + (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.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.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end + (local $7 i32) + (local $8 f32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=4 - local.set $4 + i32.load offset=12 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 2 - i32.eq - if - local.get $4 - i32.load offset=4 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 + i32.const 9 + 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 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 + 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 $4 + 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 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 i32.store offset=4 + local.get $9 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_f32) + local.set $8 local.get $4 - local.get $3 - i32.store + 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 - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 1 - drop - local.get $5 local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort<~lib/string/String> - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (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>#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 528 + i32.const 320 i32.const 80 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget + call $~lib/array/Array#__uget local.set $2 - i32.const 1 - drop i32.const 0 - i32.eqz drop local.get $2 - i32.eqz - if - i32.const 4176 - i32.const 80 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/array~anonymous|22 (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 + i32.const 0 + i32.store local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i + local.get $0 + i32.add + global.set $std/array/i + 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 ) - (func $std/array/isSorted<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) + (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 8 + 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 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 1 + i32.load offset=12 local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 + 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.get $3 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 i32.lt_s - local.set $4 - local.get $4 + select + i32.lt_s + local.set $6 + local.get $6 if local.get $0 - local.get $2 - i32.const 1 - i32.sub - call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 - local.get $0 - local.get $2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $6 + i32.load offset=4 + local.get $5 i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_=>_i32) + call_indirect (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 - i32.gt_s - if - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - return - end + drop local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $2 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|0 end end - i32.const 1 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/array/assertSorted<~lib/string/String> (param $0 i32) (param $1 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 - local.get $1 - call $~lib/array/Array<~lib/string/String>#sort - local.tee $2 - local.get $1 - call $std/array/isSorted<~lib/string/String> - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 887 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + (func $start:std/array~anonymous|24 (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 + i32.const 0 + i32.store local.get $2 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.add + global.set $std/array/i + 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 ) - (func $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|0 (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.or - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $3 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $2 - local.get $2 - if (result i32) - local.get $2 - else + 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 - i32.sub - end - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $std/array/assertSorted<~lib/string/String>@varargs (param $0 i32) (param $1 i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $6 + call $~lib/array/Array#push + drop end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop + local.get $3 i32.const 1 - drop - i32.const 7424 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 + i32.add + local.set $3 + br $for-loop|0 end - local.tee $2 - local.set $1 end - local.get $0 - local.get $1 - call $std/array/assertSorted<~lib/string/String> local.get $2 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $~lib/string/String#substring (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 $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 $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 100 + call $~lib/array/Array#push + drop + global.get $std/array/i local.get $0 - call $~lib/string/String#get:length + i32.add + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer 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 + ) + (func $start:std/array~anonymous|28 (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 i32.const 0 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.tee $5 + i32.store + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer 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 - local.set $10 - local.get $10 - i32.eqz - if - i32.const 7232 - call $~lib/rt/pure/__retain - 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 - call $~lib/rt/pure/__retain - return - end - local.get $10 - i32.const 1 - call $~lib/rt/pure/__new - local.set $11 - local.get $11 + i32.store + local.get $3 + call $~lib/array/Array#pop + drop + global.get $std/array/i local.get $0 - local.get $8 i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain + global.set $std/array/i + local.get $0 + i32.const 2 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/util/string/joinBooleanArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 local.set $3 - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 local.get $4 - return - end - local.get $3 - i32.eqz - if - i32.const 7488 - i32.const 7520 + local.get $5 + local.tee $6 local.get $0 - i32.load8_u + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s select - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.lt_s + local.set $6 + local.get $6 + 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 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - local.get $2 - call $~lib/string/String#get:length - local.set $5 - i32.const 5 - local.set $6 - local.get $6 - local.get $5 - i32.add local.get $3 - i32.mul - local.get $6 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain 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#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 $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 - local.set $9 + i32.store + local.get $2 + local.set $3 i32.const 0 local.set $4 - loop $for-loop|1 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 local.get $4 - local.get $3 + 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 - local.set $12 - local.get $12 + select + i32.lt_s + local.set $6 + local.get $6 if + local.get $3 local.get $0 + i32.load offset=4 local.get $4 - i32.add - i32.load8_u - local.set $10 - i32.const 4 - local.get $10 - i32.eqz - i32.add - local.set $6 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.const 7488 - i32.const 7520 - local.get $10 - select - local.get $6 - i32.const 1 + i32.const 2 i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 i32.add - local.set $9 - local.get $5 - if - local.get $8 - local.get $9 - 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 $9 - local.get $5 - i32.add - local.set $9 - end + i32.load + local.get $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 local.get $4 i32.const 1 i32.add local.set $4 - br $for-loop|1 + br $for-loop|0 end end - local.get $0 local.get $3 - i32.add - i32.load8_u - local.set $10 + local.set $8 + global.get $~lib/memory/__stack_pointer i32.const 4 - local.get $10 - i32.eqz i32.add - local.set $6 + global.set $~lib/memory/__stack_pointer local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.const 7488 - i32.const 7520 - local.get $10 - select - local.get $6 + ) + (func $start:std/array~anonymous|33 (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 + i32.const 0 + i32.store + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 + call $~lib/array/Array#push + drop + local.get $0 + local.get $1 i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $8 local.set $4 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $start:std/array~anonymous|35 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 - i32.const 1 - drop - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $3 - local.get $1 - call $~lib/util/string/joinBooleanArray local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#pop + drop + local.get $0 local.get $1 - call $~lib/rt/pure/__release + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - return ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + (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 $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 $2 + local.set $3 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 + 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 - i32.const 6 - local.get $0 - i32.const 1000000 - i32.ge_u - i32.add - return - else - i32.const 8 + local.get $3 local.get $0 - i32.const 1000000000 - i32.ge_u + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl i32.add + i32.load + local.get $4 local.get $0 - i32.const 100000000 - i32.ge_u - i32.add - return + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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 - unreachable end - unreachable + local.get $3 + 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/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (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 $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 - 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 7868 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 7868 - 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 + i32.load + local.get $4 local.get $0 - local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 4 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $4 i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + i32.sub + local.set $4 + br $for-loop|0 end end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $start:std/array~anonymous|40 (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 + i32.const 0 + i32.store + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $~lib/array/Array#push + drop + local.get $0 local.get $1 - i32.const 100 - i32.ge_u + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/array~anonymous|42 (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 + i32.const 0 + i32.store + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#pop + drop + local.get $0 + local.get $1 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq 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 7868 - local.get $10 + f32.load offset=4 + local.set $4 + local.get $3 + f32.load + local.set $5 + local.get $4 + local.get $5 i32.const 2 - i32.shl - i32.add + global.set $~argumentsLength + local.get $1 i32.load - local.set $11 + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + f32.store offset=4 + local.get $3 + local.get $4 + f32.store + end local.get $0 - local.get $2 - i32.const 1 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $11 - i32.store + global.set $~lib/memory/__stack_pointer + local.get $9 + return end + local.get $3 + local.set $8 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.ge_u + local.tee $6 + i32.store + i32.const 0 + drop + local.get $7 + i32.const 256 + i32.lt_s if - local.get $2 - i32.const 2 - i32.sub + local.get $8 + local.get $7 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/util/sort/insertionSort + else + local.get $8 + local.get $7 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/util/sort/weakHeapSort + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 $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 $2 + i32.eqz + if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length local.set $2 - i32.const 7868 + local.get $2 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.ne + 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 $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 + i32.eq + 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 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 + 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 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - local.get $0 - local.get $2 + block $for-continue|0 + i32.const 1 + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f32.ne + if (result i32) + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + f32.ne + 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 + end + local.get $3 i32.const 1 - i32.shl - i32.add - i32.const 8288 - 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 + local.set $3 + 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#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 + local.set $2 local.get $2 i32.const 1 - i32.and + i32.le_s if local.get $0 - i32.const 8288 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load16_u - i32.store16 + global.set $~lib/memory/__stack_pointer + local.get $9 + return 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 $0 + i32.load offset=4 + local.set $3 local.get $2 - i32.popcnt - i32.const 1 + i32.const 2 i32.eq if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 + local.get $3 + f64.load offset=8 + local.set $4 + local.get $3 + f64.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + f64.store offset=8 + local.get $3 + local.get $4 + f64.store + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end - local.get $1 - i64.extend_i32_s + local.get $3 + local.set $8 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $6 + i32.store + i32.const 0 + drop + local.get $7 + i32.const 256 + i32.lt_s + if + local.get $8 + local.get $7 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/util/sort/insertionSort + else + local.get $8 + local.get $7 + local.get $6 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/util/sort/weakHeapSort + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + local.get $2 local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $std/array/isArraysEqual (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (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 $2 + i32.eqz + if local.get $0 - local.get $4 - i64.ge_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length local.set $2 local.get $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.ne + 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 $0 + local.get $1 + i32.eq 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 + 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 end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 + 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 - local.get $0 + block $for-continue|0 + i32.const 1 + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + local.tee $5 + local.get $5 + f64.ne + if (result i32) + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $3 + call $~lib/array/Array#__get + f64.ne + 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 + end local.get $3 - i64.div_u - local.set $0 - local.get $5 i32.const 1 i32.add - local.set $5 - br $while-continue|1 + local.set $3 + br $for-loop|0 end end - local.get $5 i32.const 1 - i32.sub + 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/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) + (func $~lib/array/Array#sort (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 $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.and - i32.const 0 - i32.eq + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s 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-continue|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 9344 - 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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|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 9344 - local.get $1 - local.get $6 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + local.get $3 + i32.load offset=4 + local.set $4 + local.get $3 + i32.load + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 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 - local.set $7 - local.get $7 - br_if $do-continue|1 + i32.store end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $3 + local.set $6 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store + i32.const 0 + drop + local.get $5 + i32.const 256 + i32.lt_s + if + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/insertionSort + else + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/weakHeapSort end + local.get $0 + 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/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - 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 - if - i32.const 7664 - i32.const 7792 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 7856 - return - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.const 31 - i32.shr_u + i32.load offset=12 local.set $2 local.get $2 + i32.const 1 + i32.le_s if - i32.const 0 local.get $0 - i32.sub - local.set $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end - i32.const 0 + local.get $0 + i32.load offset=4 local.set $3 - local.get $1 - i32.const 10 + local.get $2 + i32.const 2 i32.eq if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add + local.get $3 + i32.load offset=4 local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 + i32.load local.set $5 - i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 - local.get $6 + local.get $4 local.get $5 - call $~lib/util/number/utoa32_dec_lut - else + i32.const 2 + global.set $~argumentsLength local.get $1 - i32.const 16 - i32.eq + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 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 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $3 + local.set $6 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store + i32.const 0 + drop + local.get $5 + i32.const 256 + i32.lt_s + if + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/insertionSort + else + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/weakHeapSort + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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 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.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=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 - local.get $7 + local.get $0 i32.const 1 - i32.shl + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set + local.get $2 i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u - local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + i32.add + local.set $2 + br $for-loop|0 end end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain + 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/number/itoa_buffered (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) - (local $5 i32) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $2 - i32.const 1 - drop - local.get $1 + local.get $0 + call $~lib/array/Array#constructor + local.tee $1 + i32.store 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 + loop $for-loop|0 local.get $2 - i32.add - return + local.get $0 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + 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 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/array/isSorted (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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.set $3 - local.get $3 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.lt_s - if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl + i32.store i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + local.set $3 loop $for-loop|0 - local.get $4 + local.get $2 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $4 + local.get $4 if local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $2 i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 + i32.sub + call $~lib/array/Array#__get + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $2 + call $~lib/array/Array#__get + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $10 + global.set $~lib/memory/__stack_pointer + local.get $5 + return end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $std/array/assertSorted (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (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.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $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.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted + i32.eqz if - i32.const 7664 - i32.const 7792 - i32.const 350 - i32.const 5 + i32.const 0 + i32.const 528 + i32.const 887 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/assertSortedDefault (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.eqz - if - i32.const 7856 - return - end - i32.const 0 - local.set $2 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 - local.set $4 - i32.const 0 + i32.store + local.get $1 + block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) 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 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 + i32.const 1 + if (result i32) + i32.const 4 + i32.const 4 + i32.le_u else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core + i32.const 0 end + drop + i32.const 6960 + br $~lib/util/sort/COMPARATOR|inlined.1 end - local.get $2 - call $~lib/rt/pure/__retain + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array<~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) - i32.const 0 - local.set $2 - i32.const 0 - drop - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 0 - drop + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - i32.const 10 - i32.lt_u + 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 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - i32.const 48 - i32.or - i32.store16 i32.const 1 - return + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array<~lib/array/Array>#set:length_ end - local.get $2 + local.get $0 local.set $3 - i32.const 4 - i32.const 4 - i32.le_u - drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 local.get $1 - call $~lib/util/number/decimalCount32 - i32.add + local.get $2 local.set $3 - local.get $0 - local.set $6 - local.get $1 - local.set $5 + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=4 local.get $3 + call $~lib/array/Array<~lib/array/Array>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 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) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $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 - local.set $10 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#constructor + local.tee $1 + i32.store i32.const 0 - local.set $4 + local.set $2 loop $for-loop|0 - local.get $4 - local.get $3 + local.get $2 + local.get $0 i32.lt_s - local.set $5 - local.get $5 + local.set $3 + local.get $3 if - local.get $0 + 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 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.const 0 + local.get $0 i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end + i32.sub + local.get $2 + i32.sub + call $~lib/array/Array#__set + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $2 local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + call $~lib/array/Array<~lib/array/Array>#__set + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/array/Array#join (param $0 i32) (param $1 i32) (result i32) + (func $start:std/array~anonymous|47 (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 - local.get $0 - i32.load offset=12 - local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 0 - drop - i32.const 1 - drop + call $~lib/array/Array#__get + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - 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) + (func $~lib/util/sort/insertionSort<~lib/array/Array> (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 i64) - (local $9 i64) - (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 + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 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 $13 - i32.const 0 - i32.gt_s - local.set $15 - local.get $15 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 + local.get $4 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store + local.get $3 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + 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.tee $8 + i32.store offset=4 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-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 + br $while-continue|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 + local.get $0 + local.get $6 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 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/array/Array>#sort (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 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 + local.get $0 + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $3 + local.set $6 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store + i32.const 1 + drop + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + call $~lib/util/sort/insertionSort<~lib/array/Array> + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4320 + i32.const 80 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/array/Array>#get:length + 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.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - i64.le_u + i32.store offset=8 + local.get $5 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if - global.get $~lib/util/number/_K - local.get $13 + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - global.set $~lib/util/number/_K - local.get $0 - local.set $23 - local.get $14 - local.set $17 + global.set $~lib/memory/__stack_pointer local.get $5 - local.set $22 - local.get $18 - local.set $21 - i32.const 10864 - 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 + 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 12 + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/array/Array> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 887 + 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>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array>#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $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.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + 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=8 + 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 - loop $while-continue|4 - i32.const 1 - local.set $15 - local.get $15 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/insertionSort> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 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 $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store + local.get $3 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 10864 - 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 + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + 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.tee $8 + i32.store offset=4 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) 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.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store 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 + br $while-break|1 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 + br $while-continue|1 end end - local.get $25 - local.get $24 - i32.store16 - local.get $14 - return end - br $while-continue|4 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/array/Array>#sort (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.load offset=12 + local.set $2 local.get $2 - i32.eqz + i32.const 1 + i32.le_s if local.get $0 - local.get $1 - i32.const 1 - i32.shl + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - i32.const 46 - i32.const 48 - i32.const 16 - i32.shl - i32.or + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 i32.store - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 return end - local.get $1 + local.get $3 + local.set $6 local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store + i32.const 1 + drop + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + call $~lib/util/sort/insertionSort> + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 + call $~lib/array/Array>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 4320 + i32.const 80 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.le_s - if (result i32) + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if - local.get $1 + i32.lt_s local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s + local.get $4 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s 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.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $4 - br $for-loop|0 + 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 - 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 + end + i32.const 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/assertSorted> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted> + i32.eqz + if i32.const 0 - i32.gt_s - if (result i32) - local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end + i32.const 528 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/insertionSort<~lib/string/String|null> (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) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 + local.get $4 if + global.get $~lib/memory/__stack_pointer 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 + i32.load + local.tee $5 + i32.store 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 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $8 + i32.store offset=4 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 local.get $8 - i32.sub - local.set $8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 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 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - unreachable end - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i64) + (local $5 i32) + (local $6 i32) (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 + 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 + local.get $0 + i32.load offset=12 local.set $2 local.get $2 + i32.const 1 + i32.le_s if - local.get $1 - f64.neg - local.set $1 local.get $0 - i32.const 45 - i32.store16 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end - local.get $1 - local.set $5 local.get $0 - local.set $4 - local.get $2 + i32.load offset=4 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 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $3 + local.set $6 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store i32.const 1 + drop + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + call $~lib/util/sort/insertionSort<~lib/string/String|null> + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $14 - i32.const 348 - local.get $14 - i32.const 3 - i32.shl + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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.sub - global.set $~lib/util/number/_K - i32.const 9992 - local.get $14 - i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 10688 - local.get $14 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#__uget + local.tee $2 + i32.store offset=4 i32.const 1 - i32.shl + drop + i32.const 1 + i32.eqz + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (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 12 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 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 1 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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 (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 12 + 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 12 i32.add - i32.const 64 + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/string/String|null>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/string/String|null> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 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 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/sort/COMPARATOR<~lib/string/String|null>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $3 + local.get $2 + local.get $3 + i32.or + i32.eqz + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.eqz + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + local.get $2 + local.tee $4 + local.get $3 + local.tee $5 local.get $4 - local.get $24 - local.get $10 - local.get $25 - local.get $26 - local.get $23 + 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 + 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.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/util/number/genDigits - local.set $28 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 local.get $2 - i32.const 1 - i32.shl + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $28 + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String.__ne (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 + i64.const 0 + i64.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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 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 $2 + i32.eqz + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 12 + 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 12 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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 12 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (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 8 i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.set $28 - local.get $28 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ge_u + if + i32.const 7376 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) + (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - f64.const 0 - f64.eq + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 + i32.eq if - i32.const 9792 - return + global.get $~lib/memory/__stack_pointer + i32.const 7536 + local.tee $1 + i32.store end local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq - i32.eqz + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 - local.get $0 - local.get $0 - f64.ne - if - i32.const 9824 - return - end - i32.const 9856 - i32.const 9904 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain + i32.const 7376 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - i32.const 9936 - local.get $0 - call $~lib/util/number/dtoa_core + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1 - i32.shl - local.set $1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + 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 - i32.const 1 - call $~lib/rt/pure/__new + local.get $3 + call $~lib/memory/memory.copy + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String.__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 + i64.const 0 + i64.store + local.get $0 + i32.const 7536 + local.get $0 + i32.const 0 + i32.ne + select local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store local.get $2 - i32.const 9936 local.get $1 - call $~lib/memory/memory.copy + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain ) - (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (func $std/array/createRandomString (param $0 i32) (result i32) + (local $1 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 $3 i32) + (local $4 f64) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + i32.const 7376 + local.tee $1 + i32.store + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 local.get $0 - i32.const 48 - i32.store16 offset=4 - i32.const 3 - return + i32.lt_s + local.set $3 + local.get $3 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + global.get $std/array/charset + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + 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=16 + 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=8 + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) + (func $~lib/array/Array<~lib/string/String>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - f64.sub - f64.const 0 - f64.eq - i32.eqz + 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 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 local.get $1 - f64.ne + i32.const 1 + i32.add + call $~lib/array/Array<~lib/string/String>#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/array/Array<~lib/string/String>#__uset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $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 $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.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 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 + 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=8 + local.get $4 + call $~lib/array/Array<~lib/string/String>#__set local.get $2 + i32.const 1 i32.add - return + local.set $2 + br $for-loop|0 end - unreachable end - local.get $0 local.get $1 - call $~lib/util/number/dtoa_core + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/sort/insertionSort<~lib/string/String> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15804,177 +19301,573 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) - local.get $2 - call $~lib/rt/pure/__retain + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + local.set $4 + local.get $4 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $5 + i32.store + local.get $3 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + 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.tee $8 + i32.store offset=4 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + local.get $8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<~lib/string/String>#sort (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 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 + local.get $0 + i32.load offset=12 local.set $2 - local.get $1 + local.get $2 i32.const 1 - i32.sub + i32.le_s + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + i32.load offset=4 local.set $3 + local.get $2 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $5 + i32.store offset=4 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store offset=4 + local.get $3 + local.get $4 + i32.store + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store + i32.const 1 + drop + local.get $6 + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + call $~lib/util/sort/insertionSort<~lib/string/String> + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 320 + i32.const 80 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 i32.eqz if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return + i32.const 4320 + i32.const 80 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 28 - local.get $6 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $4 + i32.store offset=8 + i32.const 1 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $3 loop $for-loop|0 - local.get $4 + local.get $2 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $4 + local.get $4 if local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + local.get $2 i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $6 + 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.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + 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 (type $i32_i32_=>_i32) + i32.const 0 + i32.gt_s if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $9 + global.set $~lib/memory/__stack_pointer + local.get $5 + return end - local.get $4 + local.get $2 i32.const 1 i32.add - local.set $4 + local.set $2 br $for-loop|0 end end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 i32.const 1 - i32.shl + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered + 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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/array/Array<~lib/string/String>#sort + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $std/array/isSorted<~lib/string/String> + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 887 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s + global.set $~lib/memory/__stack_pointer + ) + (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) + (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 + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $3 + local.get $2 + local.get $3 + i32.or + i32.eqz if - local.get $8 i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - local.get $8 - local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array#join (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=4 - local.set $2 + i32.eqz + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end local.get $0 - i32.load offset=12 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 i32.const 0 - drop + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - drop - i32.const 1 - drop local.get $2 + local.tee $4 local.get $3 - local.get $1 - call $~lib/util/string/joinFloatArray + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl local.set $4 - local.get $1 - call $~lib/rt/pure/__release local.get $4 - return + if (result i32) + local.get $4 + else + local.get $2 + local.get $3 + i32.sub + end + 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/util/string/joinStringArray (param $0 i32) (param $1 i32) (param $2 i32) (result 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) @@ -15985,263 +19878,134 @@ (local $10 i32) (local $11 i32) (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + call $~lib/string/String#get:length local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if - local.get $0 - i32.load - local.tee $4 - if (result i32) - local.get $4 - call $~lib/rt/pure/__retain - else - i32.const 7232 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - 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 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - local.get $6 - local.tee $9 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - local.set $8 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - local.set $6 - 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 + local.get $1 + local.tee $4 i32.const 0 - local.set $10 - local.get $2 - call $~lib/string/String#get:length - local.set $11 + local.tee $5 + local.get $4 local.get $5 - local.get $11 + i32.gt_s + select + local.tee $5 local.get $3 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $12 - 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 - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $9 - local.get $6 - local.tee $8 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $6 - local.get $6 - i32.const 0 - i32.ne - if - local.get $6 - call $~lib/string/String#get:length - local.set $9 - local.get $12 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $6 - local.get $9 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $9 - i32.add - local.set $10 - end - local.get $11 - if - local.get $12 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $11 - i32.const 1 - i32.shl - 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 - local.get $0 + local.tee $4 + local.get $5 + local.get $4 + i32.lt_s + select + local.set $6 + local.get $2 + 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 - i32.const 2 + 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 - i32.add - i32.load - local.tee $8 + local.set $8 local.get $6 + local.tee $5 + local.get $7 local.tee $4 - i32.ne - if - local.get $8 - call $~lib/rt/pure/__retain - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - end + local.get $5 + local.get $4 + i32.gt_s + select + i32.const 1 + i32.shl + local.set $9 + local.get $9 local.get $8 - local.set $6 - local.get $6 - i32.const 0 - i32.ne + i32.sub + local.set $10 + local.get $10 + i32.eqz if + i32.const 7376 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $12 - local.get $10 + 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 8 i32.add - local.get $6 - local.get $6 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - call $~lib/memory/memory.copy + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - local.get $12 - call $~lib/rt/pure/__retain - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/array/Array<~lib/string/String|null>#join (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=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 + global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 1 - drop - local.get $2 - local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $std/array/Ref#toString (param $0 i32) (result i32) - i32.const 11104 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 ) - (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 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) @@ -16252,9 +20016,15 @@ (local $10 i32) (local $11 i32) (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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 local.get $1 i32.const 1 i32.sub @@ -16263,233 +20033,213 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if + i32.const 7632 + i32.const 7664 local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $std/array/Ref#toString - else - i32.const 7232 - end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + i32.load8_u + select + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 return end - i32.const 7232 - local.set $7 local.get $2 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 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 $~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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + local.set $10 + loop $for-loop|1 + local.get $10 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $12 + local.get $12 if local.get $0 - local.get $4 - i32.const 2 - i32.shl + local.get $10 i32.add - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end + i32.load8_u + local.set $9 + i32.const 4 local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end + i32.eqz + i32.add + local.set $5 + local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add + i32.const 7632 + i32.const 7664 + 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 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + 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 $4 + local.get $10 i32.const 1 i32.add - local.set $4 - br $for-loop|0 + local.set $10 + br $for-loop|1 end end local.get $0 local.get $3 - i32.const 2 + 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.load - local.tee $11 + i32.const 7632 + i32.const 7664 + local.get $9 + select local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $8 local.get $5 - i32.const 0 - i32.ne + i32.add + local.set $8 + local.get $6 + local.get $8 + i32.gt_s if local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store + local.get $13 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return end local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=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 local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinBooleanArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/util/string/joinReferenceArray (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) @@ -16499,10 +20249,14 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -16511,54 +20265,63 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if local.get $0 i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $std/array/Ref#toString - else - i32.const 7232 - end local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - i32.const 7232 - local.set $7 local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length + local.set $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 offset=4 + i32.const 0 local.set $8 i32.const 0 local.set $4 @@ -16566,8 +20329,8 @@ local.get $4 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $10 + local.get $10 if local.get $0 local.get $4 @@ -16575,68 +20338,33 @@ i32.shl i32.add i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end + 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 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + 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 @@ -16651,62 +20379,58 @@ i32.shl i32.add i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne + 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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store local.get $11 - call $~lib/rt/pure/__retain + i32.const 0 + local.get $8 + call $~lib/string/String#substring local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $std/array/Ref#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + return end local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -16715,133 +20439,26 @@ 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 local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array#join - ) - (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 24 - i32.shl - i32.const 24 - i32.shr_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.const 24 - i32.shl - i32.const 24 - i32.shr_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.const 24 - i32.shl - i32.const 24 - i32.shr_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.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/number/decimalCount32 i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_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 + global.set $~lib/memory/__stack_pointer local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 + return ) - (func $~lib/util/string/joinIntegerArray (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) @@ -16851,9 +20468,14 @@ (local $9 i32) (local $10 i32) (local $11 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -16862,97 +20484,106 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $3 i32.eqz if local.get $0 - i32.load8_s + i32.load local.set $4 - i32.const 1 + i32.const 0 drop - i32.const 1 + i32.const 4 i32.const 4 i32.le_u drop local.get $4 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 + local.set $5 + i32.const 10 + local.get $5 i32.add local.get $3 i32.mul - i32.const 11 + i32.const 10 i32.add - local.set $8 - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 i32.const 0 - local.set $10 + local.set $8 i32.const 0 local.set $4 loop $for-loop|0 local.get $4 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $10 + local.get $10 if local.get $0 local.get $4 - i32.const 0 + i32.const 2 i32.shl i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 - local.get $7 + local.set $8 + local.get $5 if - local.get $9 - local.get $10 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add local.get $2 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.add - local.set $10 + local.set $8 end local.get $4 i32.const 1 @@ -16963,50 +20594,62 @@ end local.get $0 local.get $3 - i32.const 0 + i32.const 2 i32.shl i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i32.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 + local.set $8 + local.get $6 local.get $8 - local.get $10 i32.gt_s if - local.get $9 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 - local.get $10 + local.get $8 call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -17020,94 +20663,38 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinIntegerArray local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array#join - ) - (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.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer 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 + global.set $~lib/memory/__stack_pointer local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 + return ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result 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 i32) + (local $8 f64) (local $9 i32) (local $10 i32) (local $11 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -17116,151 +20703,163 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 + f64.load + call $~lib/util/number/dtoa + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 + local.set $4 + i32.const 28 + local.get $4 i32.add local.get $3 i32.mul - i32.const 10 + i32.const 28 i32.add - local.set $8 - local.get $8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 i32.const 0 - local.set $10 + local.set $7 i32.const 0 - local.set $4 + local.set $9 loop $for-loop|0 - local.get $4 + local.get $9 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $10 + local.get $10 if local.get $0 - local.get $4 - i32.const 1 + local.get $9 + i32.const 3 i32.shl i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 + f64.load + local.set $8 + local.get $7 + local.get $6 + local.get $7 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $8 + call $~lib/util/number/dtoa_buffered i32.add - local.set $10 - local.get $7 + local.set $7 + local.get $4 if - local.get $9 - local.get $10 + local.get $6 + local.get $7 i32.const 1 i32.shl i32.add local.get $2 - local.get $7 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $10 local.get $7 + local.get $4 i32.add - local.set $10 + local.set $7 end - local.get $4 + local.get $9 i32.const 1 i32.add - local.set $4 + local.set $9 br $for-loop|0 end end local.get $0 local.get $3 - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 + f64.load + local.set $8 + local.get $7 + local.get $6 + local.get $7 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 local.get $8 - local.get $10 + call $~lib/util/number/dtoa_buffered + i32.add + local.set $7 + local.get $5 + local.get $7 i32.gt_s if - local.get $9 + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 - local.get $10 + local.get $7 call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -17269,456 +20868,573 @@ 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/joinIntegerArray - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array#join - ) - (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 7868 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 7868 - 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 7868 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 7868 - 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 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinFloatArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/number/utoa64 (param $0 i64) (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 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $1 - i32.const 2 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end if - i32.const 7664 - i32.const 7792 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 7376 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - local.get $0 - i64.const 0 - i64.ne + local.get $3 i32.eqz if - i32.const 7856 + 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 7376 + end + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end i32.const 0 - local.set $2 - 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 + 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 - i32.wrap_i64 - local.set $3 - local.get $3 - call $~lib/util/number/decimalCount32 - local.set $4 local.get $4 - i32.const 1 + i32.const 2 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 + i32.add + i32.load + local.tee $6 + i32.store offset=4 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $8 - local.get $4 - local.set $5 i32.const 0 + i32.ne + if + local.get $5 + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/string/String#get:length + i32.add + local.set $5 + end + local.get $4 i32.const 1 - i32.ge_s - drop - local.get $6 - local.get $8 - local.get $5 - call $~lib/util/number/utoa64_dec_lut + i32.add + local.set $4 + br $for-loop|0 end - else - local.get $1 - i32.const 16 - i32.eq + end + i32.const 0 + local.set $8 + local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/string/String#get:length + local.set $9 + 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 + i32.store offset=12 + 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 - i32.const 63 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.set $4 local.get $4 - i32.const 1 + i32.const 2 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $3 - local.get $0 - local.set $8 - local.get $4 - local.set $7 + i32.add + i32.load + local.tee $6 + i32.store offset=4 + local.get $6 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.get $0 + i32.ne + if + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + 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 - local.get $1 - call $~lib/util/number/utoa64_any_core + i32.const 1 + i32.add + local.set $4 + br $for-loop|1 end end - local.get $2 - call $~lib/rt/pure/__retain + 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 + if + local.get $10 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $6 + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (func $~lib/array/Array<~lib/string/String|null>#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) - (local $8 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 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 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end + i32.const 0 + i32.const 1 + i32.lt_s + drop + i32.const 1 + drop local.get $2 - local.set $3 - i32.const 8 + local.get $3 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinStringArray + local.set $4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.le_u - drop + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (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 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 local.get $1 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.lt_s if - local.get $1 - i32.wrap_i64 - local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $3 + 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 - local.set $7 + i32.load + local.tee $4 + i32.store local.get $4 - local.set $6 - local.get $3 - local.set $5 i32.const 0 - i32.const 1 - i32.ge_s - drop + i32.ne + if (result i32) + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/array/Ref#toString + else + i32.const 7376 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 + i32.store offset=8 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/string/String#get:length + local.set $6 + i32.const 0 + local.set $7 + loop $for-loop|0 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 + i32.lt_s 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 + 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.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + 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 - call $~lib/util/number/utoa64_dec_lut + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#join (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=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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/string/joinReferenceArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + 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 local.get $1 i32.const 1 i32.sub @@ -17727,151 +21443,184 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + 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 - i64.load - local.set $5 - i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.const 10 - call $~lib/util/number/utoa64 + i32.load local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 + i32.store + local.get $4 + i32.const 0 + i32.ne + if (result i32) + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $std/array/Ref#toString + else + i32.const 7376 + end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 + i32.store offset=8 local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 20 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 20 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/string/String#get:length + local.set $6 i32.const 0 - local.set $10 - i32.const 0 - local.set $4 + local.set $7 loop $for-loop|0 - local.get $4 + local.get $7 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $8 + local.get $8 if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 + local.get $7 + i32.const 2 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 + 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.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + local.set $7 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $0 local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 + i32.const 2 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s + 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.set $9 + global.get $~lib/memory/__stack_pointer local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release + i32.store offset=4 local.get $9 - call $~lib/rt/pure/__release local.get $4 - return + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $std/array/Ref#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -17880,325 +21629,332 @@ 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/joinIntegerArray local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/number/itoa64 (param $0 i64) (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 i64) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - i32.const 2 + i32.const 1 + i32.sub + local.set $3 + local.get $3 + i32.const 0 i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s - end if - i32.const 7664 - i32.const 7792 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $0 - i64.const 0 - i64.ne + local.get $3 i32.eqz if - i32.const 7856 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 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.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + 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 offset=4 i32.const 0 - local.set $3 - 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 + 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 - i32.wrap_i64 - local.set $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $5 - i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.set $7 - local.get $0 + i32.add + i32.load8_s local.set $9 - local.get $5 - local.set $6 - i32.const 0 - i32.const 1 - i32.ge_s - drop + local.get $8 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 - local.get $5 + local.get $8 i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 + i32.add 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 + call $~lib/util/number/itoa_buffered i32.add - local.set $5 + 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.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core + i32.add + local.set $4 + br $for-loop|0 end end - local.get $2 + 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 $3 - i32.const 45 - i32.store16 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $3 - call $~lib/rt/pure/__retain + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (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) - (local $8 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 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 + local.get $0 + i32.load offset=12 + local.set $3 i32.const 0 - i32.const 1 - i32.le_s drop i32.const 1 drop - i32.const 8 + local.get $2 + local.get $3 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.le_u - drop + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer 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 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - local.get $2 - i32.add - return - end - local.get $2 - local.set $3 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 4 - i32.le_u - drop + i32.add + global.set $~lib/memory/__stack_pointer 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/util/string/joinIntegerArray (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 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -18207,99 +21963,106 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $3 i32.eqz if local.get $0 - i64.load - local.set $5 - i32.const 1 + i32.load16_u + local.set $4 + i32.const 0 drop - i32.const 8 + i32.const 2 i32.const 4 i32.le_u drop - local.get $5 - i32.wrap_i64 - i64.extend_i32_s + local.get $4 i32.const 10 - call $~lib/util/number/itoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 + call $~lib/util/number/utoa32 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length - local.set $7 - i32.const 21 - local.get $7 + local.set $5 + i32.const 10 + local.get $5 i32.add local.get $3 i32.mul - i32.const 21 + i32.const 10 i32.add - local.set $8 - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 i32.const 0 - local.set $10 + local.set $8 i32.const 0 local.set $4 loop $for-loop|0 local.get $4 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $10 + local.get $10 if local.get $0 local.get $4 - i32.const 3 + i32.const 1 i32.shl i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i32.load16_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 - local.get $7 + local.set $8 + local.get $5 if - local.get $9 - local.get $10 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add local.get $2 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.add - local.set $10 + local.set $8 end local.get $4 i32.const 1 @@ -18310,50 +22073,62 @@ end local.get $0 local.get $3 - i32.const 3 + i32.const 1 i32.shl i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i32.load16_u + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 + local.set $8 + local.get $6 local.get $8 - local.get $10 i32.gt_s if - local.get $9 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 - local.get $10 + local.get $8 call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -18367,37 +22142,69 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinIntegerArray local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array#join - ) - (func $~lib/array/Array<~lib/string/String|null>#toString (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/string/String|null>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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 $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -18406,202 +22213,172 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array#toString - else - i32.const 7232 - end + i64.load local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end - i32.const 7232 - local.set $7 local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 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 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $4 + local.set $10 loop $for-loop|0 - local.get $4 + local.get $10 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $11 + local.get $11 if local.get $0 - local.get $4 - i32.const 2 + 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 - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end local.get $9 - local.set $5 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 if local.get $7 - local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + 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 + local.get $10 i32.const 1 i32.add - local.set $4 + local.set $10 br $for-loop|0 end end local.get $0 local.get $3 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne + 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 - local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $12 + 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>#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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -18610,109 +22387,74 @@ 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> local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/array/Array>#join - ) - (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.set $1 + global.get $~lib/memory/__stack_pointer 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 + i32.store local.get $1 - i32.const 255 - i32.and - call $~lib/util/number/decimalCount32 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $3 - local.get $0 - local.set $6 + global.set $~lib/memory/__stack_pointer 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/string/joinIntegerArray (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 $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) (local $11 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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 $1 i32.const 1 i32.sub @@ -18721,151 +22463,174 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end local.get $3 i32.eqz if local.get $0 - i32.load8_u + i64.load local.set $4 - i32.const 0 - drop 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/utoa32 - local.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 + call $~lib/util/number/itoa64 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 + local.set $5 + i32.const 21 + local.get $5 i32.add local.get $3 i32.mul - i32.const 10 + i32.const 21 i32.add - local.set $8 - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 1 i32.shl i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 i32.const 0 - local.set $10 + local.set $8 i32.const 0 - local.set $4 + local.set $10 loop $for-loop|0 - local.get $4 + local.get $10 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $11 + local.get $11 if local.get $0 - local.get $4 - i32.const 0 + local.get $10 + i32.const 3 i32.shl i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 - local.get $7 + local.set $8 + local.get $5 if - local.get $9 - local.get $10 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add local.get $2 - local.get $7 + local.get $5 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $10 - local.get $7 + local.get $8 + local.get $5 i32.add - local.set $10 + local.set $8 end - local.get $4 + local.get $10 i32.const 1 i32.add - local.set $4 + local.set $10 br $for-loop|0 end end local.get $0 local.get $3 - i32.const 0 + i32.const 3 i32.shl i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i64.load + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $9 + call $~lib/util/number/itoa_buffered i32.add - local.set $10 + local.set $8 + local.get $6 local.get $8 - local.get $10 i32.gt_s if - local.get $9 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 i32.const 0 - local.get $10 + local.get $8 call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 return end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 ) - (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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -18879,19 +22644,81 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinIntegerArray local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (result 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 8 + 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 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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) @@ -18899,12 +22726,20 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + 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 local.get $1 i32.const 1 i32.sub @@ -18913,202 +22748,184 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 i32.load local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end + i32.store local.get $4 - local.set $5 - local.get $5 i32.const 0 i32.ne if (result i32) - local.get $5 - call $~lib/array/Array#toString + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#toString else - i32.const 7232 + i32.const 7376 end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end - i32.const 7232 - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 + i32.store offset=8 local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|0 - local.get $4 + local.get $7 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $8 + local.get $8 if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $9 - local.get $5 - local.tee $10 + local.tee $4 + i32.store + local.get $4 + i32.const 0 i32.ne if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer local.get $9 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $9 + local.get $4 local.set $9 - local.get $10 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne + local.get $6 if - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + 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 $11 - local.get $5 local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 + i32.store + local.get $4 i32.const 0 i32.ne if - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release local.get $4 - call $~lib/rt/pure/__release + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array<~lib/array/Array>#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -19132,24 +22949,51 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array> local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/array/Array>#join - ) - (func $~lib/array/Array#toString (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array> (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) @@ -19159,10 +23003,14 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.sub @@ -19171,54 +23019,63 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if local.get $0 - i32.load - local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if (result i32) - local.get $5 - call $~lib/array/Array#toString - else - i32.const 7232 - end + i32.load8_u local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 return end - i32.const 7232 - local.set $7 local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#get:length + local.set $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 offset=4 + i32.const 0 local.set $8 i32.const 0 local.set $4 @@ -19226,77 +23083,42 @@ local.get $4 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $10 + local.get $10 if local.get $0 local.get $4 - i32.const 2 + 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 - i32.load - local.tee $9 - local.get $5 - local.tee $10 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $10 - call $~lib/rt/pure/__release - end local.get $9 - local.set $5 + call $~lib/util/number/itoa_buffered + i32.add + local.set $8 local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 if local.get $7 + local.get $8 + i32.const 1 + i32.shl + i32.add local.get $2 - call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + 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 @@ -19307,66 +23129,62 @@ end local.get $0 local.get $3 - i32.const 2 + i32.const 0 i32.shl i32.add - i32.load - local.tee $11 - local.get $5 - local.tee $4 - i32.ne + 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 + local.set $11 + global.get $~lib/memory/__stack_pointer local.get $11 - call $~lib/rt/pure/__retain + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 - i32.const 0 - i32.ne - if - local.get $7 - local.get $5 - call $~lib/array/Array#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + return end local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/array/Array<~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 $4 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -19375,34 +23193,56 @@ 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> local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinIntegerArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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) @@ -19410,12 +23250,20 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + 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 local.get $1 i32.const 1 i32.sub @@ -19424,202 +23272,184 @@ i32.const 0 i32.lt_s if - i32.const 7232 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end - i32.const 0 - local.set $5 local.get $3 i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 i32.load local.tee $4 - local.get $5 - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $6 - call $~lib/rt/pure/__release - end + i32.store local.get $4 - local.set $5 - local.get $5 i32.const 0 i32.ne if (result i32) - local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#toString else - i32.const 7232 + i32.const 7376 end - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 return end - i32.const 7232 - local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 + i32.store offset=8 local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 call $~lib/string/String#get:length - local.set $8 + local.set $6 i32.const 0 - local.set $4 + local.set $7 loop $for-loop|0 - local.get $4 + local.get $7 local.get $3 i32.lt_s - local.set $6 - local.get $6 + local.set $8 + local.get $8 if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 + local.get $7 i32.const 2 i32.shl i32.add i32.load - local.tee $9 - local.get $5 - local.tee $10 + local.tee $4 + i32.store + local.get $4 + i32.const 0 i32.ne if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 local.get $9 - call $~lib/rt/pure/__retain + local.get $4 local.set $9 - local.get $10 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $9 - local.set $5 - local.get $5 - i32.const 0 - i32.ne + local.get $6 if - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $9 - call $~lib/string/String.__concat - local.tee $10 - local.tee $11 - local.get $7 - local.tee $12 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - end - local.get $8 - if - local.get $7 local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 call $~lib/string/String.__concat - local.tee $10 - local.tee $12 - local.get $7 - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $7 - local.get $10 - call $~lib/rt/pure/__release + local.tee $5 + i32.store offset=8 end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 + 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 $11 - local.get $5 local.tee $4 - i32.ne - if - local.get $11 - call $~lib/rt/pure/__retain - local.set $11 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $11 - local.set $5 - local.get $5 + i32.store + local.get $4 i32.const 0 i32.ne if - local.get $7 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $11 - call $~lib/string/String.__concat - local.tee $4 - local.tee $9 - local.get $7 - local.tee $6 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $6 - call $~lib/rt/pure/__release - end + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer local.get $9 - local.set $7 - local.get $11 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $7 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#join (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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=4 local.set $2 @@ -19643,21 +23473,81 @@ local.get $2 local.get $3 local.get $1 - call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return ) - (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/array/Array<~lib/array/Array>#flat (param $0 i32) (result i32) + (func $~lib/array/Array#toString (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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) @@ -19665,134 +23555,274 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 1 - i32.eqz - drop - local.get $0 - i32.load offset=12 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 + 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 + local.get $1 + i32.const 1 + i32.sub local.set $3 + local.get $3 i32.const 0 - local.set $4 - loop $for-loop|0 + i32.lt_s + if + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + 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 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $2 - 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 + i32.const 0 + i32.ne + if (result i32) local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#toString + else + i32.const 7376 end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - local.get $3 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new - local.set $9 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 i32.store offset=8 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer local.get $9 - local.get $8 i32.store offset=4 local.get $9 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $10 + call $~lib/string/String#get:length + local.set $6 i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $1 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $8 + local.get $8 if - block $for-continue|1 - local.get $2 + 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.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - br $for-continue|1 - end - local.get $6 - i32.load offset=8 - 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 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 end - local.get $4 + local.get $7 i32.const 1 i32.add - local.set $4 - br $for-loop|1 + 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 - drop + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer local.get $9 - call $~lib/rt/pure/__retain ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/array/Array>#join (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=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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array<~lib/array/Array>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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) @@ -19800,154 +23830,272 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 1 - i32.eqz - drop - local.get $0 - i32.load offset=12 - local.set $1 - local.get $0 - i32.load offset=4 - local.set $2 + 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 + local.get $1 + i32.const 1 + i32.sub local.set $3 + local.get $3 i32.const 0 - local.set $4 - loop $for-loop|0 + i32.lt_s + if + i32.const 7376 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + 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 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $2 - 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 + i32.const 0 + i32.ne + if (result i32) local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array<~lib/array/Array>#toString + else + i32.const 7376 end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return end - local.get $3 - i32.const 2 - i32.shl - local.set $7 - local.get $7 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 16 - i32.const 27 - call $~lib/rt/pure/__new - local.set $9 - local.get $9 - local.get $3 - i32.store offset=12 - local.get $9 - local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 7376 + local.tee $5 i32.store offset=8 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer local.get $9 - local.get $8 i32.store offset=4 local.get $9 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|1 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - block $for-continue|1 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $6 - i32.const 0 - i32.eq - if - br $for-continue|1 - end - local.get $6 - i32.load offset=8 - 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 + call $~lib/string/String#get:length + local.set $6 i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 + local.set $7 + loop $for-loop|0 + local.get $7 local.get $3 i32.lt_s - local.set $5 - local.get $5 + local.set $8 + local.get $8 if - local.get $8 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $7 i32.const 2 i32.shl i32.add i32.load - call $~lib/rt/pure/__retain - drop + local.tee $4 + i32.store local.get $4 + i32.const 0 + i32.ne + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $6 + if + global.get $~lib/memory/__stack_pointer + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $7 i32.const 1 i32.add - local.set $4 - br $for-loop|2 + 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.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + call $~lib/string/String.__concat + local.tee $5 + i32.store offset=8 + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer local.get $9 - call $~lib/rt/pure/__retain + ) + (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 $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=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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $start:std/array (local $0 i32) @@ -19967,53 +24115,38 @@ (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) + global.get $~lib/memory/__stack_pointer + i32.const 72 + 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 i32.const 0 i32.const 0 i32.eq @@ -20026,6 +24159,15 @@ i32.const 8 i32.eq drop + 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 @@ -20036,7 +24178,7 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -20045,13 +24187,17 @@ i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array.isArray i32.eqz i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 47 i32.const 3 call $~lib/builtins/abort @@ -20060,13 +24206,17 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#constructor - local.tee $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array.isArray<~lib/typedarray/Uint8Array> i32.eqz i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 48 i32.const 3 call $~lib/builtins/abort @@ -20078,358 +24228,492 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 432 + i32.const 640 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array.isArray<~lib/string/String> i32.eqz i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 50 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array.isArray<~lib/array/Array> i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 5 i32.const 0 i32.const 6 - i32.const 464 + i32.const 672 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 0 i32.const 6 - i32.const 496 + i32.const 704 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 0 i32.const 6 - i32.const 592 + i32.const 736 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 0 i32.const 6 - i32.const 624 + i32.const 768 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 66 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 0 i32.const 6 - i32.const 656 + i32.const 800 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $0 + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 0 i32.const 6 - i32.const 688 + i32.const 832 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 5 i32.const 2 i32.const 7 - i32.const 720 + i32.const 864 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 7 - i32.const 768 + i32.const 912 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 7 - i32.const 816 + i32.const 960 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 7 - i32.const 864 + i32.const 1008 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 7 - i32.const 912 + i32.const 1056 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 88 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill - call $~lib/rt/pure/__release - local.get $5 + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 7 - i32.const 960 + i32.const 1104 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 98 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 42 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -20437,110 +24721,155 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 102 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop - local.set $1 - local.get $1 + local.set $2 + local.get $2 i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 108 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 110 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 115 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -20548,43 +24877,63 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 116 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 44 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -20592,13 +24941,18 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -20606,43 +24960,63 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 123 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 45 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 127 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 128 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -20650,13 +25024,18 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -20664,13 +25043,18 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 130 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -20678,123 +25062,330 @@ i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 131 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 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.load offset=4 - local.set $0 - local.get $0 + local.tee $0 + i32.store offset=16 + local.get $2 + i32.const 0 i32.const 0 i32.const 0 call $std/array/Ref#constructor - i32.store - local.get $0 + call $~lib/array/Array#__uset + local.get $2 + i32.const 1 i32.const 0 i32.const 0 call $std/array/Ref#constructor - i32.store offset=4 - local.get $1 - local.set $0 + call $~lib/array/Array#__uset + local.get $2 + local.tee $0 + i32.store offset=16 local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#set:length local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 139 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 0 call $~lib/array/Array#constructor - local.set $0 + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 call $~lib/array/Array#concat - local.set $1 + local.tee $2 + i32.store offset=12 global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 + i32.const 528 i32.const 148 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $~lib/array/Array#get:length + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 150 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 1200 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#concat + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 153 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 156 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 157 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 46 + call $~lib/array/Array#push + drop + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 47 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#concat + local.tee $2 + i32.store offset=12 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 149 + i32.const 528 + i32.const 164 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length - i32.const 3 + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 150 + i32.const 528 + i32.const 165 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 1056 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/array/Array#concat - call $~lib/rt/pure/__release - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 153 + i32.const 528 + i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 43 @@ -20802,13 +25393,18 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 155 + i32.const 528 + i32.const 167 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 call $~lib/array/Array#__get i32.const 44 @@ -20816,13 +25412,18 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 156 + i32.const 528 + i32.const 168 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#__get i32.const 45 @@ -20830,712 +25431,1005 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 157 + i32.const 528 + i32.const 169 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + call $~lib/array/Array#__get i32.const 46 - call $~lib/array/Array#push - drop - local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 170 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 + call $~lib/array/Array#__get i32.const 47 - call $~lib/array/Array#push - drop - global.get $std/array/arr - local.get $0 - call $~lib/array/Array#concat - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - local.set $1 - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 164 + i32.const 528 + i32.const 171 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length - i32.const 2 + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 165 + i32.const 528 + i32.const 174 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 1232 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length - i32.const 5 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 166 + i32.const 528 + i32.const 182 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 - i32.const 43 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#concat + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 167 + i32.const 528 + i32.const 184 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - call $~lib/array/Array#__get - i32.const 44 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 168 + i32.const 528 + i32.const 185 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 - call $~lib/array/Array#__get - i32.const 45 - i32.eq + i32.const 3 + i32.const 1264 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 0 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1312 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 192 + 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 1360 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 1 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1408 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 169 + i32.const 528 + i32.const 194 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 i32.const 3 - call $~lib/array/Array#__get - i32.const 46 - i32.eq + i32.const 1456 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 1 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1504 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 170 + i32.const 528 + i32.const 196 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 4 - call $~lib/array/Array#__get - i32.const 47 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1552 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 2 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1600 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 171 + i32.const 528 + i32.const 198 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/array/Array#pop - drop - local.get $1 - call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1648 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 0 + i32.const 3 i32.const 4 - i32.eq + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1696 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 174 + i32.const 528 + i32.const 200 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 5 i32.const 2 i32.const 3 - i32.const 1088 + i32.const 1744 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=12 local.get $2 - call $~lib/array/Array#get:length + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1792 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 182 + i32.const 528 + i32.const 202 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 1840 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 local.get $2 - global.get $std/array/arr - call $~lib/array/Array#concat - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - local.set $1 - local.get $1 - call $~lib/array/Array#get:length + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 i32.const 3 - i32.eq + i32.const 1888 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 184 + i32.const 528 + i32.const 204 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 1936 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 local.get $2 - call $~lib/array/Array#get:length + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 i32.const 0 - i32.eq + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#copyWithin + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 1984 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 185 + i32.const 528 + i32.const 206 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 5 i32.const 2 i32.const 3 - i32.const 1120 + i32.const 2032 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE + i32.const -2 + i32.const -1 call $~lib/array/Array#copyWithin - local.tee $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 3 - i32.const 1168 + i32.const 2080 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 192 + i32.const 528 + i32.const 208 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 1216 + i32.const 2128 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - local.set $3 - local.get $3 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -4 + i32.const -3 + i32.const -2 call $~lib/array/Array#copyWithin - local.tee $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 3 - i32.const 1264 + i32.const 2176 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 194 + i32.const 528 + i32.const 210 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 + i32.const 2224 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -4 + i32.const -3 + i32.const -1 call $~lib/array/Array#copyWithin - local.tee $5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 3 - i32.const 1360 + i32.const 2272 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 196 + i32.const 528 + i32.const 212 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 + i32.const 2320 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - local.set $3 - local.get $3 - i32.const 2 - i32.const 2 + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -4 + i32.const -3 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#copyWithin - local.tee $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 5 i32.const 2 i32.const 3 - i32.const 1456 + i32.const 2368 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 198 + i32.const 528 + i32.const 214 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1504 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $8 - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - local.set $3 - local.get $3 - i32.const 0 - i32.const 3 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 42 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $8 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1552 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.const 42 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 200 + i32.const 528 + i32.const 224 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1600 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $10 - local.get $3 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $3 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 + call $~lib/array/Array#__get + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + call $~lib/array/Array#__get + i32.const 44 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 226 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $10 + call $~lib/array/Array#__get + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 227 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 41 + call $~lib/array/Array#unshift + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1648 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 202 + i32.const 528 + i32.const 231 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1696 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $12 - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $3 - local.get $3 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/array/Array#copyWithin - local.tee $12 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1744 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $15 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 204 + i32.const 528 + i32.const 232 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $14 - local.get $3 - call $~lib/rt/pure/__release - local.get $14 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $14 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $17 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.const 41 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 206 + i32.const 528 + i32.const 233 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1888 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + global.get $std/array/arr local.set $16 - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $16 - local.set $3 - local.get $3 - i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $16 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1936 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $19 - i32.const 0 - call $std/array/isArraysEqual + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 208 + i32.const 528 + i32.const 234 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 1984 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $18 - local.get $3 - call $~lib/rt/pure/__release - local.get $18 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/array/Array#copyWithin - local.tee $18 - i32.const 5 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 - i32.const 3 - i32.const 2032 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $21 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.const 43 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 210 + i32.const 528 + i32.const 235 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $20 - local.get $3 - call $~lib/rt/pure/__release - local.get $20 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/array/Array#copyWithin - local.tee $20 - i32.const 5 - i32.const 2 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 - i32.const 2128 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.const 44 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 212 + i32.const 528 + i32.const 236 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2176 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $22 - local.get $3 - call $~lib/rt/pure/__release - local.get $22 - local.set $3 - local.get $3 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/array/Array#copyWithin - local.tee $22 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 2224 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $25 - i32.const 0 - call $std/array/isArraysEqual + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 + call $~lib/array/Array#__get + i32.const 45 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 214 + i32.const 528 + i32.const 237 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 42 - call $~lib/array/Array#unshift - drop + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 246 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 222 + i32.const 528 + i32.const 247 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity - i32.const 4 + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 223 + i32.const 528 + i32.const 248 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get i32.const 42 @@ -21543,13 +26437,18 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 224 + i32.const 528 + i32.const 249 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21557,13 +26456,18 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 225 + i32.const 528 + i32.const 250 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#__get i32.const 44 @@ -21571,13 +26475,18 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 226 + i32.const 528 + i32.const 251 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#__get i32.const 45 @@ -21585,168 +26494,194 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 227 + i32.const 528 + i32.const 252 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 41 - call $~lib/array/Array#unshift - drop - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 231 + i32.const 528 + i32.const 256 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 232 + i32.const 528 + i32.const 257 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 41 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 233 + i32.const 528 + i32.const 258 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 call $~lib/array/Array#__get i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 234 + i32.const 528 + i32.const 259 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 call $~lib/array/Array#__get i32.const 43 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 235 + i32.const 528 + i32.const 260 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 call $~lib/array/Array#__get i32.const 44 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/array/arr - i32.const 4 - call $~lib/array/Array#__get - i32.const 45 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 237 + i32.const 528 + i32.const 261 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - 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 320 - i32.const 246 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#reverse + drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length - i32.const 4 + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 247 + i32.const 528 + i32.const 269 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $std/array/internalCapacity i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 248 + i32.const 528 + i32.const 270 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 call $~lib/array/Array#__get - i32.const 42 + i32.const 44 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 249 + i32.const 528 + i32.const 271 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 call $~lib/array/Array#__get i32.const 43 @@ -21754,368 +26689,533 @@ i32.eqz if i32.const 0 - i32.const 320 - i32.const 250 + i32.const 528 + i32.const 272 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#__get - i32.const 44 + i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 251 + i32.const 528 + i32.const 273 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#__get - i32.const 45 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 43 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 44 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 252 + i32.const 528 + i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $~lib/array/Array#pop + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 42 + i32.const 0 + call $~lib/array/Array#indexOf global.set $std/array/i global.get $std/array/i - i32.const 45 + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 256 + i32.const 528 + i32.const 286 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 257 + i32.const 528 + i32.const 289 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 258 + i32.const 528 + i32.const 292 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 42 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 259 + i32.const 528 + i32.const 295 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 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 320 - i32.const 260 + i32.const 528 + i32.const 298 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 44 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 261 + i32.const 528 + i32.const 301 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $~lib/array/Array#reverse - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 269 + i32.const 528 + i32.const 304 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 270 + i32.const 528 + i32.const 307 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#__get - i32.const 44 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 271 + i32.const 528 + i32.const 310 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr i32.const 1 - call $~lib/array/Array#__get - i32.const 43 + i32.const 2 + i32.const 9 + i32.const 2416 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 272 + i32.const 528 + i32.const 312 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#__get - i32.const 42 + i32.const 1 + i32.const 3 + i32.const 10 + i32.const 2448 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + 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 320 - i32.const 273 + i32.const 528 + i32.const 313 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 43 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 44 - call $~lib/array/Array#push - drop - global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 44 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 0 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 1 i32.eq i32.eqz if i32.const 0 + i32.const 528 i32.const 320 - i32.const 283 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 42 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 2 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 286 + i32.const 528 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 45 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 289 + i32.const 528 + i32.const 326 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const 100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const -1 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 292 + i32.const 528 + i32.const 329 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const -100 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + call $~lib/array/Array#includes + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 295 + i32.const 528 + i32.const 332 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const -2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 298 + i32.const 528 + i32.const 335 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const -4 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + call $~lib/array/Array#includes + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 301 + i32.const 528 + i32.const 338 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const 0 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + call $~lib/array/Array#includes + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 304 + i32.const 528 + i32.const 341 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const 1 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i + call $~lib/array/Array#includes + local.set $2 + local.get $2 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 307 + i32.const 528 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 43 i32.const 2 - call $~lib/array/Array#indexOf - global.set $std/array/i - global.get $std/array/i - i32.const 3 + call $~lib/array/Array#includes + local.set $2 + local.get $2 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 310 + i32.const 528 + i32.const 347 i32.const 3 call $~lib/builtins/abort unreachable @@ -22123,20 +27223,21 @@ i32.const 1 i32.const 2 i32.const 9 - i32.const 2272 + i32.const 2480 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $22 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 f32.const nan:0x400000 i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq + call $~lib/array/Array#includes i32.eqz if i32.const 0 - i32.const 320 - i32.const 312 + i32.const 528 + i32.const 349 i32.const 3 call $~lib/builtins/abort unreachable @@ -22144,1882 +27245,2764 @@ i32.const 1 i32.const 3 i32.const 10 - i32.const 2304 + i32.const 2512 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 f64.const nan:0x8000000000000 i32.const 0 - call $~lib/array/Array#indexOf - i32.const -1 - i32.eq + call $~lib/array/Array#includes i32.eqz if i32.const 0 - i32.const 320 - i32.const 313 + i32.const 528 + i32.const 350 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 44 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 + i32.const 1 + call $~lib/array/Array#splice + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 320 + i32.const 528 + i32.const 354 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 42 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/internalCapacity + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 323 + i32.const 528 + i32.const 355 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 45 - i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 + call $~lib/array/Array#__get + i32.const 44 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 326 + i32.const 528 + i32.const 356 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 43 - i32.const 100 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#__get + i32.const 42 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 329 + i32.const 528 + i32.const 357 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -100 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2544 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2592 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 364 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2640 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 365 + 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 2672 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 0 + i32.const 0 + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 2720 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 332 + i32.const 528 + i32.const 368 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -2 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2752 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 335 + i32.const 528 + i32.const 369 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const -4 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2800 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 2848 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 338 + i32.const 528 + i32.const 372 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2880 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 341 + i32.const 528 + i32.const 373 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 - i32.const 1 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 2912 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 2960 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 344 + i32.const 528 + i32.const 376 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 43 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 i32.const 2 - call $~lib/array/Array#includes - local.set $23 - local.get $23 - i32.const 1 - i32.eq + i32.const 3 + i32.const 2992 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 347 + i32.const 528 + i32.const 377 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 3024 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 2 - i32.const 9 - i32.const 2336 + i32.const 3 + i32.const 3072 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $25 - f32.const nan:0x400000 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#includes + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 349 + i32.const 528 + i32.const 380 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 + i32.const 2 i32.const 3 - i32.const 10 - i32.const 2368 + i32.const 3104 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $20 - f64.const nan:0x8000000000000 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#includes + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 350 + i32.const 528 + i32.const 381 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 1 - i32.const 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 $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#splice - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 4 - i32.eq + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 3200 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if - i32.const 0 - i32.const 320 - i32.const 354 + i32.const 0 + i32.const 528 + i32.const 384 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $std/array/internalCapacity - i32.const 5 - i32.eq + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 3232 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 355 + i32.const 528 + i32.const 385 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 3280 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/array/Array#splice + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 3328 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#__get - i32.const 44 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 356 + i32.const 528 + i32.const 388 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#__get - i32.const 42 - i32.eq + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 3360 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 357 + i32.const 528 + i32.const 389 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 5 i32.const 2 i32.const 3 - i32.const 2400 + i32.const 3392 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $25 - local.get $25 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -2 + i32.const 1 call $~lib/array/Array#splice - local.tee $20 - i32.const 5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 i32.const 2 i32.const 3 - i32.const 2448 + i32.const 3440 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $22 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 364 + i32.const 528 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 0 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 i32.const 2 i32.const 3 - i32.const 2496 + i32.const 3472 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $21 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 365 + i32.const 528 + i32.const 393 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 2528 + i32.const 3520 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $24 - local.get $25 - call $~lib/rt/pure/__release - local.get $24 - local.set $25 - local.get $25 - i32.const 0 - i32.const 0 + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -7 + i32.const 1 call $~lib/array/Array#splice - local.tee $24 - i32.const 0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 i32.const 2 i32.const 3 - i32.const 2576 + i32.const 3568 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 368 + i32.const 528 + i32.const 396 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4 i32.const 2 i32.const 3 - i32.const 2608 + i32.const 3600 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $19 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 369 + i32.const 528 + i32.const 397 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 2656 + i32.const 3648 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $25 - call $~lib/rt/pure/__release - local.get $3 - local.set $25 - local.get $25 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const -2 + i32.const -1 call $~lib/array/Array#splice - local.tee $3 - i32.const 3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 i32.const 2 i32.const 3 - i32.const 2704 + i32.const 3696 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $18 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 372 + i32.const 528 + i32.const 400 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 2 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 i32.const 2 i32.const 3 - i32.const 2736 + i32.const 3728 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $17 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 373 + i32.const 528 + i32.const 401 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 2768 + i32.const 3776 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 - local.get $25 - call $~lib/rt/pure/__release - local.get $2 - local.set $25 - local.get $25 - i32.const 2 - i32.const 2 + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 1 + i32.const -2 call $~lib/array/Array#splice - local.tee $2 - i32.const 2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 i32.const 2 i32.const 3 - i32.const 2816 + i32.const 3824 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $16 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 376 + i32.const 528 + i32.const 404 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 3 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 i32.const 2 i32.const 3 - i32.const 2848 + i32.const 3856 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $15 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 377 + i32.const 528 + i32.const 405 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 2880 + i32.const 3904 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 - local.get $25 - call $~lib/rt/pure/__release + local.tee $0 + i32.store offset=16 local.get $0 - local.set $25 - local.get $25 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 4 i32.const 0 - i32.const 1 call $~lib/array/Array#splice - local.tee $0 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 i32.const 2 i32.const 3 - i32.const 2928 + i32.const 3952 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 380 + i32.const 528 + i32.const 408 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 4 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 i32.const 2 i32.const 3 - i32.const 2960 + i32.const 3984 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 381 + i32.const 528 + i32.const 409 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 3008 + i32.const 4032 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $25 - call $~lib/rt/pure/__release - local.get $4 - local.set $25 - local.get $25 - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7 + i32.const 0 call $~lib/array/Array#splice - local.tee $4 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 i32.const 2 i32.const 3 - i32.const 3056 + i32.const 4080 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 384 + i32.const 528 + i32.const 412 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 4 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 i32.const 2 i32.const 3 - i32.const 3088 + i32.const 4112 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 385 + i32.const 528 + i32.const 413 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 3136 + i32.const 4160 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 - local.get $25 - call $~lib/rt/pure/__release - local.get $1 - local.set $25 - local.get $25 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE + local.tee $0 + i32.store offset=16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7 + i32.const 5 call $~lib/array/Array#splice - local.tee $1 - i32.const 2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 i32.const 2 i32.const 3 - i32.const 3184 + i32.const 4208 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 388 + i32.const 528 + i32.const 416 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 3 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 i32.const 2 i32.const 3 - i32.const 3216 + i32.const 4240 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 389 + i32.const 528 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 - i32.const 3 - i32.const 3248 + i32.const 8 + i32.const 4288 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $25 - call $~lib/rt/pure/__release - local.get $5 - local.set $25 - local.get $25 - i32.const -2 - i32.const 1 - call $~lib/array/Array#splice - local.tee $5 + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 i32.const 2 - i32.const 3 - i32.const 3296 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 392 + i32.const 528 + i32.const 421 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 422 + 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 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store offset=28 + local.get $3 + i32.const 0 + i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $3 + i32.const 1 + i32.const 0 + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $3 + i32.const 2 + i32.const 0 + i32.const 3 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $3 + i32.const 3 + i32.const 0 i32.const 4 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $3 + i32.const 4 + i32.const 0 + i32.const 5 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $3 + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + i32.const 2 + call $~lib/array/Array#splice + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 2 - i32.const 3 - i32.const 3328 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 393 + i32.const 528 + i32.const 427 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3376 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $25 - call $~lib/rt/pure/__release - local.get $6 - local.set $25 - local.get $25 - i32.const -7 - i32.const 1 - call $~lib/array/Array#splice - local.tee $6 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 3424 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $27 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.load + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 396 + i32.const 528 + i32.const 428 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#__get + i32.load i32.const 4 - i32.const 2 - i32.const 3 - i32.const 3456 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $28 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 397 + i32.const 528 + i32.const 429 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3504 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - local.set $25 - local.get $25 - i32.const -2 - i32.const -1 - call $~lib/array/Array#splice - local.tee $26 - i32.const 0 - i32.const 2 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 3 - i32.const 3552 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $30 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 400 + i32.const 528 + i32.const 431 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $31 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.load + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 401 + i32.const 528 + i32.const 432 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3632 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $29 - local.get $25 - call $~lib/rt/pure/__release - local.get $29 - local.set $25 - local.get $25 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 1 - i32.const -2 - call $~lib/array/Array#splice - local.tee $29 - i32.const 0 + call $~lib/array/Array#__get + i32.load i32.const 2 - i32.const 3 - i32.const 3680 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $33 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 404 + i32.const 528 + i32.const 433 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 - i32.const 3 - i32.const 3712 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $34 - i32.const 0 - call $std/array/isArraysEqual + call $~lib/array/Array#__get + i32.load + i32.const 5 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 405 + i32.const 528 + i32.const 434 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3 - i32.const 3760 + i32.const 2 + i32.const 11 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $32 - local.get $25 - call $~lib/rt/pure/__release - local.get $32 - local.set $25 - local.get $25 - i32.const 4 + local.tee $4 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $3 + i32.store offset=24 + local.get $4 i32.const 0 - call $~lib/array/Array#splice - local.tee $32 i32.const 0 + i32.const 1 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $4 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__uset + local.get $4 i32.const 2 - i32.const 3 - i32.const 3808 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $36 i32.const 0 - call $std/array/isArraysEqual + i32.const 2 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $4 + local.tee $3 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + i32.const 1 + call $~lib/array/Array#splice + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 408 + i32.const 528 + i32.const 439 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $37 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $std/array/isArraysEqual - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 409 - i32.const 3 + call $~lib/array/Array#__get + local.tee $5 + i32.store offset=32 + local.get $5 + if (result i32) + local.get $5 + else + i32.const 4448 + i32.const 528 + i32.const 440 + i32.const 10 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 3888 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $35 - local.get $25 - call $~lib/rt/pure/__release - local.get $35 - local.set $25 - local.get $25 - i32.const 7 - i32.const 0 - call $~lib/array/Array#splice - local.tee $35 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 3936 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $39 - i32.const 0 - call $std/array/isArraysEqual + i32.load + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 412 + i32.const 528 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 2 - i32.const 3 - i32.const 3968 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 413 + i32.const 528 + i32.const 442 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 3 - i32.const 4016 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $38 - local.get $25 - call $~lib/rt/pure/__release - local.get $38 - local.set $25 - local.get $25 - i32.const 7 - i32.const 5 - call $~lib/array/Array#splice - local.tee $38 + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - i32.const 2 - i32.const 3 - i32.const 4064 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $42 + call $~lib/array/Array#__get i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 416 + i32.const 528 + i32.const 443 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#__get + local.tee $5 + i32.store offset=32 + local.get $5 + if (result i32) + local.get $5 + else + i32.const 4448 + i32.const 528 + i32.const 444 + i32.const 10 + call $~lib/builtins/abort + unreachable + end + i32.load i32.const 2 - i32.const 3 - i32.const 4096 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 417 + i32.const 528 + i32.const 444 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - i32.const 2 - i32.const 8 - i32.const 4144 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $45 - local.get $45 + i32.const 0 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 i32.const 1 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 - call $~lib/array/Array#splice - local.set $46 - local.get $46 - call $~lib/array/Array#get:length + i32.const 2 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + i32.const 3 + call $~lib/array/Array#__set + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4512 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#findIndex + global.set $std/array/i + global.get $std/array/i i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 421 + i32.const 528 + i32.const 457 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $45 - call $~lib/array/Array#get:length - i32.const 0 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4544 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 320 - i32.const 422 + i32.const 528 + i32.const 460 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 8 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $44 - local.get $44 - i32.load offset=4 - local.set $41 - local.get $41 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 i32.store - local.get $41 - i32.const 0 - i32.const 2 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $41 - i32.const 0 - i32.const 3 - call $std/array/Ref#constructor + local.get $16 + i32.const 4576 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 i32.store offset=8 - local.get $41 - i32.const 0 - i32.const 4 - call $std/array/Ref#constructor - i32.store offset=12 - local.get $41 - i32.const 0 - i32.const 5 - call $std/array/Ref#constructor - i32.store offset=16 - local.get $44 - local.set $44 - local.get $45 - call $~lib/rt/pure/__release - local.get $44 - local.set $45 - local.get $45 - i32.const 2 - i32.const 2 - call $~lib/array/Array#splice - local.set $41 - local.get $46 - call $~lib/rt/pure/__release - local.get $41 - local.set $46 - local.get $46 - call $~lib/array/Array#get:length - i32.const 2 + local.get $16 + 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 320 - i32.const 427 + i32.const 528 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $46 - i32.const 0 - call $~lib/array/Array#__get - local.tee $41 - i32.load - i32.const 3 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4608 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 320 - i32.const 428 + i32.const 528 + i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $46 - i32.const 1 - call $~lib/array/Array#__get - local.tee $44 - i32.load - i32.const 4 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 429 + i32.const 528 + i32.const 472 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $45 - call $~lib/array/Array#get:length - i32.const 3 - i32.eq + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4640 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 320 - i32.const 431 + i32.const 528 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $45 - i32.const 0 - call $~lib/array/Array#__get - local.tee $47 - i32.load - i32.const 1 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4672 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 320 - i32.const 432 + i32.const 528 + i32.const 487 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $45 - i32.const 1 - call $~lib/array/Array#__get - local.tee $48 - i32.load + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 433 + i32.const 528 + i32.const 488 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $45 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 - call $~lib/array/Array#__get - local.tee $49 - i32.load - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 434 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $50 - local.get $50 - i32.load offset=4 - local.set $51 - local.get $51 - i32.const 0 - i32.const 1 - call $std/array/Ref#constructor + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 i32.store - local.get $51 - i32.const 0 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $51 - i32.const 0 - i32.const 2 - call $std/array/Ref#constructor + local.get $16 + i32.const 4704 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 i32.store offset=8 - local.get $50 - local.set $52 - local.get $52 - i32.const 0 - i32.const 1 - call $~lib/array/Array#splice - local.set $53 - local.get $53 - call $~lib/array/Array#get:length + local.get $16 + call $~lib/array/Array#every + local.set $4 + local.get $4 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 439 + i32.const 528 + i32.const 498 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $53 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4736 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#every + local.set $4 + local.get $4 i32.const 0 - call $~lib/array/Array#__get - local.tee $51 - local.tee $50 - if (result i32) - local.get $50 - else - i32.const 4304 - i32.const 320 - i32.const 440 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 440 + i32.const 528 + i32.const 501 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $52 - call $~lib/array/Array#get:length - i32.const 2 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4768 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#every + local.set $4 + local.get $4 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 442 + i32.const 528 + i32.const 509 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $52 - i32.const 0 - call $~lib/array/Array#__get - local.tee $50 - i32.const 0 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 443 + i32.const 528 + i32.const 510 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $52 - i32.const 1 - call $~lib/array/Array#__get - local.tee $54 - local.tee $55 - if (result i32) - local.get $55 - else - i32.const 4304 - i32.const 320 - i32.const 444 - i32.const 10 - call $~lib/builtins/abort - unreachable - end - i32.load - i32.const 2 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4800 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#every + local.set $4 + local.get $4 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 444 + i32.const 528 + i32.const 512 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $25 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release + i32.store + local.get $16 + call $~lib/array/Array#pop + drop global.get $std/array/arr - i32.const 0 - i32.const 0 - call $~lib/array/Array#__set + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4832 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#every + local.set $4 + local.get $4 i32.const 1 - i32.const 1 - call $~lib/array/Array#__set + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 525 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length i32.const 2 - i32.const 2 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 3 - i32.const 3 - call $~lib/array/Array#__set - global.get $std/array/arr - i32.const 4368 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 457 + i32.const 528 + i32.const 526 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4400 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4864 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#some + local.set $4 + local.get $4 i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 460 + i32.const 528 + i32.const 536 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4432 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4896 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#some + local.set $4 + local.get $4 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 463 + i32.const 528 + i32.const 539 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4464 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4928 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#some + local.set $4 + local.get $4 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 471 + i32.const 528 + i32.const 547 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 472 + i32.const 528 + i32.const 548 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr - i32.const 4496 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 - i32.ne + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4960 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#some + local.set $4 + local.get $4 + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 474 + i32.const 528 + i32.const 550 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr - i32.const 4528 - call $~lib/array/Array#findIndex - global.set $std/array/i - global.get $std/array/i - i32.const -1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 4992 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#some + local.set $4 + local.get $4 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 487 + i32.const 528 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 488 + i32.const 528 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#push drop + i32.const 0 + global.set $std/array/i global.get $std/array/arr - i32.const 4560 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5024 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 498 + i32.const 528 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 4592 - call $~lib/array/Array#every - local.set $54 - local.get $54 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 501 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.set $std/array/i global.get $std/array/arr - i32.const 4624 - call $~lib/array/Array#every - local.set $54 - local.get $54 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5056 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 509 + i32.const 528 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 510 + i32.const 528 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 4656 - call $~lib/array/Array#every - local.set $54 - local.get $54 i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5088 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#forEach + global.get $std/array/i + i32.const 406 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 512 + i32.const 528 + i32.const 588 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop + i32.const 0 + global.set $std/array/i global.get $std/array/arr - i32.const 4688 - call $~lib/array/Array#every - local.set $54 - local.get $54 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5120 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#forEach + global.get $std/array/i i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 525 + i32.const 528 + i32.const 602 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 526 + i32.const 528 + i32.const 603 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 4720 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5152 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#forEach + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 536 + i32.const 528 + i32.const 628 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 100 + i32.lt_s + local.set $3 + local.get $3 + if + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#pop + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end global.get $std/array/arr - i32.const 4752 - call $~lib/array/Array#some - local.set $54 - local.get $54 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 3 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5184 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#map + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 539 + i32.const 528 + i32.const 642 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + call $~lib/array/Array#__get global.get $std/array/arr - i32.const 4784 - call $~lib/array/Array#some - local.set $54 - local.get $54 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 643 + i32.const 3 + call $~lib/builtins/abort + unreachable + end i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5216 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 547 + i32.const 528 + i32.const 652 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 548 + i32.const 528 + i32.const 653 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + global.set $std/array/i global.get $std/array/arr - i32.const 4816 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5248 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 406 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 550 + i32.const 528 + i32.const 660 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop - global.get $std/array/arr - i32.const 4848 - call $~lib/array/Array#some - local.set $54 - local.get $54 - i32.const 0 + i32.const 0 + global.set $std/array/i + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5280 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#map + drop + global.get $std/array/i + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 563 + i32.const 528 + i32.const 675 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 564 + i32.const 528 + i32.const 676 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 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 - i32.const 4880 - call $~lib/array/Array#forEach - global.get $std/array/i - i32.const 6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5312 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#filter + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 575 + i32.const 528 + i32.const 686 i32.const 3 call $~lib/builtins/abort unreachable @@ -24027,29 +30010,45 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4912 - call $~lib/array/Array#forEach + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5344 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#filter + drop global.get $std/array/i i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 584 + i32.const 528 + i32.const 695 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 585 + i32.const 528 + i32.const 696 i32.const 3 call $~lib/builtins/abort unreachable @@ -24057,2205 +30056,3756 @@ i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4944 - call $~lib/array/Array#forEach + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5376 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#filter + drop global.get $std/array/i i32.const 406 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 588 + i32.const 528 + i32.const 703 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop i32.const 0 global.set $std/array/i global.get $std/array/arr - i32.const 4976 - call $~lib/array/Array#forEach + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5408 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array#filter + drop global.get $std/array/i i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 602 + i32.const 528 + i32.const 718 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 603 + i32.const 528 + i32.const 719 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#push drop global.get $std/array/arr - i32.const 5008 - call $~lib/array/Array#forEach - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 100 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5440 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 320 - i32.const 628 + i32.const 528 + i32.const 729 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $54 - loop $for-loop|0 - local.get $54 - i32.const 100 - i32.lt_s - local.set $50 - local.get $50 - if - global.get $std/array/arr - call $~lib/array/Array#pop - drop - local.get $54 - i32.const 1 - i32.add - local.set $54 - br $for-loop|0 - end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5472 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 4 + 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 733 + i32.const 3 + call $~lib/builtins/abort + unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5504 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr + call $~lib/array/Array#reduce + local.set $4 + local.get $4 + i32.const 0 + i32.ne i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5040 - call $~lib/array/Array#map - local.set $54 - local.get $54 - call $~lib/array/Array#get:length - i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 642 + i32.const 528 + i32.const 736 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $54 - i32.const 0 - call $~lib/array/Array#__get global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5536 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq + call $~lib/array/Array#reduce + local.set $4 + local.get $4 + i32.const 0 + i32.ne + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 643 + i32.const 528 + i32.const 739 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5568 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 + call $~lib/array/Array#reduce global.set $std/array/i - global.get $std/array/arr - i32.const 5072 - call $~lib/array/Array#map - call $~lib/rt/pure/__release global.get $std/array/i i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 652 + i32.const 528 + i32.const 747 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 653 + i32.const 528 + i32.const 748 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5600 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 + call $~lib/array/Array#reduce global.set $std/array/i - global.get $std/array/arr - i32.const 5104 - call $~lib/array/Array#map - call $~lib/rt/pure/__release global.get $std/array/i - i32.const 406 + i32.const 10 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 660 + i32.const 528 + i32.const 750 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5632 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 + call $~lib/array/Array#reduce global.set $std/array/i - global.get $std/array/arr - i32.const 5136 - call $~lib/array/Array#map - call $~lib/rt/pure/__release global.get $std/array/i i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 675 + i32.const 528 + i32.const 763 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 2 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 676 + i32.const 528 + i32.const 764 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#push drop - local.get $54 - call $~lib/rt/pure/__release global.get $std/array/arr - i32.const 5168 - call $~lib/array/Array#filter - local.set $54 - local.get $54 - call $~lib/array/Array#get:length - i32.const 2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5664 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 0 - i32.const 320 - i32.const 686 + i32.const 528 + i32.const 774 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5696 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 + i32.const 0 + i32.const 528 + i32.const 778 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $std/array/arr - i32.const 5200 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5728 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $4 + local.get $4 + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 781 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5760 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $~lib/array/Array#reduceRight + local.set $4 + local.get $4 + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 784 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5792 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + 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 0 - i32.const 320 - i32.const 695 + i32.const 528 + i32.const 792 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 696 + i32.const 528 + i32.const 793 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5824 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 + call $~lib/array/Array#reduceRight global.set $std/array/i - global.get $std/array/arr - i32.const 5232 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release global.get $std/array/i - i32.const 406 + i32.const 10 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 703 + i32.const 528 + i32.const 795 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#pop drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5856 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 + call $~lib/array/Array#reduceRight global.set $std/array/i - global.get $std/array/arr - i32.const 5264 - call $~lib/array/Array#filter - call $~lib/rt/pure/__release global.get $std/array/i - i32.const 1 + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 718 + i32.const 528 + i32.const 808 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 call $~lib/array/Array#get:length - i32.const 2 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 719 + i32.const 528 + i32.const 809 i32.const 3 call $~lib/builtins/abort unreachable end global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + call $~lib/array/Array#push + drop + global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 2 call $~lib/array/Array#push drop global.get $std/array/arr + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 3 call $~lib/array/Array#push drop - local.get $54 - call $~lib/rt/pure/__release - global.get $std/array/arr - i32.const 5296 + call $~lib/bindings/Math/random + i64.reinterpret_f64 + call $~lib/math/NativeMath.seedRandom + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 6128 + call $~lib/rt/__newArray + local.tee $3 + i32.store offset=24 + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $3 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 8 + i32.const 2 + i32.const 9 + i32.const 6224 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 729 + i32.const 528 + i32.const 898 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5328 - i32.const 4 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 3 i32.const 10 - i32.eq + i32.const 6288 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/array/Array#sort@varargs + drop + local.get $4 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 8 + i32.const 3 + i32.const 10 + i32.const 6416 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 733 + i32.const 528 + i32.const 902 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5360 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 6512 + call $~lib/rt/__newArray + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $~lib/array/Array#reduce - local.set $54 - local.get $54 + global.set $~argumentsLength i32.const 0 - i32.ne - i32.const 1 - i32.eq + call $~lib/array/Array#sort@varargs + drop + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 3 + i32.const 6592 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 736 + i32.const 528 + i32.const 906 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5392 + global.get $~lib/memory/__stack_pointer + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 6640 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 i32.const 0 - call $~lib/array/Array#reduce - local.set $54 - local.get $54 + global.set $~argumentsLength i32.const 0 - i32.ne + call $~lib/array/Array#sort@varargs + drop + local.get $2 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 5 + i32.const 2 + i32.const 7 + i32.const 6720 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 739 + i32.const 528 + i32.const 910 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5424 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 6768 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 6800 + call $~lib/rt/__newArray + local.tee $6 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 6832 + call $~lib/rt/__newArray + local.tee $7 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 6864 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 6912 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createReverseOrderedArray + local.tee $5 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + i32.const 128 + call $std/array/createReverseOrderedArray + local.tee $10 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + call $std/array/createReverseOrderedArray + local.tee $11 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 10000 + call $std/array/createReverseOrderedArray + local.tee $12 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createRandomOrderedArray + local.tee $13 + i32.store offset=64 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 6992 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 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 320 - i32.const 747 + i32.const 528 + i32.const 930 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq + local.get $7 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $7 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 7024 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 0 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 748 + i32.const 528 + i32.const 933 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5456 + local.get $8 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $8 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 750 + i32.const 528 + i32.const 936 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5488 - i32.const 0 - call $~lib/array/Array#reduce - global.set $std/array/i - global.get $std/array/i - i32.const 1 - i32.eq + local.get $5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 4 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 763 + i32.const 528 + i32.const 939 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 2 - i32.eq + local.get $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 4 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 764 + i32.const 528 + i32.const 942 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 3 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 5520 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq + local.get $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + i32.const 4 + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 774 + i32.const 528 + i32.const 945 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5552 + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 4 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq + call $std/array/isArraysEqual i32.eqz if i32.const 0 - i32.const 320 - i32.const 778 + i32.const 528 + i32.const 948 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5584 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $std/array/assertSortedDefault + global.get $~lib/memory/__stack_pointer + i32.const 64 + call $std/array/createRandomOrderedArray + local.tee $13 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 257 + call $std/array/createRandomOrderedArray + local.tee $12 + i32.store offset=60 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7056 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7088 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7120 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7152 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $std/array/createReverseOrderedNestedArray + local.tee $12 + i32.store offset=60 + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7184 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + i32.const 512 + call $std/array/createReverseOrderedElementsArray + local.tee $12 + i32.store offset=60 + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7216 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $std/array/assertSorted> + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 7408 + call $~lib/rt/__newArray + local.tee $13 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 7456 + call $~lib/rt/__newArray + local.tee $11 + i32.store offset=56 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + global.set $~argumentsLength i32.const 0 - call $~lib/array/Array#reduceRight - local.set $54 - local.get $54 + call $std/array/assertSorted<~lib/string/String|null>@varargs + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 i32.const 0 - i32.ne - i32.const 1 - i32.eq + call $std/array/isArraysEqual<~lib/string/String|null> i32.eqz if i32.const 0 - i32.const 320 - i32.const 781 + i32.const 528 + i32.const 985 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5616 - i32.const 0 - call $~lib/array/Array#reduceRight - local.set $54 - local.get $54 + global.get $~lib/memory/__stack_pointer + i32.const 400 + call $std/array/createRandomStringArray + local.tee $12 + i32.store offset=60 + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.ne + call $std/array/assertSorted<~lib/string/String>@varargs + i32.const 2 i32.const 0 - i32.eq + i32.const 31 + i32.const 7600 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7696 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7728 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 784 + i32.const 528 + i32.const 994 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5648 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 6 - i32.eq + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 7776 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7376 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 9584 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 792 + i32.const 528 + i32.const 995 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 8 - i32.eq + i32.const 3 + i32.const 2 + i32.const 7 + i32.const 9616 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 9648 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 9584 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 793 + i32.const 528 + i32.const 996 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 5680 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i - i32.const 10 - i32.eq + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 9680 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 9712 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 9744 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 795 + i32.const 528 + i32.const 997 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - call $~lib/array/Array#pop - drop - global.get $std/array/arr - i32.const 5712 - i32.const 0 - call $~lib/array/Array#reduceRight - global.set $std/array/i - global.get $std/array/i i32.const 6 - i32.eq + i32.const 3 + i32.const 10 + i32.const 9824 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 9904 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11072 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 808 + i32.const 528 + i32.const 998 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - call $~lib/array/Array#get:length - i32.const 0 - i32.eq + i32.const 3 + i32.const 2 + i32.const 27 + i32.const 11216 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7376 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array<~lib/string/String|null>#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11184 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 809 + i32.const 528 + i32.const 999 i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/array/arr - i32.const 0 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 1 - call $~lib/array/Array#push - drop - global.get $std/array/arr - i32.const 2 - call $~lib/array/Array#push - drop - global.get $std/array/arr + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 3 - call $~lib/array/Array#push - drop - call $~lib/bindings/Math/random - i64.reinterpret_f64 - call $~lib/math/NativeMath.seedRandom - i32.const 8 i32.const 2 - i32.const 9 - i32.const 5984 + i32.const 11 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $50 - local.get $50 + local.tee $12 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.load offset=4 + local.tee $11 + i32.store offset=56 + local.get $12 i32.const 0 - global.set $~argumentsLength i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $50 - i32.const 8 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $12 + i32.const 1 + i32.const 0 + call $~lib/array/Array#__uset + local.get $12 i32.const 2 - i32.const 9 - i32.const 6080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $51 i32.const 0 - call $std/array/isArraysEqual + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $12 + local.tee $11 + i32.store offset=56 + local.get $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7696 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11312 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 898 + i32.const 528 + i32.const 1001 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 3 - i32.const 10 - i32.const 6144 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $49 - local.get $49 + local.tee $12 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.load offset=4 + local.tee $13 + i32.store offset=64 + local.get $12 i32.const 0 - global.set $~argumentsLength i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $49 - i32.const 8 - i32.const 3 - i32.const 10 - i32.const 6272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $48 i32.const 0 - call $std/array/isArraysEqual + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $12 + i32.const 1 + i32.const 0 + i32.const 0 + call $std/array/Ref#constructor + call $~lib/array/Array#__uset + local.get $12 + local.tee $13 + i32.store offset=64 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + i32.const 7696 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=68 + local.get $16 + call $~lib/array/Array#join + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11408 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 902 + i32.const 528 + i32.const 1004 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 i32.const 3 - i32.const 6368 + i32.const 11504 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $47 - local.get $47 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $47 - i32.const 5 + local.tee $11 + i32.store offset=56 + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 2 i32.const 3 - i32.const 6448 + i32.const 11536 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $44 - i32.const 0 - call $std/array/isArraysEqual + local.tee $12 + i32.store offset=60 + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 11568 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 3 + i32.const 11600 + call $~lib/rt/__newArray + local.tee $5 + i32.store offset=32 + local.get $11 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 7376 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 906 + i32.const 528 + i32.const 1014 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 6496 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $41 - local.get $41 - i32.const 0 - global.set $~argumentsLength + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11184 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1015 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11648 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1016 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11680 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1017 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 i32.const 0 - call $~lib/array/Array#sort@varargs - call $~lib/rt/pure/__release - local.get $41 - i32.const 5 - i32.const 2 - i32.const 7 - i32.const 6576 + i32.const 32 + i32.const 11728 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $43 - i32.const 0 - call $std/array/isArraysEqual + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11760 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 910 + i32.const 528 + i32.const 1019 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 6624 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $42 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 6656 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $38 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 6688 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $40 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 6720 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $39 - i32.const 4 - i32.const 2 i32.const 3 - i32.const 6768 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $35 - i32.const 64 - call $std/array/createReverseOrderedArray - local.set $54 - i32.const 128 - call $std/array/createReverseOrderedArray - local.set $37 - i32.const 1024 - call $std/array/createReverseOrderedArray - local.set $36 - i32.const 10000 - call $std/array/createReverseOrderedArray - local.set $32 - i32.const 512 - call $std/array/createRandomOrderedArray - local.set $34 - local.get $42 - call $std/array/assertSortedDefault - local.get $38 - call $std/array/assertSortedDefault - local.get $38 i32.const 1 - i32.const 2 - i32.const 3 - i32.const 6848 + i32.const 33 + i32.const 11792 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $29 - i32.const 0 - call $std/array/isArraysEqual + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11824 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 930 + i32.const 528 + i32.const 1020 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $40 - call $std/array/assertSortedDefault - local.get $40 - i32.const 2 - i32.const 2 i32.const 3 - i32.const 6880 + i32.const 3 + i32.const 34 + i32.const 11872 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $31 - i32.const 0 - call $std/array/isArraysEqual + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11920 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 933 + i32.const 528 + i32.const 1021 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $39 - call $std/array/assertSortedDefault - local.get $39 - local.get $35 - i32.const 0 - call $std/array/isArraysEqual + i32.const 4 + i32.const 3 + i32.const 35 + i32.const 12000 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 12064 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 936 + i32.const 528 + i32.const 1022 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $54 - call $std/array/assertSortedDefault - local.get $54 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual + global.get $~lib/memory/__stack_pointer + i32.const 7 + i32.const 2 + i32.const 27 + i32.const 12176 + call $~lib/rt/__newArray + local.tee $9 + i32.store offset=48 + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 12224 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 939 + i32.const 528 + i32.const 1026 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $37 - call $std/array/assertSortedDefault - local.get $37 - local.get $35 i32.const 4 - call $std/array/isArraysEqual + i32.const 2 + i32.const 27 + i32.const 12336 + call $~lib/rt/__newArray + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array<~lib/string/String|null>#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 12384 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 942 + i32.const 528 + i32.const 1027 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $36 - call $std/array/assertSortedDefault - local.get $36 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 22 + i32.const 0 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load offset=4 + local.tee $13 + i32.store offset=64 + local.get $8 + i32.const 0 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 12416 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $8 + i32.const 1 + i32.const 2 + i32.const 2 + i32.const 3 + i32.const 12448 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $8 + local.tee $13 + i32.store offset=64 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 12480 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 945 + i32.const 528 + i32.const 1030 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $32 - call $std/array/assertSortedDefault - local.get $32 - local.get $35 - i32.const 4 - call $std/array/isArraysEqual + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 2 + i32.const 36 + i32.const 0 + call $~lib/rt/__newArray + local.tee $8 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load offset=4 + local.tee $7 + i32.store offset=40 + local.get $8 + i32.const 0 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 12528 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $8 + i32.const 1 + i32.const 2 + i32.const 0 + i32.const 6 + i32.const 12560 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $8 + local.tee $7 + i32.store offset=40 + local.get $7 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array<~lib/array/Array>#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 12480 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if - i32.const 0 - i32.const 320 - i32.const 948 + i32.const 0 + i32.const 528 + i32.const 1033 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $34 - call $std/array/assertSortedDefault - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - i32.const 64 - call $std/array/createRandomOrderedArray - local.set $31 - i32.const 257 - call $std/array/createRandomOrderedArray - local.set $29 - local.get $31 - i32.const 6912 - call $std/array/assertSorted - local.get $31 - i32.const 6944 - call $std/array/assertSorted - local.get $29 - i32.const 6976 - call $std/array/assertSorted - local.get $29 - i32.const 7008 - call $std/array/assertSorted - local.get $31 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - i32.const 2 - call $std/array/createReverseOrderedNestedArray - local.set $29 - local.get $29 - i32.const 7040 - call $std/array/assertSorted<~lib/array/Array> - local.get $29 - call $~lib/rt/pure/__release - i32.const 512 - call $std/array/createReverseOrderedElementsArray - local.set $29 - local.get $29 - i32.const 7072 - call $std/array/assertSorted> - local.get $29 - call $~lib/rt/pure/__release - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 7264 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $31 - i32.const 7 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1 i32.const 2 - i32.const 27 - i32.const 7312 + i32.const 38 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $34 - local.get $31 + local.tee $8 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load offset=4 + local.tee $6 + i32.store offset=36 + local.get $8 + i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 1 - global.set $~argumentsLength + i32.const 2 + i32.const 37 i32.const 0 - call $std/array/assertSorted<~lib/string/String|null>@varargs - local.get $31 - local.get $34 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $2 + i32.store offset=12 + local.get $0 i32.const 0 - call $std/array/isArraysEqual<~lib/string/String|null> + i32.const 1 + i32.const 2 + i32.const 7 + i32.const 12592 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $0 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__uset + local.get $8 + local.tee $6 + i32.store offset=36 + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + i32.const 11184 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 985 + i32.const 528 + i32.const 1036 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 400 - call $std/array/createRandomStringArray - local.set $29 - local.get $29 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $std/array/assertSorted<~lib/string/String>@varargs - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.const 2 + i32.const 22 i32.const 0 - i32.const 31 - i32.const 7456 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $34 - i32.const 7552 - call $~lib/array/Array#join - local.tee $29 - i32.const 7584 - call $~lib/string/String.__eq + local.tee $6 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.load offset=4 + local.tee $7 + i32.store offset=40 + local.get $6 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 12624 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $6 + i32.const 1 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 12656 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $6 + i32.const 2 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 12688 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $6 + i32.const 3 + i32.const 3 + i32.const 2 + i32.const 3 + i32.const 12720 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $6 + local.tee $7 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $7 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array<~lib/array/Array>#flat + local.tee $6 + i32.store offset=36 + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 10 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 994 + i32.const 528 + i32.const 1043 i32.const 3 call $~lib/builtins/abort unreachable end + i32.const 0 + local.set $13 + loop $for-loop|1 + local.get $13 + i32.const 10 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $13 + call $~lib/array/Array#__get + local.get $13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1045 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $13 + i32.const 1 + i32.add + local.set $13 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 2 + i32.const 39 + i32.const 0 + call $~lib/rt/__newArray + local.tee $13 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.load offset=4 + local.tee $9 + i32.store offset=48 + local.get $13 + i32.const 0 + i32.const 1 + i32.const 2 + i32.const 27 + i32.const 12784 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $13 + i32.const 1 i32.const 3 i32.const 2 + i32.const 27 + i32.const 12880 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $13 + i32.const 2 i32.const 3 - i32.const 7632 + i32.const 2 + i32.const 27 + i32.const 13008 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $32 - i32.const 7232 - call $~lib/array/Array#join - local.tee $31 - i32.const 9440 - call $~lib/string/String.__eq + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $13 + i32.const 3 + i32.const 1 + i32.const 2 + i32.const 27 + i32.const 13072 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__uset + local.get $13 + local.tee $9 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + local.get $9 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat + local.tee $13 + i32.store offset=64 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 2 + i32.const 27 + i32.const 13104 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=52 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.const 8 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 995 + i32.const 528 + i32.const 1051 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 3 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array<~lib/string/String|null>#get:length + i32.lt_s + local.set $12 + local.get $12 + if + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $10 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=20 + local.get $16 + local.get $5 + call $~lib/array/Array<~lib/string/String|null>#__get + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 528 + i32.const 1053 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 2 - i32.const 7 - i32.const 9472 + i32.const 2 + i32.const 22 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $37 - i32.const 9504 - call $~lib/array/Array#join - local.tee $36 - i32.const 9440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 996 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $5 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.load offset=4 + local.tee $12 + i32.store offset=60 + local.get $5 + i32.const 0 + i32.const 0 i32.const 2 + i32.const 3 + i32.const 13168 + call $~lib/rt/__newArray + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $5 + i32.const 1 + i32.const 0 i32.const 2 i32.const 3 - i32.const 9536 + i32.const 13200 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $35 - i32.const 9568 - call $~lib/array/Array#join - local.tee $54 - i32.const 9600 - call $~lib/string/String.__eq + call $~lib/array/Array<~lib/array/Array>#__uset + local.get $5 + local.tee $12 + i32.store offset=60 + local.get $12 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=8 + local.get $16 + call $~lib/array/Array<~lib/array/Array>#flat + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 320 - i32.const 997 + i32.const 528 + i32.const 1057 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 6 - i32.const 3 - i32.const 10 - i32.const 9680 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $40 - i32.const 9760 - call $~lib/array/Array#join - local.tee $39 - i32.const 10928 - call $~lib/string/String.__eq + i32.const 0 + global.set $std/array/arr + 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 72 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/array/ArrayU32#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 320 - i32.const 998 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 11072 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $42 - i32.const 7232 - call $~lib/array/Array<~lib/string/String|null>#join - local.tee $38 - i32.const 11040 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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 + 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#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 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.get $2 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 i32.const 0 - i32.const 320 - i32.const 999 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end - i32.const 3 - i32.const 2 - i32.const 11 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $43 - local.get $43 - i32.load offset=4 - local.set $41 - local.get $41 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 i32.const 0 - call $std/array/Ref#constructor + drop + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $41 + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#indexOf i32.const 0 - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $41 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#forEach (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store i32.const 0 - call $std/array/Ref#constructor - i32.store offset=8 - local.get $43 - local.set $41 - local.get $41 - i32.const 7552 - call $~lib/array/Array#join - local.tee $43 - i32.const 11168 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1001 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - i32.const 2 - i32.const 2 - i32.const 8 + 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) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $44 - local.get $44 - i32.load offset=4 - local.set $47 - local.get $47 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 2 + i32.const 7 i32.const 0 - call $std/array/Ref#constructor + call $~lib/rt/__newArray + local.tee $2 i32.store - local.get $47 - i32.const 0 - i32.const 0 - call $std/array/Ref#constructor - i32.store offset=4 - local.get $44 - local.set $47 - local.get $47 - i32.const 7552 - call $~lib/array/Array#join - local.tee $44 - i32.const 11264 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1004 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release i32.const 0 - i32.const 2 - i32.const 3 - i32.const 11360 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $47 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 11392 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $43 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 11424 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $41 - i32.const 4 - i32.const 2 - i32.const 3 - i32.const 11456 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $38 - local.get $47 - call $~lib/array/Array#toString - local.tee $44 - i32.const 7232 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1014 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $43 - call $~lib/array/Array#toString - local.tee $42 - i32.const 11040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1015 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $41 - call $~lib/array/Array#toString - local.tee $39 - i32.const 11504 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1016 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $38 - call $~lib/array/Array#toString - local.tee $40 - i32.const 11536 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1017 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + 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 - i32.const 3 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - i32.const 11584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $35 - call $~lib/array/Array#toString - local.tee $54 - i32.const 11616 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1019 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 1 - i32.const 33 - i32.const 11648 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $37 - call $~lib/array/Array#toString - local.tee $36 - i32.const 11680 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1020 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 3 - i32.const 3 - i32.const 34 - i32.const 11728 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $32 - call $~lib/array/Array#toString - local.tee $31 - i32.const 11776 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1021 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $2 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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 end + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 3 - i32.const 35 - i32.const 11856 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $34 - call $~lib/array/Array#toString - local.tee $29 - i32.const 11920 - call $~lib/string/String.__eq + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $std/array/ArrayU8#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 320 - i32.const 1022 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 7 - i32.const 2 - i32.const 27 - i32.const 12032 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $49 - local.get $49 - call $~lib/array/Array<~lib/string/String|null>#toString - local.tee $48 - i32.const 12080 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1026 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + local.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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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 end + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 27 - i32.const 12192 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $50 - call $~lib/array/Array<~lib/string/String|null>#toString - local.tee $51 - i32.const 12240 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1027 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 22 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (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) + (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 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $30 - local.get $30 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 12272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store - local.get $30 - i32.const 2 - i32.const 2 - i32.const 3 - i32.const 12304 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $33 - local.set $56 - local.get $56 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $30 - i32.const 12336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1030 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - i32.const 2 - i32.const 36 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $26 - local.get $26 - i32.const 2 + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 6 - i32.const 12384 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store - local.get $26 - i32.const 2 - i32.const 0 - i32.const 6 - i32.const 12416 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $33 - local.set $57 - local.get $57 - call $~lib/array/Array<~lib/array/Array>#toString - local.tee $26 - i32.const 12336 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 320 - i32.const 1033 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + i32.const 320 + i32.const 80 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end - i32.const 1 - i32.const 2 - i32.const 38 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $33 - local.get $33 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 37 + i32.store i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $27 - local.get $27 - i32.load offset=4 - local.set $6 - local.get $6 - i32.const 1 - i32.const 2 - i32.const 7 - i32.const 12448 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + drop + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $27 + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#indexOf + i32.const 0 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/array/Array#forEach (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.store - local.get $33 - local.set $58 - local.get $58 - call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $28 - i32.const 11040 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1036 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - local.get $47 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - global.get $std/array/arr - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 22 + 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) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $28 - local.get $28 - i32.load offset=4 - local.set $26 - local.get $26 - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 12480 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12512 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12544 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store offset=8 - local.get $26 - i32.const 3 - i32.const 2 - i32.const 3 - i32.const 12576 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + i32.const 6 + i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $28 - local.set $59 - local.get $59 - call $~lib/array/Array<~lib/array/Array>#flat - local.set $60 - local.get $60 - call $~lib/array/Array#get:length - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1047 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $2 + i32.store i32.const 0 - local.set $26 - loop $for-loop|1 - local.get $26 - i32.const 10 + 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 $28 - local.get $28 + local.set $5 + local.get $5 if - local.get $60 - local.get $26 - call $~lib/array/Array#__get - local.get $26 - i32.eq - i32.eqz + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - i32.const 0 - i32.const 320 - i32.const 1049 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $6 + call $~lib/array/Array#push + drop end - local.get $26 + local.get $3 i32.const 1 i32.add - local.set $26 - br $for-loop|1 + local.set $3 + br $for-loop|0 end end + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + ) + (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) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 2 - i32.const 39 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $26 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12640 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain i32.store - local.get $28 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12736 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $28 - i32.const 3 - i32.const 2 - i32.const 27 - i32.const 12864 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=8 - local.get $28 - i32.const 1 - i32.const 2 - i32.const 27 - i32.const 12928 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=12 - local.get $26 - local.set $61 - local.get $61 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#flat - local.set $62 - i32.const 8 - i32.const 2 - i32.const 27 - i32.const 12960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $63 - local.get $62 - call $~lib/array/Array<~lib/string/String|null>#get:length - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1055 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $26 - loop $for-loop|2 - local.get $26 - local.get $63 - call $~lib/array/Array<~lib/string/String|null>#get:length + 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 $28 - local.get $28 + local.set $4 + local.get $4 if - local.get $62 - local.get $26 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $30 - local.get $63 - local.get $26 - call $~lib/array/Array<~lib/string/String|null>#__get - local.tee $51 - call $~lib/string/String.__eq - i32.eqz + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 3 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - i32.const 0 - i32.const 320 - i32.const 1057 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 $30 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $26 + local.get $2 i32.const 1 i32.add - local.set $26 - br $for-loop|2 + local.set $2 + br $for-loop|0 end end - i32.const 2 - i32.const 2 - i32.const 22 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $26 - local.get $26 - i32.load offset=4 - local.set $28 - local.get $28 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13024 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store - local.get $28 - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 13056 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - i32.store offset=4 - local.get $26 - local.set $28 - local.get $28 - call $~lib/array/Array<~lib/array/Array>#flat - local.tee $26 - call $~lib/array/Array#get:length i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 320 - i32.const 1061 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $28 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#sort (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.eqz + i32.load offset=12 + local.set $2 + local.get $2 + i32.const 1 + i32.le_s if - i32.const 16 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end local.get $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.load offset=4 + local.set $3 + local.get $2 i32.const 2 - i32.shr_u - i32.gt_u + i32.eq if - i32.const 32 - i32.const 80 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.load8_u offset=1 + local.set $4 + local.get $3 + i32.load8_u + local.set $5 + local.get $4 + local.get $5 + i32.const 2 + global.set $~argumentsLength + local.get $1 + i32.load + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $3 + local.get $5 + i32.store8 offset=1 + local.get $3 + local.get $4 + i32.store8 + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end - local.get $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.set $6 local.get $2 - call $~lib/memory/memory.fill - local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - i32.load - local.tee $6 - i32.ne + i32.store + i32.const 0 + drop + local.get $5 + i32.const 256 + i32.lt_s if + local.get $6 local.get $5 - call $~lib/rt/pure/__retain - local.set $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/insertionSort + else local.get $6 - call $~lib/rt/pure/__release + local.get $5 + local.get $4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/sort/weakHeapSort 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $std/array/ArrayU32#constructor (param $0 i32) (param $1 i32) (result i32) + (func $std/array/ArrayStr#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 + i64.const 0 + i64.store local.get $0 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.const 40 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - call $~lib/array/Array#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release - end - local.get $1 - i32.store - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (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#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (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#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.store offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize + i32.const 42 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - i32.store offset=12 + call $~lib/array/Array<~lib/string/String>#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/array/Array#every (param $0 i32) (param $1 i32) (result i32) + (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 local.set $2 local.get $0 @@ -26283,8 +33833,18 @@ 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 global.set $~argumentsLength local.get $1 @@ -26293,10 +33853,12 @@ i32.eqz if i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end local.get $2 @@ -26307,19 +33869,27 @@ end end i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 local.set $2 local.get $0 @@ -26347,500 +33917,305 @@ 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 global.set $~argumentsLength local.get $1 i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - 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 $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop - 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#__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 528 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (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 + call_indirect (type $i32_i32_i32_=>_i32) if local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return 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#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 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $1 - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.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 - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $2 - i32.const 2 - 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 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (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 + i32.eq 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 + i32.const 1 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 + local.get $3 + i32.ge_s + end + if + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer local.get $7 - i32.lt_s - select + return end - local.set $9 - local.get $3 + 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 $7 + local.tee $4 i32.const 0 - local.tee $6 - local.get $7 - local.get $6 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select - else + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $6 + loop $while-continue|0 + local.get $2 local.get $3 - local.tee $6 - local.get $5 - local.tee $7 - local.get $6 - local.get $7 i32.lt_s - select + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/string/String.__eq + if + 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 + return + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end 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 + i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $7 - local.get $6 - i32.lt_s - select - local.set $11 + ) + (func $~lib/array/Array<~lib/string/String>#includes (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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 drop - 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 - call $~lib/rt/pure/__retain + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/array/Array<~lib/string/String>#indexOf + i32.const 0 + i32.ge_s + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return ) - (func $~lib/array/Array#pop (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (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 8 + 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.load offset=12 - local.set $1 - local.get $1 - i32.const 1 + local.set $3 + local.get $3 + i32.const 0 + i32.eq + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.const 0 i32.lt_s if - i32.const 1008 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable + 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.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 2 - i32.shl + 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__eq + if + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $~lib/array/Array#forEach (param $0 i32) (param $1 i32) + (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 local.set $2 local.get $0 @@ -26868,8 +34243,18 @@ 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 global.set $~argumentsLength local.get $1 @@ -26882,25 +34267,40 @@ br $for-loop|0 end end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#filter (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 i32.const 0 i32.const 2 - i32.const 7 + i32.const 29 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store i32.const 0 local.set $3 local.get $0 @@ -26921,6 +34321,7 @@ local.set $5 local.get $5 if + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.get $3 @@ -26928,10 +34329,21 @@ i32.shl i32.add i32.load - local.set $6 + local.tee $6 + i32.store offset=4 local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 local.get $3 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 i32.const 3 global.set $~argumentsLength local.get $1 @@ -26939,8 +34351,18 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 local.get $6 - call $~lib/array/Array#push + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + call $~lib/array/Array<~lib/string/String>#push drop end local.get $3 @@ -26951,70 +34373,27 @@ end end local.get $2 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (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 1008 - i32.const 80 - i32.const 361 - i32.const 21 - 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - i32.const 0 - i32.store - local.get $0 - local.get $4 - i32.store offset=12 - local.get $3 + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $~lib/array/Array#some (param $0 i32) (param $1 i32) (result i32) + (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store i32.const 0 local.set $2 local.get $0 @@ -27042,8 +34421,18 @@ 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 global.set $~argumentsLength local.get $1 @@ -27051,10 +34440,12 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end local.get $2 @@ -27065,688 +34456,571 @@ end end i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) + (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=12 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 + (local $4 i32) + global.get $~lib/memory/__stack_pointer 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 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop - local.get $3 - local.get $1 i32.store local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - ) - (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) + i32.load offset=4 + local.set $2 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 - local.get $3 - i32.const 2 - i32.const 7 + drop i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - 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 + drop 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 - ) - (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.get $0 - i32.load offset=12 - local.set $3 - local.get $1 i32.const 0 + i32.const 1 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 - end - local.set $1 + drop + i32.const 1 + drop local.get $2 - local.tee $4 local.get $3 local.get $1 - i32.sub - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $5 - i32.lt_s - select - local.tee $5 - i32.const 0 - local.tee $4 - local.get $5 + i32.store local.get $4 - i32.gt_s - select - local.set $2 - local.get $2 - i32.const 2 - i32.const 7 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - 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 - 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 - i32.store offset=12 - local.get $6 + call $~lib/util/string/joinStringArray + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) - (func $~lib/array/Array#reverse (param $0 i32) (result i32) + (func $~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/array/Array<~lib/string/String>#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/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 $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.load offset=12 - local.set $1 local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 + i32.eq + if (result i32) + i32.const 1 + else local.get $0 - i32.load offset=4 - local.get $1 + i32.const 0 + i32.eq + end + if (result i32) i32.const 1 - i32.sub - i32.const 2 - i32.shl + else + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - br $while-continue|0 - end - end + global.set $~lib/memory/__stack_pointer + local.get $6 + return end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $3 + local.get $2 + local.get $3 + i32.or i32.eqz - drop - i32.const 13088 - i32.const 80 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + if + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $2 + i32.eqz + if + i32.const -1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $3 + i32.eqz + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end local.get $0 - i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + i32.const 0 local.get $1 - call $~lib/rt/pure/__visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 + 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/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) - (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 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 0 - i32.store + call $~lib/array/Array#set:buffer local.get $0 i32.const 0 - i32.store offset=4 + call $~lib/array/Array#set:dataStart local.get $0 i32.const 0 - i32.store offset=8 + call $~lib/array/Array#set:byteLength local.get $0 i32.const 0 - i32.store offset=12 + 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 i32.const 32 i32.const 80 - i32.const 57 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 0 + i32.const 2 i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 0 - call $~lib/rt/pure/__new - local.set $3 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 i32.const 0 local.get $2 call $~lib/memory/memory.fill local.get $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 + call $~lib/array/Array#set:buffer local.get $0 local.get $3 - i32.store offset=4 + call $~lib/array/Array#set:dataStart local.get $0 local.get $2 - i32.store offset=8 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#set:length_ 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 $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 + 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 - i32.const 16 - i32.const 41 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + 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 $~lib/array/Array#constructor - local.set $0 + 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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - ) - (func $~lib/array/Array#get:buffer (param $0 i32) (result i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release + i32.const 32 + i32.const 576 + i32.const 18 + i32.const 57 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.store - ) - (func $~lib/array/Array#get:dataStart (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 - ) - (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) - local.get $0 - 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 - ) - (func $~lib/array/Array#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 0 local.get $1 - i32.store offset=8 - ) - (func $~lib/array/Array#get:length_ (param $0 i32) (result i32) + call $~lib/memory/memory.fill local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) + 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 - i32.store offset=12 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $0 - i32.load offset=12 - local.set $2 + 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/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 - drop + 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 - call $~lib/array/ensureSize + 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 - local.get $1 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 $~lib/array/Array#every (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) (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 - local.set $2 + i32.store 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 (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - 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 $3 + local.set $2 + i32.const 0 local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.load offset=12 local.get $1 - call $~lib/rt/pure/__retain - local.set $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 - 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 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - 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 + i32.eq + select local.set $3 - local.get $1 - call $~lib/rt/pure/__release + local.get $2 local.get $3 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + i32.add + local.set $4 + local.get $4 + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 209 + 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 $5 + i32.store + local.get $5 + i32.load offset=4 + local.set $6 + local.get $2 + i32.const 2 + 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.const 0 + 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 - local.get $2 - i32.store8 - ) - (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 528 - i32.const 80 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/array/Array#indexOf (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) + (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 $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 + local.get $1 i32.const 0 i32.lt_s - if + if (result i32) local.get $3 - local.get $2 + local.get $1 i32.add local.tee $4 i32.const 0 @@ -27755,223 +35029,221 @@ 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 + else + local.get $1 + local.tee $5 local.get $3 - i32.lt_s - local.set $4 + local.tee $4 + local.get $5 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 + i32.lt_s + select 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.set $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.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 - i32.eq - if - i32.const -1 - return - end + 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 - 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 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 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.set $7 local.get $0 - i32.load offset=12 - local.set $2 + 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 + call $~lib/memory/memory.copy + local.get $1 local.get $2 - i32.const 1 i32.add - local.set $3 + 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 - i32.const 0 - call $~lib/array/ensureSize - i32.const 0 - drop - local.get $0 - i32.load offset=4 local.get $2 - i32.const 0 - i32.shl + 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 - local.get $1 - i32.store8 - local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/array/Array#concat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $2 + (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 - local.get $1 + i32.store + local.get $0 i32.load offset=12 + local.set $3 local.get $1 i32.const 0 - i32.eq - select - local.set $3 + 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 + end + local.set $1 local.get $2 + local.tee $4 local.get $3 - i32.add - local.set $4 + local.get $1 + i32.sub + local.tee $5 local.get $4 - i32.const 1073741820 + local.get $5 + i32.lt_s + select + local.tee $5 i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 229 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + local.tee $4 + local.get $5 local.get $4 - i32.const 0 - i32.const 6 + i32.gt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 8 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 + local.tee $6 + i32.store + local.get $6 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.set $8 + local.get $8 local.get $1 - i32.load offset=4 - local.get $3 - i32.const 0 + 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 $5 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/array/Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 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) @@ -27980,1776 +35252,1771 @@ (local $9 i32) (local $10 i32) (local $11 i32) - local.get $0 - i32.load offset=4 - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $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 $3 local.get $1 i32.add - local.tee $7 + local.tee $4 i32.const 0 - local.tee $6 - local.get $7 - local.get $6 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select else local.get $1 - local.tee $6 + local.tee $5 + local.get $3 + local.tee $4 local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 i32.lt_s select end - local.set $8 + local.set $1 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.tee $4 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 + local.get $1 i32.sub - local.tee $7 + local.tee $5 + local.get $4 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.tee $5 i32.const 0 - drop + local.tee $4 + local.get $5 local.get $4 - local.get $8 + i32.gt_s + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.const 11 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.get $4 + local.set $9 + local.get $7 local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 0 + local.get $2 + i32.const 2 i32.shl call $~lib/memory/memory.copy - local.get $0 - call $~lib/rt/pure/__retain - ) - (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 + local.get $2 + i32.add + local.set $10 + local.get $3 + local.get $10 + i32.ne if - i32.const 1008 - i32.const 80 - i32.const 300 - i32.const 21 - call $~lib/builtins/abort - unreachable + 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 - i32.load offset=4 - local.get $1 - i32.const 1 + local.get $3 + local.get $2 i32.sub - local.tee $1 - i32.const 0 - i32.shl + call $~lib/array/Array#set:length_ + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_u - local.set $2 + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (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 + 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 + 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 6192 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $1 + i32.store + end local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#sort + 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#forEach (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer 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.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 - 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 (type $i32_i32_i32_=>_none) - local.get $2 + drop i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 6384 + br $~lib/util/sort/COMPARATOR|inlined.0 end + local.tee $1 + i32.store end + local.get $0 local.get $1 - call $~lib/rt/pure/__release + call $~lib/array/Array#sort + 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#filter (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) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer 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 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array#push - drop + 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 1 + if (result i32) + i32.const 4 + i32.const 4 + i32.le_u + else + i32.const 0 + end + drop + i32.const 6560 + 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 + 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) + global.get $~lib/memory/__stack_pointer + i32.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 + br_table $0of1 $1of1 $outOfRange end - local.get $3 + unreachable + end + global.get $~lib/memory/__stack_pointer + block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) i32.const 1 - i32.add - local.set $3 - br $for-loop|0 + drop + i32.const 0 + if (result i32) + i32.const 4 + i32.const 4 + i32.le_u + else + i32.const 0 + end + drop + i32.const 6688 + br $~lib/util/sort/COMPARATOR|inlined.0 end + local.tee $1 + i32.store end - local.get $2 - local.set $4 + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 + call $~lib/array/Array#sort + 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#shift (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 - local.set $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + 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 1 - i32.lt_s + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u if - i32.const 1008 + i32.const 32 i32.const 80 - i32.const 361 - i32.const 21 + i32.const 58 + i32.const 60 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.const 2 i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $4 i32.const 0 - i32.shl - i32.add + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.store8 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/array/Array>#set:buffer local.get $0 - local.get $4 - i32.store offset=12 local.get $3 + call $~lib/array/Array<~lib/array/Array>#set:dataStart + local.get $0 + local.get $2 + 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 $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#some (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) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.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 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + call $~lib/array/Array>#set:buffer local.get $0 - i32.load offset=12 - i32.const 1 - i32.add - local.set $2 + 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 58 + 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 0 - call $~lib/array/ensureSize + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - i32.load offset=4 - local.set $3 local.get $3 - i32.const 1 - i32.add + call $~lib/array/Array>#set:buffer + local.get $0 local.get $3 + call $~lib/array/Array>#set:dataStart + local.get $0 local.get $2 - i32.const 1 + call $~lib/array/Array>#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array>#set:length_ + 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 $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 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.shl - call $~lib/memory/memory.copy - i32.const 0 - drop - local.get $3 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 local.get $1 - i32.store8 + call $std/array/Proxy#set:x local.get $0 - local.get $2 - i32.store offset=12 + 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#slice (param $0 i32) (param $1 i32) (param $2 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) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $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 + 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.set $1 - local.get $2 + local.get $0 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 + 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 58 + 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 - 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 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - i32.load offset=4 - local.set $7 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String>#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array<~lib/string/String>#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array<~lib/string/String>#set:byteLength local.get $0 - i32.load offset=4 local.get $1 - i32.const 0 - i32.shl + call $~lib/array/Array<~lib/string/String>#set:length_ + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result 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) - (local $9 i32) - (local $10 i32) - local.get $0 - i32.load offset=12 - local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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) - 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 + i32.const 1 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 36 + i32.gt_s + end + if + i32.const 7808 + i32.const 7936 + i32.const 373 + i32.const 5 + 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 - local.get $2 - i32.const 0 - i32.const 6 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 - 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 0 - i32.shl - i32.add - local.set $9 - local.get $7 - local.get $9 - local.get $2 - i32.const 0 - 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.eqz if - local.get $9 - local.get $8 - local.get $10 - i32.const 0 - i32.shl + i32.const 8000 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $3 - local.get $10 - i32.sub - i32.const 0 - i32.shl - call $~lib/memory/memory.copy + global.set $~lib/memory/__stack_pointer + local.get $8 + return end local.get $0 - local.get $3 - local.get $2 - i32.sub - i32.store offset=12 - local.get $6 - ) - (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.get $0 - i32.load offset=12 - local.set $1 - local.get $1 + i32.const 31 + i32.shr_u + local.set $2 + local.get $2 if + i32.const 0 local.get $0 - i32.load offset=4 - local.set $2 + i32.sub + local.set $0 + end + local.get $1 + i32.const 10 + i32.eq + if local.get $0 - i32.load offset=4 - local.get $1 + 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.sub - i32.const 0 i32.shl - i32.add - local.set $3 - loop $while-continue|0 + 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 - i32.lt_u + 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 - if - local.get $2 - i32.load8_u - local.set $5 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|0 - end + 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 $0 - call $~lib/rt/pure/__retain + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 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) - (local $8 i32) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $3 - loop $for-loop|0 - local.get $3 + i32.store + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 + else local.get $1 - i32.lt_s + i32.const 36 + i32.gt_s + end + if + i32.const 7808 + i32.const 7936 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 8000 + 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 + 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 - local.get $3 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $5 - local.get $3 - i32.const 1 + i32.clz i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_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 $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 0 - i32.shl - i32.add - local.get $8 - i32.store8 - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 + i32.const 2 + i32.shr_s i32.const 1 i32.add - i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 i32.shl - i32.add + 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 - i32.store8 + 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.add + 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 + 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/util/number/dtoa (param $0 f64) (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 + f64.const 0 + f64.eq + if + i32.const 9936 + 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 9968 local.set $3 - br $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end + i32.const 10000 + i32.const 10048 + 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 10080 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 10080 + local.get $1 + call $~lib/memory/memory.copy local.get $2 - call $~lib/rt/pure/__release + 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/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 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 i32) + (local $8 i64) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $3 - call $~lib/memory/memory.fill + i32.store local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if - local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $9 - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $5 - i32.const 0 - i32.shl - i32.add - local.get $9 - i32.store8 - local.get $0 - local.get $8 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 - end + 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 7808 + i32.const 7936 + 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 8000 + 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 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 + 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.load8_u - local.set $10 + 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.get $5 + local.set $8 + local.get $4 + local.set $5 i32.const 0 - i32.shl + 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 - i32.load8_u - i32.store8 + 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.get $5 + local.set $8 + local.get $4 + local.set $7 i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 i32.const 1 - local.set $9 - loop $while-continue|3 - local.get $9 - i32.const 1 - i32.shl - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $8 - local.get $5 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $8 - local.set $9 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $9 - i32.const 0 - i32.gt_s - local.set $7 - local.get $7 - if - local.get $0 - i32.load8_u - local.set $10 - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $11 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.get $4 - local.get $9 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 1 - local.get $9 - i32.const 31 - i32.and - i32.shl - i32.xor - i32.store - local.get $0 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $10 - i32.store8 - local.get $0 - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.shr_s - local.set $9 - br $while-continue|4 - end - end - local.get $5 + 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.sub - local.set $5 - br $for-loop|2 + 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 $4 - call $~lib/rt/tlsf/__free - local.get $0 - i32.load8_u offset=1 - local.set $12 - local.get $0 - local.get $0 - i32.load8_u - i32.store8 offset=1 - local.get $0 - local.get $12 - i32.store8 local.get $2 - call $~lib/rt/pure/__release + 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#sort (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 4 + 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 - 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.le_s - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - i32.load offset=4 - local.set $4 - local.get $2 i32.const 2 - i32.eq - if - local.get $4 - i32.load8_u offset=1 - local.set $3 - local.get $4 - i32.load8_u - local.set $5 - local.get $3 - local.get $5 - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.load - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.store8 offset=1 - local.get $4 - local.get $3 - i32.store8 - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $4 - local.set $5 - local.get $2 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $6 - i32.const 0 - drop - local.get $3 - i32.const 256 i32.lt_s - if - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/insertionSort + if (result i32) + i32.const 1 else - local.get $5 - local.get $3 - local.get $6 - call $~lib/util/sort/weakHeapSort + local.get $1 + i32.const 36 + i32.gt_s end - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $~lib/array/Array#flat (param $0 i32) (result i32) - i32.const 0 - i32.eqz - drop - i32.const 13088 - i32.const 80 - i32.const 504 - 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/pure/__visit - ) - (func $std/array/ArrayStr#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz if - i32.const 16 - i32.const 42 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 7808 + i32.const 7936 + 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>#constructor - local.set $0 - local.get $0 - ) - (func $~lib/array/Array<~lib/string/String>#get:buffer (param $0 i32) (result i32) - local.get $0 - i32.load - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#set:buffer (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $0 - i32.load - local.tee $2 - i32.ne + i64.const 0 + i64.ne + i32.eqz if - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $2 - call $~lib/rt/pure/__release + i32.const 8000 + 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 $1 - i32.store - ) - (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>#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>#get:byteLength (param $0 i32) (result i32) - local.get $0 - i32.load offset=8 - ) - (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>#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.store offset=12 - ) - (func $~lib/array/Array<~lib/string/String>#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.load offset=12 + i64.const 63 + i64.shr_u + i32.wrap_i64 local.set $2 - i32.const 1 - drop local.get $2 + if + i64.const 0 + local.get $0 + i64.sub + local.set $0 + end local.get $1 - i32.gt_s + i32.const 10 + i32.eq if local.get $0 - i32.load offset=4 - local.set $3 - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.set $4 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.set $5 - loop $do-continue|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 - i32.load - call $~lib/rt/pure/__release + 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 - i32.const 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.tee $4 + 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 - i32.lt_u local.set $6 + i32.const 0 + i32.const 1 + i32.ge_s + drop + local.get $7 + local.get $9 local.get $6 - br_if $do-continue|0 + call $~lib/util/number/utoa64_dec_lut end else - local.get $0 local.get $1 - i32.const 2 - call $~lib/array/ensureSize - end - local.get $0 - local.get $1 - i32.store offset=12 - ) - (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.get $1 - call $~lib/rt/pure/__retain - local.set $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 - select - i32.lt_s - local.set $4 - local.get $4 + i32.const 16 + i32.eq if + i32.const 63 local.get $0 - i32.load offset=4 - local.get $2 + i64.clz + i32.wrap_i64 + i32.sub i32.const 2 - i32.shl + i32.shr_s + i32.const 1 i32.add - i32.load 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 - i32.const 3 - global.set $~argumentsLength local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - i32.const 0 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end + call $~lib/util/number/ulog_base local.get $2 - i32.const 1 i32.add - local.set $2 - br $for-loop|0 + 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 - i32.const 1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release + local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/array/Array<~lib/string/String>#findIndex (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 0 - local.set $2 + (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.load offset=12 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 0 local.set $3 + i32.const 0 + local.set $4 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 + local.get $1 i32.lt_s - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $0 - i32.load offset=4 local.get $2 + local.get $4 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 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return + 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 - local.get $2 + i32.add + local.set $3 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end - i32.const -1 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release local.get $3 - ) - (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 $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 2 + i32.shl + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 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 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + 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 + 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 - 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 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 i32.lt_s - local.set $7 - local.get $7 + 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 - local.get $1 - local.get $6 - i32.ne - if - local.get $4 + block $for-continue|1 local.get $2 + local.get $4 i32.const 2 i32.shl i32.add - local.get $1 - call $~lib/rt/pure/__retain - i32.store + i32.load + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + br $for-continue|1 + end + local.get $6 + i32.load offset=8 + local.set $11 + local.get $8 + local.get $10 + i32.add local.get $6 - call $~lib/rt/pure/__release + 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 $2 + local.get $4 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $4 + br $for-loop|1 end end - local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 + 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 $12 ) - (func $~lib/array/Array<~lib/string/String>#indexOf (param $0 i32) (param $1 i32) (param $2 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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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.load offset=12 - local.set $3 - local.get $3 + local.set $1 + local.get $0 + i32.load offset=4 + local.set $2 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 $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - 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 + loop $for-loop|0 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 + local.get $1 i32.lt_s - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $6 local.get $2 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $2 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return + 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 - local.get $2 + i32.add + 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.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/array/Array<~lib/string/String>#includes (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - ) - (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) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=12 - local.set $3 local.get $3 + i32.const 2 + i32.shl + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 0 - i32.eq - if - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - 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 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 27 + 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 $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 $1 + i32.lt_s + local.set $5 + local.get $5 if - local.get $3 + block $for-continue|1 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + local.get $6 + i32.const 0 + i32.eq + if + br $for-continue|1 + end + local.get $6 + i32.load offset=8 + 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.sub - local.set $2 + i32.add + local.set $4 + br $for-loop|1 end end - local.get $0 - i32.load offset=4 - local.set $5 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - local.set $4 + 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 $5 - local.get $2 + local.get $8 + local.get $4 i32.const 2 i32.shl i32.add i32.load - local.get $1 - call $~lib/string/String.__eq - if - local.get $2 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 + local.set $11 + local.get $8 + local.get $11 i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 + call $~lib/rt/itcms/__link + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 end end - i32.const -1 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 + 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 $12 ) - (func $~lib/array/Array<~lib/string/String>#push (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) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=12 + 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 32 + i32.const 80 + i32.const 58 + 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 1 - i32.add - local.set $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 local.get $3 - i32.const 2 - call $~lib/array/ensureSize - i32.const 1 - drop + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart local.get $0 - i32.load offset=4 local.get $2 - i32.const 2 - i32.shl - i32.add + call $~lib/array/Array#set:byteLength + local.get $0 local.get $1 - call $~lib/rt/pure/__retain - i32.store + call $~lib/array/Array#set:length_ local.get $0 - local.get $3 - i32.store offset=12 - local.get $3 local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 ) - (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) @@ -29757,14 +37024,14 @@ (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 $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -29788,18 +37055,19 @@ if i32.const 32 i32.const 80 - i32.const 229 + i32.const 209 i32.const 60 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 - i32.const 29 + i32.const 7 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $5 i32.load offset=4 local.set $6 @@ -29807,647 +37075,433 @@ i32.const 2 i32.shl local.set $7 - i32.const 1 - drop - 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 - call $~lib/rt/pure/__retain - i32.store - local.get $9 - i32.const 4 - i32.add - local.set $9 - br $for-loop|0 - end - end - 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 - call $~lib/rt/pure/__retain - i32.store - local.get $11 - i32.const 4 - i32.add - local.set $11 - br $for-loop|1 - end - end - local.get $5 - local.set $10 + 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/pure/__release - local.get $10 + 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<~lib/string/String>#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result 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) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $0 - i32.load offset=4 - local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 $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.get $3 i32.add - local.tee $7 + local.tee $4 i32.const 0 - local.tee $6 - local.get $7 - local.get $6 + local.tee $5 + local.get $4 + local.get $5 i32.gt_s select else local.get $1 - local.tee $6 + local.tee $5 + local.get $3 + local.tee $4 local.get $5 - local.tee $7 - local.get $6 - local.get $7 + local.get $4 i32.lt_s select end - local.set $8 + local.set $1 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 - i32.const 1 - drop - local.get $9 - local.get $8 - i32.lt_s - if (result i32) - local.get $8 - local.get $9 - local.get $11 i32.add - i32.lt_s - else + 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 - if - local.get $9 - local.get $11 - i32.const 1 - i32.sub - i32.add - local.set $9 - local.get $8 - local.get $11 - i32.const 1 - i32.sub - i32.add - local.set $8 - loop $while-continue|0 - local.get $11 - local.set $7 - local.get $7 - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $12 - local.get $12 - local.get $6 - i32.ne - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $12 - call $~lib/rt/pure/__retain - i32.store - local.get $6 - call $~lib/rt/pure/__release - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $8 - i32.const 1 - i32.sub - local.set $8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|0 - end - end - else - loop $while-continue|1 - local.get $11 - local.set $7 - local.get $7 - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $13 - local.get $4 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $14 - local.get $14 - local.get $13 - i32.ne - if - local.get $4 - local.get $8 - i32.const 2 - i32.shl - i32.add - local.get $14 - call $~lib/rt/pure/__retain - i32.store - local.get $13 - call $~lib/rt/pure/__release - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - local.get $8 - i32.const 1 - i32.add - local.set $8 - local.get $11 - i32.const 1 - i32.sub - local.set $11 - br $while-continue|1 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#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 1008 - i32.const 80 - i32.const 300 - i32.const 21 - 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 $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.const 7 + 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 1 - i32.sub - local.tee $1 i32.const 2 i32.shl i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - local.get $1 - i32.store offset=12 - local.get $2 + local.set $8 + 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<~lib/string/String>#forEach (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#splice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 - local.set $2 + i32.store local.get $0 i32.load offset=12 local.set $3 - loop $for-loop|0 - local.get $2 + 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 $0 - i32.load offset=12 + i32.const 0 local.tee $5 local.get $4 local.get $5 - i32.lt_s + i32.gt_s select - i32.lt_s - local.set $4 + else + local.get $1 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 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 (type $i32_i32_i32_=>_none) - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.lt_s + select end - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array<~lib/string/String>#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.get $1 - call $~lib/rt/pure/__retain 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 29 + i32.const 7 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $2 - i32.const 0 - local.set $3 + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + local.set $7 local.get $0 - i32.load offset=12 - local.set $4 - loop $for-loop|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 + 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 $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 - call $~lib/rt/pure/__retain - 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 (type $i32_i32_i32_=>_i32) - if - local.get $2 - local.get $6 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $6 - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + 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 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 + 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<~lib/string/String>#shift (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 6 + 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.load offset=12 - local.set $1 + 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 1 - i32.lt_s + i32.const 1073741820 + i32.const 0 + i32.shr_u + i32.gt_u if - i32.const 1008 + i32.const 32 i32.const 80 - i32.const 361 - i32.const 21 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.set $2 - local.get $2 - i32.load - call $~lib/rt/pure/__retain - 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.const 0 i32.shl - call $~lib/memory/memory.copy - i32.const 1 - drop + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add i32.const 0 - i32.store + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer local.get $0 - local.get $4 - i32.store offset=12 local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/array/Array<~lib/string/String>#some (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) (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 - local.set $2 + i32.store 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 (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + local.set $2 i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/array/Array<~lib/string/String>#unshift (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 - i32.const 1 - i32.add - local.set $2 - local.get $0 - local.get $2 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - i32.load offset=4 + local.get $1 + i32.const 0 + i32.eq + select local.set $3 + local.get $2 local.get $3 - i32.const 4 i32.add - local.get $3 + 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 209 + 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 1 - i32.sub - i32.const 2 + i32.const 0 i32.shl - call $~lib/memory/memory.copy - i32.const 1 + local.set $7 + i32.const 0 drop - local.get $3 - local.get $1 - call $~lib/rt/pure/__retain - i32.store + local.get $6 local.get $0 - local.get $2 - i32.store offset=12 - local.get $2 - local.set $4 + 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/pure/__release - local.get $4 + 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<~lib/string/String>#slice (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) (local $4 i32) (local $5 i32) @@ -30455,7 +37509,14 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -30520,59 +37581,41 @@ i32.gt_s select local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 2 - i32.const 29 + i32.const 0 + i32.const 6 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 + 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.const 0 i32.shl i32.add local.set $8 - i32.const 1 - drop i32.const 0 - local.set $4 + drop + local.get $7 + local.get $8 local.get $3 - i32.const 2 + i32.const 0 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 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - i32.const 4 - i32.add - local.set $4 - br $while-continue|0 - end - end + 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<~lib/string/String>#splice (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) @@ -30581,6 +37624,15 @@ (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 @@ -30627,13 +37679,14 @@ i32.gt_s select local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.const 29 + i32.const 0 + i32.const 6 i32.const 0 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $6 + local.tee $6 + i32.store local.get $6 i32.load offset=4 local.set $7 @@ -30642,14 +37695,14 @@ local.set $8 local.get $8 local.get $1 - i32.const 2 + i32.const 0 i32.shl i32.add local.set $9 local.get $7 local.get $9 local.get $2 - i32.const 2 + i32.const 0 i32.shl call $~lib/memory/memory.copy local.get $1 @@ -30663,13 +37716,13 @@ local.get $9 local.get $8 local.get $10 - i32.const 2 + i32.const 0 i32.shl i32.add local.get $3 local.get $10 i32.sub - i32.const 2 + i32.const 0 i32.shl call $~lib/memory/memory.copy end @@ -30677,2044 +37730,2388 @@ local.get $3 local.get $2 i32.sub - i32.store offset=12 + 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<~lib/string/String>#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.load offset=12 - local.set $1 - local.get $1 - if - local.get $0 - i32.load offset=4 - local.set $2 - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.sub - 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 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - local.get $3 - i32.load - i32.store - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $3 - i32.const 4 - i32.sub - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - br $while-continue|0 - end - end - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array<~lib/string/String>#join (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=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 + local.get $1 + i32.load offset=12 + local.get $1 i32.const 0 - i32.const 1 - i32.lt_s - drop - i32.const 1 - drop + i32.eq + select + local.set $3 local.get $2 local.get $3 - local.get $1 - call $~lib/util/string/joinStringArray + i32.add local.set $4 - local.get $1 - call $~lib/rt/pure/__release local.get $4 - return - ) - (func $~lib/array/Array<~lib/string/String>#flat (param $0 i32) (result i32) + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 209 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.const 29 i32.const 0 - i32.eqz - drop - i32.const 13088 - i32.const 80 - i32.const 504 - i32.const 7 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/array/Array<~lib/string/String>#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7552 - call $~lib/array/Array<~lib/string/String>#join - ) - (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 + call $~lib/rt/__newArray + local.tee $5 + i32.store + local.get $5 i32.load offset=4 - local.set $2 + local.set $6 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 + local.set $7 + i32.const 1 + drop + 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 $4 - local.get $4 + local.set $10 + local.get $10 if - local.get $2 + local.get $8 + local.get $9 + i32.add i32.load - local.set $5 + local.set $11 + local.get $6 + local.get $9 + i32.add + local.get $11 + i32.store local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 + local.get $11 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $9 i32.const 4 i32.add - local.set $2 - br $while-continue|0 + local.set $9 + br $for-loop|0 end end - local.get $0 - i32.load + local.get $6 + local.get $7 + i32.add + local.set $6 local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/rt/pure/finalize (param $0 i32) + i32.load offset=4 + local.set $9 + local.get $3 + i32.const 2 + i32.shl + local.set $10 i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock + 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 + 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/rt/pure/decrement (param $0 i32) + (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=4 + i32.load offset=12 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 + i32.lt_s if - i32.const 0 - i32.const 192 - i32.const 122 - i32.const 14 + i32.const 1152 + i32.const 80 + i32.const 256 + i32.const 21 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 192 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - 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 1 - drop - 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 - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop + i32.load offset=4 local.get $1 i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 192 - 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 $~start - call $start:std/array - ) - (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 + local.tee $1 + i32.const 2 + i32.shl + i32.add 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 $std/array/Ref~visit (param $0 i32) (param $1 i32) - nop - ) - (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) + i32.store local.get $0 local.get $1 - call $~lib/array/Array#__visit + call $~lib/array/Array<~lib/string/String>#set:length_ + 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#__visit (param $0 i32) (param $1 i32) + (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 - drop + i32.lt_s + if + i32.const 1152 + i32.const 80 + i32.const 315 + i32.const 21 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - i32.load offset=12 + 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.get $4 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + i32.const 1 + 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<~lib/string/String>#set:length_ + local.get $3 + 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<~lib/string/String>#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 + i32.const 0 + i32.store + local.get $0 + i32.load offset=12 local.set $3 - loop $while-continue|0 + 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 - i32.lt_u - local.set $4 + local.tee $4 + local.get $5 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 + i32.lt_s + select end - 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.set $2 + local.get $2 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.sub + local.tee $4 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#__visit (param $0 i32) (param $1 i32) + 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.const 29 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) + 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 - 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 2 + i32.shl + i32.add + local.set $8 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 0 + local.set $4 + local.get $3 i32.const 2 i32.shl - i32.add - local.set $3 + local.set $5 loop $while-continue|0 - local.get $2 - local.get $3 - i32.lt_u - local.set $4 local.get $4 + local.get $5 + i32.lt_u + local.set $9 + local.get $9 if - local.get $2 + local.get $8 + local.get $4 + i32.add i32.load - local.set $5 - local.get $5 - if - local.get $5 - local.get $1 - call $~lib/rt/pure/__visit - end - local.get $2 + 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 $2 + local.set $4 br $while-continue|0 end end - 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/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/pure/__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/pure/__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/pure/__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/pure/__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/pure/__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 + 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/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#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=4 + i32.load offset=12 + local.set $3 local.get $1 - call $~lib/rt/pure/__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.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 + end + local.set $1 + local.get $2 + local.tee $4 + local.get $3 local.get $1 - call $~lib/function/Function<%28bool%2Ci32%2Ci32%2C~lib/array/Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 + 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 29 + i32.const 0 + call $~lib/rt/__newArray + local.tee $6 + i32.store + local.get $6 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__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.set $7 local.get $0 i32.load offset=4 + local.set $8 + local.get $8 local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 + 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 - 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 $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 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + local.get $2 + i32.sub + call $~lib/array/Array<~lib/string/String>#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/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array<~lib/string/String>#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 + 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 - call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit (param $0 i32) (param $1 i32) + if + local.get $0 + i32.load offset=4 + local.set $2 + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.sub + 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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $5 + i32.store + local.get $2 + local.get $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $3 + i32.const 4 + i32.sub + local.set $3 + br $while-continue|0 + end + end + end local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + 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/function/Function<%28u32%2Cu32%29=>i32>~visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#join@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 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7696 + local.tee $1 + i32.store + end local.get $0 local.get $1 - call $~lib/function/Function<%28u32%2Cu32%29=>i32>#__visit + call $~lib/array/Array#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 $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop + global.get $~lib/memory/__stack_pointer + i32.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 + 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 + if (result i32) + i32.const 1 + i32.const 4 + i32.le_u + else + i32.const 0 + end + drop + i32.const 13296 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $1 + i32.store + end local.get $0 - i32.load offset=4 + local.get $1 + call $~lib/array/Array#sort 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#join@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 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7696 + local.tee $1 + i32.store + end local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + local.get $1 + call $~lib/array/Array#join + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 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 + 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) + (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 + br_table $0of1 $1of1 $outOfRange end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $while-continue|0 + 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 + i32.const 1 + drop + i32.const 13328 + br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 end + local.tee $1 + i32.store end local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array<~lib/string/String>#sort + 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<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + (func $~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 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 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 7696 + local.tee $1 + i32.store + end local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array>#__visit + 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 $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit (param $0 i32) (param $1 i32) + (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.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>~visit (param $0 i32) (param $1 i32) + i32.store local.get $0 local.get $1 - call $~lib/function/Function<%28~lib/array/Array%2C~lib/array/Array%29=>i32>#__visit - ) - (func $std/array/Proxy~visit (param $0 i32) (param $1 i32) - nop - ) - (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 + 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.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 + i32.store local.get $0 - i32.load + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array>~visit (param $0 i32) (param $1 i32) + (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>#__visit + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit (param $0 i32) (param $1 i32) + (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.load offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>~visit (param $0 i32) (param $1 i32) + i32.store offset=4 local.get $0 local.get $1 - call $~lib/function/Function<%28std/array/Proxy%2Cstd/array/Proxy%29=>i32>#__visit + 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 $~lib/array/Array<~lib/string/String|null>#__visit (param $0 i32) (param $1 i32) + (func $export:~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 1 - drop + global.get $~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.load offset=4 + 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#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.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 + i32.store local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + 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 $~lib/array/Array<~lib/string/String|null>~visit (param $0 i32) (param $1 i32) + (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 - 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) + i32.store local.get $0 - i32.load offset=4 local.get $1 - call $~lib/rt/pure/__visit + 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 $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/function/Function<%28~lib/string/String|null%2C~lib/string/String|null%29=>i32>#__visit + 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 $~lib/array/Array<~lib/string/String>~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array<~lib/string/String>#__visit + 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 $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>#__visit (param $0 i32) (param $1 i32) + (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 - i32.load offset=4 local.get $1 - call $~lib/rt/pure/__visit + 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 $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32>~visit (param $0 i32) (param $1 i32) + (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 - 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 + i32.store offset=4 local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + 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 $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array#__visit + 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 $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + (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.load + 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 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + i32.store offset=4 local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#forEach + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + i32.store offset=4 local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + 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 $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $export:~lib/array/Array#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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $~lib/array/Array#shift + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__visit ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + (func $export:~lib/array/Array#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.load + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.store offset=4 local.get $0 local.get $1 - call $~lib/array/Array#__visit + 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 + local.get $2 ) - (func $~lib/array/Array<~lib/array/Array>#__visit (param $0 i32) (param $1 i32) + (func $export:~lib/array/Array#unshift (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop + global.get $~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.load offset=4 + i32.store + local.get $0 + local.get $1 + call $~lib/array/Array#unshift 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 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl - i32.add + i32.store + local.get $0 + local.get $1 + local.get $2 + call $~lib/array/Array#slice@varargs 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 + 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 - i32.load local.get $1 - call $~lib/rt/pure/__visit + local.get $2 + call $~lib/array/Array#splice@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 $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + (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.add + global.set $~lib/memory/__stack_pointer 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) + (func $export:~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 1 - drop + global.get $~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.load offset=4 + 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#sort@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:~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.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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#join@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 $~lib/array/Array<~lib/array/Array>~visit (param $0 i32) (param $1 i32) + (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 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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.load offset=4 - local.set $2 - local.get $2 + i32.store local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + call $~lib/array/Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 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 + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $export:std/array/ArrayU8#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 - i32.load local.get $1 - call $~lib/rt/pure/__visit + call $std/array/ArrayU8#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 $~lib/array/Array<~lib/array/Array<~lib/array/Array>>~visit (param $0 i32) (param $1 i32) + (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 - 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 + (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.load offset=4 - local.set $2 - local.get $2 + i32.store local.get $0 - i32.load offset=12 - i32.const 2 - i32.shl + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 4 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 + 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.load + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>~visit (param $0 i32) (param $1 i32) + i32.store offset=4 local.get $0 local.get $1 - call $~lib/array/Array<~lib/array/Array<~lib/string/String|null>>#__visit + 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 $std/array/ArrayU32~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array~visit - ) - (func $std/array/ArrayU8~visit (param $0 i32) (param $1 i32) + i32.store offset=4 local.get $0 local.get $1 - call $~lib/array/Array~visit + 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 $std/array/ArrayStr~visit (param $0 i32) (param $1 i32) + (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 - call $~lib/array/Array<~lib/string/String>~visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $std/array/ArrayStr - block $std/array/ArrayU8 - block $std/array/ArrayU32 - block $~lib/array/Array<~lib/array/Array<~lib/string/String|null>> - block $~lib/array/Array<~lib/array/Array<~lib/array/Array>> - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array<~lib/array/Array> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28~lib/string/String%2C~lib/string/String%29=>i32> - block $~lib/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<%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/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/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/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> $~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/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/array/Array<~lib/string/String|null>> $std/array/ArrayU32 $std/array/ArrayU8 $std/array/ArrayStr $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 $std/array/Ref~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~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 - 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/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 - local.get $0 - local.get $1 - call $std/array/Proxy~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<%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~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 $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 - unreachable + 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 $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 + (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 - call $std/array/ArrayU32#constructor + 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 $~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 + (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 - 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 + (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#includes + 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 $~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 + (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 + 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.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#shift + 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#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#some + 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#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 + 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 + 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#slice@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#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 + local.get $2 + call $~lib/array/Array#splice@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#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.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 + 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#sort@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:~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 - 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 + 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.add + global.set $~lib/memory/__stack_pointer 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 + (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 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (func $export:std/array/ArrayStr#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/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 - call $~lib/array/Array#splice ) - (func $~lib/array/Array#join@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 7552 - local.set $1 - end + (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 local.get $0 + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#join ) - (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 + (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.store local.get $0 local.get $1 - call $std/array/ArrayU8#constructor + call $~lib/array/Array<~lib/string/String>#set:length + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#fill@varargs (param $0 i32) (param $1 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 + (func $export:~lib/array/Array<~lib/string/String>#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 - 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 + i32.store offset=4 local.get $0 local.get $1 + call $~lib/array/Array<~lib/string/String>#every + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (func $export:~lib/array/Array<~lib/string/String>#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<~lib/string/String>#findIndex + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (func $export:~lib/array/Array<~lib/string/String>#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 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 local.get $2 - call $~lib/array/Array#lastIndexOf + 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.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (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 + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 local.get $2 + call $~lib/array/Array<~lib/string/String>#includes@varargs + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (func $export:~lib/array/Array<~lib/string/String>#indexOf@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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 local.get $1 local.get $2 - call $~lib/array/Array#slice + call $~lib/array/Array<~lib/string/String>#indexOf@varargs + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/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 + (func $export:~lib/array/Array<~lib/string/String>#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $2 - call $~lib/array/Array#splice + call $~lib/array/Array<~lib/string/String>#lastIndexOf@varargs + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + (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 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 255 - i32.and + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 255 - i32.and - i32.gt_u + i32.store offset=4 local.get $0 - i32.const 255 - i32.and local.get $1 - i32.const 255 - i32.and - i32.lt_u - i32.sub + call $~lib/array/Array<~lib/string/String>#push + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/array/Array#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.const 4 - i32.le_u - else - i32.const 0 - end - drop - i32.const 13152 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 - local.set $1 - end + global.get $~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 - call $~lib/array/Array#sort - local.set $3 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<~lib/string/String>#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 ) - (func $~lib/array/Array#join@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 7552 - local.set $1 - end + (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 local.get $1 - call $~lib/array/Array#join + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#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 $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 + (func $export:~lib/array/Array<~lib/string/String>#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<~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 - 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 + (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.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 - local.get $2 - local.get $3 - call $~lib/array/Array<~lib/string/String>#fill + call $~lib/array/Array<~lib/string/String>#forEach + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 + (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 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $~lib/array/Array<~lib/string/String>#shift + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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 - 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 + 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 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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 + i32.add + global.set $~lib/memory/__stack_pointer 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 + (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>#splice + call $~lib/array/Array<~lib/string/String>#slice@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 $~lib/util/sort/COMPARATOR<~lib/string/String>~anonymous|1 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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) + global.get $~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/rt/pure/__retain - local.set $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + local.get $2 + call $~lib/array/Array<~lib/string/String>#splice@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<~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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + call $~lib/array/Array<~lib/string/String>#reverse + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end + ) + (func $export:~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/string/String#get:length - local.set $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.or - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.eqz - if - i32.const -1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end + i32.store offset=4 local.get $0 - i32.const 0 local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl + call $~lib/array/Array<~lib/string/String>#sort@varargs local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - if (result i32) - local.get $2 - else - local.get $3 - local.get $4 - i32.sub - end - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 ) - (func $~lib/array/Array<~lib/string/String>#sort@varargs (param $0 i32) (param $1 i32) (result i32) + (func $export:~lib/array/Array<~lib/string/String>#join@varargs (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 13184 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.1 - end - local.tee $2 - local.set $1 - end + global.get $~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>#sort - local.set $3 + call $~lib/array/Array<~lib/string/String>#join@varargs + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 ) - (func $~lib/array/Array<~lib/string/String>#join@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 7552 - local.set $1 - end + (func $export:~lib/array/Array<~lib/string/String>#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<~lib/string/String>#flat + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array<~lib/string/String>#join ) - (func $~setArgumentsLength (param $0 i32) + (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 + global.get $~lib/memory/__stack_pointer local.get $0 - global.set $~argumentsLength + i32.store + local.get $0 + call $~lib/array/Array<~lib/string/String>#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/std/arraybuffer.json b/tests/compiler/std/arraybuffer.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/arraybuffer.json +++ b/tests/compiler/std/arraybuffer.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index fc273c6b09..483f270eb7 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1,35 +1,259 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) + (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))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (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))) (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&\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\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 1212) "<\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 1276) "<\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 1340) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") - (data (i32.const 1404) "\1c\00\00\00\01") - (data (i32.const 1420) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 1436) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (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/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (data (i32.const 1612) "\1c") + (data (i32.const 1628) "\08\00\00\00\01\00\00\00\02") + (data (i32.const 1644) "<") + (data (i32.const 1656) "\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1712) "\10\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1740) "\02\t\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") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__stack_pointer (mut i32) (i32.const 18228)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1500 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 18228 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 1232 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1712 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 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 + 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) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -45,8 +269,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 272 + i32.const 1504 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -65,8 +289,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 274 + i32.const 1504 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -108,8 +332,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 287 + i32.const 1504 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -200,8 +424,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 200 + i32.const 1504 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -214,8 +438,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 202 + i32.const 1504 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -287,8 +511,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 223 + i32.const 1504 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -342,23 +566,23 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 238 + i32.const 1504 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1296 - i32.const 239 + i32.const 1504 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -405,8 +629,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 255 + i32.const 1504 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -475,8 +699,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 380 + i32.const 1504 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -503,8 +727,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 387 + i32.const 1504 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -531,8 +755,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 400 + i32.const 1504 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -579,80 +803,405 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + (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 - 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 + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 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 1296 - 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 + i32.const 18240 + i32.const 0 + i32.store + i32.const 19808 + 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 18240 + 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 18240 + 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 18240 + i32.const 19812 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18240 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18228 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18228 + 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 $1 + i32.const 18228 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 local.get $1 i32.ctz local.get $2 @@ -686,8 +1235,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 346 + i32.const 1504 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -717,8 +1266,8 @@ i32.ge_u if i32.const 1168 - i32.const 1296 - i32.const 461 + i32.const 1504 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -808,8 +1357,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 498 + i32.const 1504 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -823,8 +1372,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 500 + i32.const 1504 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -842,8 +1391,8 @@ i32.and if i32.const 0 - i32.const 1296 - i32.const 360 + i32.const 1504 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -907,140 +1456,21 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1168 - i32.const 1232 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $3 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $3 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1504 + 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.store - i32.const 3072 - i32.const 0 - i32.store - loop $for-loop|0 - local.get $2 - i32.const 23 - i32.lt_u - if - local.get $2 - i32.const 2 - i32.shl - i32.const 1504 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 16 - i32.lt_u - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1504 - i32.add - i32.const 0 - i32.store offset=96 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - i32.const 1504 - i32.const 3076 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1504 - global.set $~lib/rt/tlsf/ROOT - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.add - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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.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 @@ -1184,54 +1614,101 @@ end end ) - (func $~lib/rt/pure/__retain (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.get $0 - i32.const 1500 - i32.gt_u + i32.const 1073741804 + i32.ge_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 1232 - 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 1232 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.const 1168 + i32.const 1232 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1406,164 +1883,271 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $3 + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) 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 + i32.eqz + if + return end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 - i32.const 0 - local.get $2 + local.get $0 + i32.eqz + if i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + i32.const 1232 + i32.const 290 + 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 $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.eqz + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq if - i32.const 12 - i32.const 2 - 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 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=4 + local.get $1 + i32.store local.get $0 - i32.const 0 - i32.store offset=8 - i32.const 1073741820 local.get $1 - i32.shr_u - i32.const 1 - i32.lt_u + call $~lib/rt/itcms/__link + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + block $invalid + block $~lib/array/Array + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner0 $~lib/array/Array $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + local.tee $0 if - i32.const 1056 - i32.const 1104 - i32.const 18 - i32.const 57 + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:std/arraybuffer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1844 + i32.lt_s + if + i32.const 18256 + i32.const 18304 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 local.get $1 - i32.shl - local.tee $3 i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - local.get $3 - call $~lib/memory/memory.fill - local.get $2 - local.tee $1 - local.get $0 - i32.load - local.tee $4 - i32.ne - if + i32.lt_s + if (result i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select end - local.get $0 local.get $1 - i32.store - local.get $0 + i32.sub + local.tee $2 + i32.const 0 local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 i32.store offset=4 + local.get $2 local.get $0 + local.get $1 + i32.add local.get $3 - i32.store offset=8 - local.get $0 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) (func $start:std/arraybuffer (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 8 call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 i32.const 20 i32.sub i32.load offset=16 @@ -1571,17 +2155,26 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 4 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -1589,30 +2182,37 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 local.get $1 - local.get $2 i32.eq if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -1620,19 +2220,26 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 13 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const -1 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -1640,19 +2247,26 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 17 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1 i32.const 3 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -1660,19 +2274,26 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 1 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.get $1 - call $~lib/rt/pure/__release local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -1680,20 +2301,26 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 25 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const -3 i32.const -1 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $0 + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release - local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -1701,19 +2328,25 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 29 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const -4 i32.const 42 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 20 i32.sub @@ -1722,98 +2355,106 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 42 i32.const 1073741820 call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 20 i32.sub i32.load offset=16 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 + local.get $0 i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 38 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1360 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1360 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/rt/pure/__release - i32.const 0 - if - i32.const 0 - i32.const 1360 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 12 i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $5 - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new - local.set $0 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_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/rt/pure/__new + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 1424 + i32.const 1632 i32.const 8 call $~lib/memory/memory.copy - local.get $0 local.get $1 - call $~lib/rt/pure/__retain + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $1 i32.store local.get $0 local.get $1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $1 i32.store offset=4 local.get $0 i32.const 8 @@ -1821,40 +2462,110 @@ local.get $0 i32.const 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 local.get $0 - call $~lib/rt/pure/__retain + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 12 i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 2 call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $7 - local.get $5 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.load local.tee $0 - i32.const 20 + i32.store offset=16 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.load offset=16 - local.tee $1 - local.set $8 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $1of2 $1of2 $2of2 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + i32.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 12 i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - local.get $3 + local.get $2 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $2 i32.const 0 i32.store offset=4 - local.get $3 + local.get $2 i32.const 0 i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $1 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 20 i32.sub i32.load offset=16 @@ -1865,164 +2576,139 @@ i32.or if i32.const 1056 - i32.const 1456 + i32.const 1664 i32.const 25 i32.const 7 call $~lib/builtins/abort unreachable end + local.get $2 local.get $0 - local.set $1 - local.get $0 - local.get $3 - i32.load - local.tee $9 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $3 - local.get $1 - i32.store - local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $2 local.get $0 i32.store offset=4 - local.get $3 - local.get $8 - i32.store offset=8 - local.get $0 - call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (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 1232 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1 - i32.eq + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + i32.const 18228 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner2 - block $folding-inner1 - block $invalid - block $~lib/array/Array - local.get $0 - i32.const 12 - i32.add - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner1 $~lib/array/Array $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 - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - 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 - local.get $0 - i32.load offset=20 - local.tee $1 + loop $while-continue|0 + global.get $~lib/rt/itcms/state if - local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/step + drop + br $while-continue|0 end end - local.get $2 - i32.const -2147483648 - i32.and + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1232 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 1232 - 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 + 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 ) - (func $~start - call $start:std/arraybuffer - ) - (func $~lib/rt/pure/__visit (param $0 i32) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.const 1500 + 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 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 1073741820 + local.get $1 + i32.shr_u + i32.const 1 i32.lt_u if - return + i32.const 1056 + i32.const 1104 + i32.const 18 + i32.const 57 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1 + local.get $1 + i32.shl + local.tee $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement ) ) diff --git a/tests/compiler/std/arraybuffer.ts b/tests/compiler/std/arraybuffer.ts index 64722a3503..57bdb29dc4 100644 --- a/tests/compiler/std/arraybuffer.ts +++ b/tests/compiler/std/arraybuffer.ts @@ -50,3 +50,6 @@ assert(ArrayBuffer.isView(new Int32Array(1))); assert(ArrayBuffer.isView(new DataView(arr8.buffer))); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index d5ead50251..fd50ee0df6 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -1,41 +1,367 @@ (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 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (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))) (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&\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 124) "<\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 188) "<\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 252) "<\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 316) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 380) "\1c\00\00\00\01\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 412) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (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&\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 124) "<\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 188) "<\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 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\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\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 380) ",\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 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) "<\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 524) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00s\00t\00d\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (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\02\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 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 688) "\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\02\t\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\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 476)) + (global $~lib/rt/__rtti_base i32 (i32.const 688)) + (global $~lib/memory/__data_end i32 (i32.const 820)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17204)) + (global $~lib/memory/__heap_base i32 (i32.const 17204)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/memory/__heap_base + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 208 + 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 208 + 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 336 + i32.const 400 + 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.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + 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) @@ -59,8 +385,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 272 + i32.const 480 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -86,8 +412,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 274 + i32.const 480 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -140,8 +466,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 287 + i32.const 480 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -156,13 +482,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -248,7 +574,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -272,8 +598,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 200 + i32.const 480 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -289,8 +615,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 202 + i32.const 480 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -343,7 +669,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -384,8 +710,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 223 + i32.const 480 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -418,7 +744,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -427,7 +753,7 @@ 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 @@ -449,8 +775,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 238 + i32.const 480 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -467,8 +793,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 239 + i32.const 480 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -526,8 +852,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 255 + i32.const 480 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,15 +877,15 @@ 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 @@ -587,7 +913,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -631,8 +957,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 380 + i32.const 480 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -674,8 +1000,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 387 + i32.const 480 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -707,8 +1033,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 400 + i32.const 480 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -745,13 +1071,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 @@ -762,7 +1088,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 @@ -789,6 +1115,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 @@ -831,7 +1159,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 @@ -919,6 +1247,334 @@ 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 480 + i32.const 565 + 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 + 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 + 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 208 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -945,8 +1601,8 @@ i32.ge_u if i32.const 144 - i32.const 272 - i32.const 461 + i32.const 480 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1029,8 +1685,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 333 + i32.const 480 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1094,8 +1750,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 346 + i32.const 480 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1245,8 +1901,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 360 + i32.const 480 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1271,7 +1927,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 @@ -1284,7 +1940,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 @@ -1295,7 +1951,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 @@ -1325,7 +1981,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) @@ -1354,8 +2010,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 498 + i32.const 480 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1374,8 +2030,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 500 + i32.const 480 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1403,44 +2059,15 @@ 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 144 - i32.const 208 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 + local.get $1 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) @@ -1655,96 +2282,56 @@ 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 208 - 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 + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 144 i32.const 208 - i32.const 112 - i32.const 14 + i32.const 256 + i32.const 31 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub local.set $2 local.get $2 - i32.const 0 local.get $1 - call $~lib/memory/memory.fill + 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 - call $~lib/rt/pure/__retain + i32.const 20 + i32.add local.set $3 + local.get $3 + i32.const 0 local.get $0 - call $~lib/rt/pure/__release + call $~lib/memory/memory.fill local.get $3 ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) @@ -3006,94 +3593,7 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - 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 - end - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - 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 - 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 $6 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $0 - local.get $1 - i32.add - local.get $6 - call $~lib/memory/memory.copy - local.get $7 - call $~lib/rt/pure/__retain - ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 drop local.get $0 @@ -3101,10 +3601,6 @@ i32.eq if i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return end i32.const 0 @@ -3132,10 +3628,6 @@ i32.const 0 drop i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/arraybuffer/ArrayBuffer.isView (param $0 i32) (result i32) i32.const 0 @@ -3167,10 +3659,6 @@ i32.const 0 ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 drop local.get $0 @@ -3178,10 +3666,6 @@ i32.eq if i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return end i32.const 0 @@ -3189,17 +3673,9 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 drop local.get $0 @@ -3207,10 +3683,6 @@ i32.eq if i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return end i32.const 0 @@ -3226,17 +3698,9 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView|null> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 1 drop local.get $0 @@ -3244,10 +3708,6 @@ i32.eq if i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return end i32.const 0 @@ -3275,106 +3735,100 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result 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) - local.get $0 + local.get $1 i32.eqz if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + return end + i32.const 1 + drop 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 $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 + i32.const 0 + i32.const 208 + i32.const 290 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/pure/__new + i32.const 20 + i32.sub local.set $3 local.get $3 - i32.const 0 - local.get $1 - 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 + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $6 - call $~lib/rt/pure/__release + 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 - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 + ) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=8 + i32.store local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/arraybuffer/ArrayBufferView#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 + 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/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/pure/__new + call $~lib/rt/itcms/__new local.set $3 local.get $2 if @@ -3385,43 +3839,7 @@ end local.get $3 ) - (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) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.set $4 - local.get $0 - local.get $1 - i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 - local.get $0 - i32.store offset=12 - local.get $4 - ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 0 drop i32.const 0 @@ -3449,16 +3867,8 @@ i32.const 0 drop i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 0 drop i32.const 0 @@ -3466,34 +3876,9 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 0 drop i32.const 0 @@ -3509,117 +3894,28 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) - (func $~lib/dataview/DataView#constructor (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) + (func $~lib/dataview/DataView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 12 - i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 + local.get $1 i32.store local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - i32.const 1073741820 - i32.gt_u - local.get $2 - local.get $3 - i32.add local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.gt_u - i32.or - if - i32.const 32 - i32.const 432 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/dataview/DataView#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - local.tee $4 - local.get $1 - 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 $1 - local.get $2 - i32.add - local.set $7 - local.get $0 - local.get $7 i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 ) - (func $~lib/dataview/DataView#constructor@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 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - end + (func $~lib/dataview/DataView#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - local.get $3 - call $~lib/dataview/DataView#constructor + i32.store offset=8 ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 i32.const 0 drop i32.const 0 @@ -3647,263 +3943,933 @@ i32.const 1 drop i32.const 1 - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 return ) - (func $start:std/arraybuffer + (func $~lib/rt/itcms/__collect (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) i32.const 0 - i32.const 8 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 8 - i32.eq - i32.eqz + 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.const 336 - i32.const 4 - 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 - local.get $0 + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold i32.const 0 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.ne - i32.eqz - if + drop + i32.const 0 + if (result i32) + i32.const 1 + else i32.const 0 - i32.const 336 - i32.const 9 - i32.const 3 - call $~lib/builtins/abort - unreachable end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 336 local.get $0 - i32.const 1 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 7 - i32.eq - i32.eqz + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 if - i32.const 0 - i32.const 336 - i32.const 13 - 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.const -1 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $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/arraybuffer/ArrayBuffer#get:byteLength - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/array/Array#__visit + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 - i32.const 3 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 1 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 6 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const -3 - i32.const -1 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 2 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 29 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const -4 - i32.const 42 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 42 - i32.const 1073741820 - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $2 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - local.set $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/ArrayBuffer#get:byteLength - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 40 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer.isView - i32.eqz - i32.eqz + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - i32.const 1 - call $~lib/arraybuffer/ArrayBuffer.isView - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/dataview/DataView + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/array/Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + 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/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/dataview/DataView $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) + (func $~start + call $start:std/arraybuffer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17232 + i32.const 17280 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + 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 + end + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + 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 + 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 $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + local.get $7 + local.get $0 + local.get $1 + i32.add + local.get $6 + call $~lib/memory/memory.copy + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/typedarray/Uint8Array#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 + i64.const 0 + i64.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.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#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 + i64.const 0 + i64.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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:buffer + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:dataStart + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:byteLength + local.get $3 + i32.const 1073741820 + i32.gt_u + local.get $2 + local.get $3 + i32.add + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.gt_u + i32.or + if + i32.const 32 + i32.const 640 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView#set:buffer + local.get $1 + local.get $2 + i32.add + local.set $4 + local.get $0 + local.get $4 + call $~lib/dataview/DataView#set:dataStart + local.get $0 + local.get $3 + call $~lib/dataview/DataView#set:byteLength + local.get $0 + 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/dataview/DataView#constructor@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 + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/dataview/DataView#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/arraybuffer + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 13 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -1 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 3 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 25 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -3 + i32.const -1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 29 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const -4 + i32.const 42 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 42 + i32.const 1073741820 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 38 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array|null> + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 40 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer.isView + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $~lib/arraybuffer/ArrayBuffer.isView + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 i32.const 42 i32.const 3 call $~lib/builtins/abort @@ -3915,7 +4881,7 @@ i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 43 i32.const 3 call $~lib/builtins/abort @@ -3927,7 +4893,7 @@ i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 44 i32.const 3 call $~lib/builtins/abort @@ -3939,40 +4905,50 @@ i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 1 call $~lib/typedarray/Uint8Array#constructor - local.set $2 + local.tee $2 + i32.store offset=12 i32.const 2 i32.const 2 i32.const 3 - i32.const 400 + i32.const 608 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/array/Array> i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array> i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 49 i32.const 3 call $~lib/builtins/abort @@ -3981,12 +4957,16 @@ i32.const 0 i32.const 1 call $~lib/typedarray/Int32Array#constructor - local.tee $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Int32Array> i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 50 i32.const 3 call $~lib/builtins/abort @@ -3995,372 +4975,202 @@ i32.const 0 local.get $2 i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 i32.const 0 i32.const 1 global.set $~argumentsLength i32.const 0 call $~lib/dataview/DataView#constructor@varargs - local.tee $5 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/arraybuffer/ArrayBuffer.isView<~lib/dataview/DataView> i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 51 i32.const 3 call $~lib/builtins/abort unreachable end - 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 $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (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/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) - 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 208 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:std/arraybuffer - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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 - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.set $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + (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 32 + i32.const 80 + i32.const 49 + i32.const 43 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 local.get $1 - call $~lib/array/Array#__visit + call $~lib/memory/memory.fill + 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/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + (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 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $0 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) - local.get $0 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 32 + i32.const 80 + i32.const 18 + i32.const 57 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $2 + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + call $~lib/arraybuffer/ArrayBufferView#set:byteLength local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit + 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/Float64Array~visit (param $0 i32) (param $1 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 + 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/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) - (local $2 i32) + 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.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 $~lib/dataview/DataView - block $~lib/typedarray/Float64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Int64Array - block $~lib/typedarray/Uint32Array - block $~lib/typedarray/Int32Array - block $~lib/typedarray/Uint16Array - block $~lib/typedarray/Int16Array - block $~lib/typedarray/Uint8ClampedArray - block $~lib/typedarray/Uint8Array - block $~lib/typedarray/Int8Array - block $~lib/array/Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - 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/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/dataview/DataView $invalid - end - 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/typedarray/Int8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/dataview/DataView~visit - return - end - unreachable + 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 ) ) diff --git a/tests/compiler/std/dataview.json b/tests/compiler/std/dataview.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/dataview.json +++ b/tests/compiler/std/dataview.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 5d6e64f2f2..5f0fdb6ef6 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1,42 +1,266 @@ (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 (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_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (type $i32_i32_i32_=>_f32 (func (param i32 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))) (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&\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\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 1212) "<\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 1276) "<\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 1340) "<\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 1404) "<\00\00\00\01\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 1468) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") - (data (i32.const 1532) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (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\00~\00l\00i\00b\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/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1676) "<") + (data (i32.const 1688) "\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s") + (data (i32.const 1744) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1772) "A\00\00\00\02") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__stack_pointer (mut i32) (i32.const 18172)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1596 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 18172 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 1232 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1748 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -52,8 +276,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 272 + i32.const 1504 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -72,8 +296,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 274 + i32.const 1504 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -115,8 +339,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 287 + i32.const 1504 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -207,8 +431,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 200 + i32.const 1504 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -221,8 +445,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 202 + i32.const 1504 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -294,8 +518,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 223 + i32.const 1504 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -349,23 +573,23 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 238 + i32.const 1504 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1296 - i32.const 239 + i32.const 1504 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -412,8 +636,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 255 + i32.const 1504 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -482,8 +706,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 380 + i32.const 1504 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -510,8 +734,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 387 + i32.const 1504 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -538,8 +762,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 400 + i32.const 1504 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -586,88 +810,413 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + (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 - 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 + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 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 1296 - 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 + i32.const 18176 + i32.const 0 + i32.store + i32.const 19744 + i32.const 0 + i32.store + loop $for-loop|0 local.get $1 - i32.ctz - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 18176 + 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 18176 + 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 18176 + i32.const 19748 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18176 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18172 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18172 + 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 $1 + i32.const 18172 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1504 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl i32.add i32.load offset=96 else @@ -693,8 +1242,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 346 + i32.const 1504 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -724,8 +1273,8 @@ i32.ge_u if i32.const 1168 - i32.const 1296 - i32.const 461 + i32.const 1504 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -815,8 +1364,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 498 + i32.const 1504 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -830,8 +1379,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 500 + i32.const 1504 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -849,8 +1398,8 @@ i32.and if i32.const 0 - i32.const 1296 - i32.const 360 + i32.const 1504 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -914,173 +1463,318 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1168 - i32.const 1232 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $3 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $3 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1600 + 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 - i32.const 3168 + 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 - loop $for-loop|0 - local.get $2 - i32.const 23 - i32.lt_u + 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 $2 - i32.const 2 - i32.shl - i32.const 1600 + 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 - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 16 - i32.lt_u - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1600 - i32.add - i32.const 0 - i32.store offset=96 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end + local.set $0 + br $while-continue|0 + end + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1168 + i32.const 1232 + i32.const 256 + 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-continue|0 local.get $2 - i32.const 1 - i32.add + call $~lib/rt/itcms/step + i32.sub local.set $2 - br $for-loop|0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - i32.const 1600 - i32.const 3172 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1600 - global.set $~lib/rt/tlsf/ROOT end - global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.const 1596 - i32.gt_u + local.get $1 + i32.store + local.get $1 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 + i32.eqz if i32.const 0 i32.const 1232 - i32.const 109 - i32.const 3 + i32.const 290 + i32.const 14 call $~lib/builtins/abort unreachable end + global.get $~lib/rt/itcms/white local.get $1 - local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and + i32.eq if - i32.const 0 - i32.const 1232 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end end - local.get $0 ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -1089,7 +1783,7 @@ i32.ge_u if i32.const 1360 - i32.const 1424 + i32.const 1568 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -1102,74 +1796,6 @@ local.get $2 i32.store8 ) - (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $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 $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.get $1 - local.get $2 - i32.add - i32.lt_u - local.get $2 - i32.const 1073741820 - i32.gt_u - i32.or - if - i32.const 1056 - i32.const 1488 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.set $3 - local.get $0 - local.get $4 - i32.load - local.tee $5 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $4 - local.get $3 - i32.store - local.get $4 - local.get $0 - local.get $1 - i32.add - i32.store offset=4 - local.get $4 - local.get $2 - i32.store offset=8 - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - ) (func $~lib/polyfills/bswap (param $0 i32) (result i32) local.get $0 i32.const -16711936 @@ -1196,7 +1822,7 @@ i32.or if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -1252,7 +1878,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -1278,7 +1904,7 @@ i32.ge_u if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -1316,7 +1942,7 @@ i32.or if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -1349,7 +1975,7 @@ i32.or if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -1377,7 +2003,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -1402,7 +2028,7 @@ i32.ge_u if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -1438,7 +2064,7 @@ i32.or if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -1471,7 +2097,7 @@ i32.or if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -1499,7 +2125,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -1524,7 +2150,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -1552,7 +2178,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -1580,7 +2206,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -1604,7 +2230,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -1628,7 +2254,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -1652,7 +2278,7 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -1676,168 +2302,344 @@ i32.lt_s if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 142 i32.const 7 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - local.get $2 - if (result i32) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i32.store + local.get $0 + i32.load offset=4 + local.get $2 + if (result i32) + local.get $1 + else + local.get $1 + call $~lib/polyfills/bswap + end + i32.store + ) + (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) + local.get $0 + i32.load offset=8 + i32.const 8 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 174 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $2 + if (result i64) + local.get $1 + else + local.get $1 + call $~lib/polyfills/bswap + end + i64.store + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/typedarray/Uint8Array + 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/typedarray/Uint8Array $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + ) + (func $~start + call $start:std/dataview + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1788 + i32.lt_s + if + i32.const 18192 + i32.const 18240 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) - (func $~lib/dataview/DataView#setUint64 (param $0 i32) (param $1 i64) (param $2 i32) - local.get $0 - i32.load offset=8 + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.lt_s + 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 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.get $1 + local.get $2 + i32.add + i32.lt_u + local.get $2 + i32.const 1073741820 + i32.gt_u + i32.or if - i32.const 1360 - i32.const 1488 - i32.const 174 + i32.const 1056 + i32.const 1632 + i32.const 25 i32.const 7 call $~lib/builtins/abort unreachable end + local.get $3 local.get $0 - i32.load offset=4 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $3 + local.get $0 + local.get $1 + i32.add + i32.store offset=4 + local.get $3 local.get $2 - if (result i64) - local.get $1 - else - local.get $1 - call $~lib/polyfills/bswap - end - i64.store + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:std/dataview (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 12 i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store end - local.get $0 + local.get $1 i32.const 0 - i32.store - local.get $0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $1 i32.const 0 i32.store offset=4 - local.get $0 + local.get $1 i32.const 0 i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 0 - i32.store8 - local.get $2 - local.tee $1 - i32.const 4 - i32.add - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 offset=1 - local.get $2 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=6 - local.get $2 - i32.const 0 - i32.store8 offset=5 - local.get $2 - i32.const 0 - i32.store8 offset=3 - local.get $2 - i32.const 0 - i32.store8 offset=4 - local.get $2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 local.get $0 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end + i32.const 8 + call $~lib/memory/memory.fill + local.get $1 local.get $0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $1 - i32.store local.get $0 - local.get $2 i32.store offset=4 - local.get $0 + local.get $1 i32.const 8 i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 i32.const 246 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 i32.const 224 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 i32.const 88 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 3 i32.const 159 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.get $1 i32.load offset=4 - local.get $0 + local.get $1 i32.load i32.sub - local.get $0 + local.get $1 i32.load offset=8 call $~lib/dataview/DataView#constructor - local.tee $2 + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1845,13 +2647,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 15 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1859,13 +2664,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 16 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1873,13 +2681,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 17 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1887,13 +2698,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -1901,13 +2715,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 19 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1915,13 +2732,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1929,13 +2749,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 22 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1943,13 +2766,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 23 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1957,13 +2783,16 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 24 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -1971,143 +2800,176 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 25 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const 7936550095674706383278551e126 f64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const -411777475818852546741639e241 f64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 28 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 30 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 31 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 32 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 34 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2117,13 +2979,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2133,13 +2998,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 40 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2149,13 +3017,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 41 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2165,13 +3036,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 42 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2181,13 +3055,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 43 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2197,13 +3074,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 44 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -2213,13 +3093,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2229,13 +3112,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2245,13 +3131,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2261,13 +3150,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2277,13 +3169,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 50 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2293,13 +3188,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 51 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2309,13 +3207,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -2325,13 +3226,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 53 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2339,13 +3243,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2353,13 +3260,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2367,13 +3277,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 57 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2381,13 +3294,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -2395,13 +3311,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 59 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2409,13 +3328,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 61 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2423,13 +3345,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 62 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2437,13 +3362,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2451,13 +3379,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -2465,143 +3396,176 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 65 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const 6864441868736323830 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const -657428103485373601 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 70 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 71 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 74 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 75 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 76 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2611,13 +3575,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2627,13 +3594,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 80 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2643,13 +3613,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 81 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2659,13 +3632,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2675,13 +3651,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2691,13 +3670,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -2707,13 +3689,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2723,13 +3708,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 87 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2739,13 +3727,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 88 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2755,13 +3746,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2771,13 +3765,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 90 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2787,13 +3784,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2803,13 +3803,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 92 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -2819,13 +3822,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 93 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2833,13 +3839,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 95 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2847,13 +3856,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 96 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2861,13 +3873,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2875,13 +3890,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 98 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -2889,13 +3907,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 99 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2903,13 +3924,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2917,13 +3941,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 102 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2931,13 +3958,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2945,13 +3975,16 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -2959,43 +3992,55 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 6864441868736323830 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -657428103485373601 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 108 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -3003,17 +4048,23 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -3021,79 +4072,103 @@ f32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getFloat64 f64.const -1094252199637739024055454e124 f64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getFloat64 f64.const 6.022586634778589e-103 f64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=8 i32.eqz if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 109 i32.const 50 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 i32.const 108 i32.store8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 123 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3103,17 +4178,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 126 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3123,17 +4204,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3141,17 +4228,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 132 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3159,79 +4252,103 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 135 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getInt64 i64.const -3290739641816099749 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 138 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getInt64 i64.const 8178932412950708047 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=8 i32.eqz if i32.const 1360 - i32.const 1488 + i32.const 1632 i32.const 128 i32.const 50 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 i32.load offset=4 i32.const 238 i32.store8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 144 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3241,17 +4358,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3261,17 +4384,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3279,17 +4408,23 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -3297,60 +4432,109 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 156 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 call $~lib/dataview/DataView#getUint64 i64.const 2334704782995986958 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 call $~lib/dataview/DataView#getUint64 i64.const -7123186897289856329 i64.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load local.tee $1 - i32.const 20 + i32.store offset=8 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.load offset=16 - local.set $3 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $1of2 $1of2 $2of2 $outOfRange + end + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $0 + end local.get $1 i32.const 0 - local.get $3 + local.get $0 call $~lib/dataview/DataView#constructor local.set $1 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=4 local.get $1 @@ -3358,7 +4542,7 @@ i32.sub if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -3370,123 +4554,50 @@ i32.ne if i32.const 0 - i32.const 1552 + i32.const 1696 i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 1232 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq + i32.const 18172 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner1 - block $invalid - block $~lib/typedarray/Uint8Array - local.get $0 - i32.const 20 - i32.add - local.tee $1 - i32.const 8 - i32.sub - i32.load - br_table $__inlined_func$~lib/rt/__visit_members $__inlined_func$~lib/rt/__visit_members $folding-inner1 $~lib/typedarray/Uint8Array $folding-inner1 $invalid - end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1232 - 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 1232 - 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 - call $start:std/dataview - ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) - local.get $0 - i32.load - local.tee $0 - if - local.get $0 - i32.const 1596 - i32.ge_u + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/dataview.ts b/tests/compiler/std/dataview.ts index 309ab77d17..eee61291ba 100644 --- a/tests/compiler/std/dataview.ts +++ b/tests/compiler/std/dataview.ts @@ -165,3 +165,6 @@ assert(view.byteOffset == 0); assert(view.byteLength == 8); } + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 155a81e020..b072a6eadd 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -1,50 +1,375 @@ (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 (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 $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) (type $i32_i32_i64_i32_=>_none (func (param i32 i32 i64 i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) (type $i32_i32_f32_i32_=>_none (func (param i32 i32 f32 i32))) (type $i32_i32_f64_i32_=>_none (func (param i32 i32 f64 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_f32 (func (param i32 i32 i32) (result f32))) (type $i32_i32_i32_=>_f64 (func (param i32 i32 i32) (result f64))) (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&\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 124) "<\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 188) "<\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 252) "<\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 316) "<\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 380) "<\00\00\00\01\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 444) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 508) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (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&\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 124) "<\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 188) "<\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 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\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\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 380) ",\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 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) "<\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 524) "<\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 588) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00~\00l\00i\00b\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 652) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1e\00\00\00s\00t\00d\00/\00d\00a\00t\00a\00v\00i\00e\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 720) "\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\00A\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 572)) + (global $~lib/rt/__rtti_base i32 (i32.const 720)) + (global $~lib/memory/__data_end i32 (i32.const 764)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17148)) + (global $~lib/memory/__heap_base i32 (i32.const 17148)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/memory/__heap_base + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 208 + 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 208 + 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 336 + i32.const 400 + 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.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + 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) @@ -67,8 +392,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 272 + i32.const 480 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -94,8 +419,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 274 + i32.const 480 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -148,8 +473,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 287 + i32.const 480 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -164,13 +489,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -256,7 +581,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -280,8 +605,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 200 + i32.const 480 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -297,8 +622,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 202 + i32.const 480 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -351,7 +676,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -392,8 +717,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 223 + i32.const 480 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -426,7 +751,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -435,7 +760,7 @@ 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 @@ -457,8 +782,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 238 + i32.const 480 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -475,8 +800,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 239 + i32.const 480 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -534,8 +859,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 255 + i32.const 480 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -559,15 +884,15 @@ 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 @@ -595,7 +920,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -639,8 +964,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 380 + i32.const 480 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -682,8 +1007,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 387 + i32.const 480 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -715,8 +1040,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 400 + i32.const 480 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -753,13 +1078,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 @@ -770,7 +1095,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 @@ -797,6 +1122,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 @@ -839,7 +1166,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 @@ -927,6 +1254,334 @@ 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 480 + i32.const 565 + 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 + 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 + 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 208 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -953,8 +1608,8 @@ i32.ge_u if i32.const 144 - i32.const 272 - i32.const 461 + i32.const 480 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1037,8 +1692,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 333 + i32.const 480 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1102,8 +1757,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 346 + i32.const 480 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1253,8 +1908,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 360 + i32.const 480 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1279,7 +1934,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 @@ -1292,7 +1947,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 @@ -1303,7 +1958,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 @@ -1333,7 +1988,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) @@ -1362,8 +2017,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 498 + i32.const 480 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1382,8 +2037,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 500 + i32.const 480 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1411,44 +2066,15 @@ 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 144 - i32.const 208 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 + local.get $1 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) @@ -1663,157 +2289,144 @@ end end ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 144 i32.const 208 - i32.const 109 - i32.const 3 + i32.const 256 + 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 - i32.const 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 - i32.store offset=4 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 i32.const 0 - drop + 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.load - i32.const 1 - i32.and - i32.eqz i32.eqz if i32.const 0 i32.const 208 - i32.const 112 + i32.const 290 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 + 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 - call $~lib/rt/pure/increment + 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 - local.get $0 ) - (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) + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 + local.get $1 i32.store 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 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end local.get $1 - local.get $2 - i32.shl - local.tee $1 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 i32.const 0 - local.get $1 - 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 + 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=8 - local.get $0 + i32.store offset=4 ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 + i32.store offset=8 ) (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 @@ -1822,7 +2435,7 @@ i32.ge_u if i32.const 336 - i32.const 400 + i32.const 544 i32.const 163 i32.const 45 call $~lib/builtins/abort @@ -1841,80 +2454,24 @@ i32.sub i32.load offset=16 ) - (func $~lib/dataview/DataView#constructor (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.eqz - if - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/dataview/DataView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - i32.const 1073741820 - i32.gt_u - local.get $2 - local.get $3 - i32.add local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.gt_u - i32.or - if - i32.const 32 - i32.const 464 - i32.const 25 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/dataview/DataView#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - local.tee $4 - local.get $1 - 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 $1 - local.get $2 - i32.add - local.set $7 - local.get $0 - local.get $7 i32.store offset=4 + ) + (func $~lib/dataview/DataView#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - local.get $3 - i32.store offset=8 local.get $1 - call $~lib/rt/pure/__release - local.get $0 + i32.store offset=8 ) (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) local.get $0 @@ -1960,7 +2517,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 35 i32.const 7 call $~lib/builtins/abort @@ -2049,7 +2606,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 44 i32.const 7 call $~lib/builtins/abort @@ -2079,7 +2636,7 @@ i32.ge_u if i32.const 336 - i32.const 464 + i32.const 608 i32.const 51 i32.const 50 call $~lib/builtins/abort @@ -2131,7 +2688,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 58 i32.const 7 call $~lib/builtins/abort @@ -2189,7 +2746,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 66 i32.const 7 call $~lib/builtins/abort @@ -2276,7 +2833,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 151 i32.const 7 call $~lib/builtins/abort @@ -2303,7 +2860,7 @@ i32.ge_u if i32.const 336 - i32.const 464 + i32.const 608 i32.const 72 i32.const 50 call $~lib/builtins/abort @@ -2353,7 +2910,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 79 i32.const 7 call $~lib/builtins/abort @@ -2387,7 +2944,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 87 i32.const 7 call $~lib/builtins/abort @@ -2421,7 +2978,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 159 i32.const 7 call $~lib/builtins/abort @@ -2454,7 +3011,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 95 i32.const 7 call $~lib/builtins/abort @@ -2492,7 +3049,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 103 i32.const 7 call $~lib/builtins/abort @@ -2524,7 +3081,7 @@ i32.ge_u if i32.const 336 - i32.const 464 + i32.const 608 i32.const 109 i32.const 50 call $~lib/builtins/abort @@ -2550,7 +3107,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 116 i32.const 7 call $~lib/builtins/abort @@ -2582,7 +3139,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 123 i32.const 7 call $~lib/builtins/abort @@ -2614,7 +3171,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 167 i32.const 7 call $~lib/builtins/abort @@ -2640,7 +3197,7 @@ i32.ge_u if i32.const 336 - i32.const 464 + i32.const 608 i32.const 128 i32.const 50 call $~lib/builtins/abort @@ -2666,7 +3223,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 135 i32.const 7 call $~lib/builtins/abort @@ -2698,7 +3255,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 142 i32.const 7 call $~lib/builtins/abort @@ -2730,7 +3287,7 @@ i32.or if i32.const 336 - i32.const 464 + i32.const 608 i32.const 174 i32.const 7 call $~lib/builtins/abort @@ -2749,31 +3306,6 @@ end i64.store ) - (func $~lib/dataview/DataView#constructor@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 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $3 - end - local.get $0 - local.get $1 - local.get $2 - local.get $3 - call $~lib/dataview/DataView#constructor - ) (func $~lib/dataview/DataView#get:byteOffset (param $0 i32) (result i32) local.get $0 i32.load offset=4 @@ -2781,56 +3313,438 @@ i32.load i32.sub ) - (func $start:std/dataview + (func $~lib/rt/itcms/__collect (local $0 i32) - (local $1 i32) - (local $2 i32) i32.const 0 - i32.const 8 - call $~lib/typedarray/Uint8Array#constructor - local.set $0 - local.get $0 + drop + global.get $~lib/rt/itcms/state i32.const 0 - i32.const 246 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 224 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 88 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 159 + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + 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/dataview/DataView~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 $~lib/dataview/DataView + block $~lib/typedarray/Uint8Array + 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/Uint8Array $~lib/dataview/DataView $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/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView~visit + return + end + unreachable + ) + (func $~start + call $start:std/dataview + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17168 + i32.const 17216 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/typedarray/Uint8Array#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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/dataview/DataView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:buffer + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:dataStart + local.get $0 + i32.const 0 + call $~lib/dataview/DataView#set:byteLength + local.get $3 + i32.const 1073741820 + i32.gt_u + local.get $2 + local.get $3 + i32.add + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.gt_u + i32.or + if + i32.const 32 + i32.const 608 + i32.const 25 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/dataview/DataView#set:buffer + local.get $1 + local.get $2 + i32.add + local.set $4 + local.get $0 + local.get $4 + call $~lib/dataview/DataView#set:dataStart + local.get $0 + local.get $3 + call $~lib/dataview/DataView#set:byteLength + local.get $0 + 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/dataview/DataView#constructor@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 + i32.const 0 + i32.store + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $2 + end + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 + end + local.get $0 + local.get $1 + local.get $2 + local.get $3 + call $~lib/dataview/DataView#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $start:std/dataview + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 246 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 224 call $~lib/typedarray/Uint8Array#__set local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 88 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 159 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 130 call $~lib/typedarray/Uint8Array#__set local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 i32.const 101 call $~lib/typedarray/Uint8Array#__set local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 i32.const 67 call $~lib/typedarray/Uint8Array#__set local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 7 i32.const 95 call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.get $0 i32.load offset=8 call $~lib/dataview/DataView#constructor - local.set $1 + local.tee $1 + i32.store offset=12 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2839,13 +3753,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 15 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2854,13 +3773,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 16 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2869,13 +3793,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 17 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2884,13 +3813,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -2899,13 +3833,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 19 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2914,13 +3853,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2929,13 +3873,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 22 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2944,13 +3893,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 23 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2959,13 +3913,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 24 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -2974,13 +3933,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 25 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat64 @@ -2989,13 +3953,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat64 @@ -3004,13 +3973,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 28 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const -10 @@ -3018,13 +3992,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 30 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 call $~lib/dataview/DataView#getInt8 i32.const -32 @@ -3032,13 +4011,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 31 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 call $~lib/dataview/DataView#getInt8 i32.const 88 @@ -3046,13 +4030,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 32 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 call $~lib/dataview/DataView#getInt8 i32.const -97 @@ -3060,13 +4049,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 call $~lib/dataview/DataView#getInt8 i32.const -126 @@ -3074,13 +4068,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 34 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 call $~lib/dataview/DataView#getInt8 i32.const 101 @@ -3088,13 +4087,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 call $~lib/dataview/DataView#getInt8 i32.const 67 @@ -3102,13 +4106,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 7 call $~lib/dataview/DataView#getInt8 i32.const 95 @@ -3116,13 +4125,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3135,13 +4149,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3154,13 +4173,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 40 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3173,13 +4197,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 41 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3192,13 +4221,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 42 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3211,13 +4245,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 43 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3230,13 +4269,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 44 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -3249,13 +4293,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3268,13 +4317,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3287,13 +4341,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3306,13 +4365,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3325,13 +4389,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 50 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3344,13 +4413,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 51 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3363,13 +4437,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -3382,13 +4461,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 53 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3397,13 +4481,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3412,13 +4501,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3427,13 +4521,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 57 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3442,13 +4541,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -3457,13 +4561,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 59 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3472,13 +4581,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 61 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3487,13 +4601,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 62 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3502,13 +4621,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3517,13 +4641,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -3532,13 +4661,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 65 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt64 @@ -3547,13 +4681,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt64 @@ -3562,13 +4701,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 246 @@ -3576,13 +4720,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 70 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 call $~lib/dataview/DataView#getUint8 i32.const 224 @@ -3590,13 +4739,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 71 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 call $~lib/dataview/DataView#getUint8 i32.const 88 @@ -3604,13 +4758,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 call $~lib/dataview/DataView#getUint8 i32.const 159 @@ -3618,13 +4777,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 call $~lib/dataview/DataView#getUint8 i32.const 130 @@ -3632,13 +4796,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 74 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 call $~lib/dataview/DataView#getUint8 i32.const 101 @@ -3646,13 +4815,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 75 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 call $~lib/dataview/DataView#getUint8 i32.const 67 @@ -3660,13 +4834,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 76 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 7 call $~lib/dataview/DataView#getUint8 i32.const 95 @@ -3674,13 +4853,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3691,13 +4875,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3708,13 +4897,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 80 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3725,13 +4919,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 81 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3742,13 +4941,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3759,13 +4963,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3776,13 +4985,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -3793,13 +5007,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3810,13 +5029,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 87 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3827,13 +5051,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 88 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3844,13 +5073,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3861,13 +5095,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 90 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3878,13 +5117,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 5 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3895,13 +5139,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 92 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 6 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -3912,13 +5161,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 93 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3927,13 +5181,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 95 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3942,13 +5201,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 96 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3957,13 +5221,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3972,13 +5241,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 98 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -3987,13 +5261,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 99 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4002,13 +5281,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 101 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4017,13 +5301,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 102 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4032,13 +5321,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4047,13 +5341,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 104 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 4 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4062,13 +5361,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint64 @@ -4077,13 +5381,18 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint64 @@ -4092,18 +5401,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 108 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 f32.const 1.5976661625240943e-18 i32.const 1 call $~lib/dataview/DataView#setFloat32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat32 @@ -4112,18 +5431,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 f32.const 1976281973381696323584 i32.const 0 call $~lib/dataview/DataView#setFloat32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat32 @@ -4132,18 +5461,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 f64.const -1094252199637739024055454e124 i32.const 1 call $~lib/dataview/DataView#setFloat64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getFloat64 @@ -4152,18 +5491,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 f64.const 6.022586634778589e-103 i32.const 0 call $~lib/dataview/DataView#setFloat64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getFloat64 @@ -4172,17 +5521,27 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 120 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 108 call $~lib/dataview/DataView#setInt8 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 call $~lib/dataview/DataView#getInt8 i32.const 108 @@ -4190,18 +5549,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 123 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const -13360 i32.const 1 call $~lib/dataview/DataView#setInt16 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 @@ -4214,18 +5583,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 126 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 14689 i32.const 0 call $~lib/dataview/DataView#setInt16 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 @@ -4238,18 +5617,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1204680201 i32.const 1 call $~lib/dataview/DataView#setInt32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt32 @@ -4258,18 +5647,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 132 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 660673230 i32.const 0 call $~lib/dataview/DataView#setInt32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt32 @@ -4278,18 +5677,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 135 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i64.const -3290739641816099749 i32.const 1 call $~lib/dataview/DataView#setInt64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt64 @@ -4298,18 +5707,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 138 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i64.const 8178932412950708047 i32.const 0 call $~lib/dataview/DataView#setInt64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt64 @@ -4318,17 +5737,27 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 141 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 238 call $~lib/dataview/DataView#setUint8 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 call $~lib/dataview/DataView#getUint8 i32.const 238 @@ -4336,18 +5765,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 144 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 58856 i32.const 1 call $~lib/dataview/DataView#setUint16 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint16 @@ -4358,18 +5797,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 147 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 60400 i32.const 0 call $~lib/dataview/DataView#setUint16 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint16 @@ -4380,18 +5829,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 150 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const -846805744 i32.const 1 call $~lib/dataview/DataView#setUint32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint32 @@ -4400,18 +5859,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 153 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const -1510791631 i32.const 0 call $~lib/dataview/DataView#setUint32 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint32 @@ -4420,18 +5889,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 156 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i64.const 2334704782995986958 i32.const 1 call $~lib/dataview/DataView#setUint64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 call $~lib/dataview/DataView#getUint64 @@ -4440,18 +5919,28 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 159 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i64.const -7123186897289856329 i32.const 0 call $~lib/dataview/DataView#setUint64 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 0 call $~lib/dataview/DataView#getUint64 @@ -4460,33 +5949,41 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 162 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $0 i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 i32.const 0 i32.const 1 global.set $~argumentsLength i32.const 0 call $~lib/dataview/DataView#constructor@varargs - local.set $2 + local.tee $1 + i32.store offset=12 local.get $1 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 - local.set $1 - local.get $1 call $~lib/dataview/DataView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 165 i32.const 3 call $~lib/builtins/abort @@ -4499,225 +5996,91 @@ i32.eqz if i32.const 0 - i32.const 528 + i32.const 672 i32.const 166 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 + (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 - 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 + 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 - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#set:buffer 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 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz + 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 0 - i32.const 208 - i32.const 122 - i32.const 14 + i32.const 32 + i32.const 80 + i32.const 18 + i32.const 57 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:std/dataview - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop + i32.shl + local.tee $1 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 local.get $1 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + call $~lib/memory/memory.fill 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 $3 + call $~lib/arraybuffer/ArrayBufferView#set:buffer local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) + local.get $3 + call $~lib/arraybuffer/ArrayBufferView#set:dataStart local.get $0 local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/dataview/DataView~visit (param $0 i32) (param $1 i32) - (local $2 i32) + call $~lib/arraybuffer/ArrayBufferView#set:byteLength 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 $~lib/dataview/DataView - block $~lib/typedarray/Uint8Array - 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/Uint8Array $~lib/dataview/DataView $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/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/dataview/DataView~visit - return - end - unreachable + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) ) diff --git a/tests/compiler/std/date.json b/tests/compiler/std/date.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/date.json +++ b/tests/compiler/std/date.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index ed981f06b7..23b69366a4 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1,5 +1,10 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (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 $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $none_=>_f64 (func (result f64))) (type $i32_i32_i32_i32_i32_i32_f64_=>_f64 (func (param i32 i32 i32 i32 i32 i32 f64) (result f64))) @@ -7,15 +12,1479 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\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 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00d\00a\00t\00e\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) " ") (global $std/date/creationTime (mut i64) (i64.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/date/date (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17908)) (export "memory" (memory $0)) (start $~start) - (func $start:std/date + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $std/date/date + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 273 + 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 1440 + i32.const 275 + 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 1440 + i32.const 288 + 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 1440 + i32.const 201 + 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 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 $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 1440 + i32.const 224 + 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 1440 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1440 + i32.const 240 + 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 1440 + i32.const 256 + 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 1440 + i32.const 381 + 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 1440 + i32.const 388 + 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 1440 + i32.const 401 + 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) - (local $2 i64) + 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 17920 + i32.const 0 + i32.store + i32.const 19488 + 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 17920 + 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 17920 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (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 1440 + i32.const 500 + 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 502 + 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/itcms/__new (result i32) + (local $0 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 8 + i32.store offset=16 + local.get $0 + 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 $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 20 + i32.add + local.tee $0 + i32.const 0 + i32.store8 + local.get $0 + i32.const 4 + i32.add + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=6 + local.get $0 + i32.const 0 + i32.store8 offset=5 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=4 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:std/date + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s + if + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:std/date + (local $0 i32) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.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 1970 i32.const 0 i32.const 1 @@ -87,71 +1556,47 @@ call $~lib/builtins/abort unreachable end + i32.const 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace global.get $std/date/creationTime - local.set $2 - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 1116 - i32.lt_u - if - local.get $1 - i32.const 66651 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end - end - i32.const 1084 - i32.const 28 - i32.store - i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 1092 - i32.const 0 - i32.store - i32.const 1096 - i32.const 3 - i32.store - i32.const 1100 - i32.const 8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 1104 + local.get $0 i64.const 0 i64.store - i32.const 1104 - local.get $2 + local.get $0 + local.get $1 i64.store - i32.const 1104 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 global.set $std/date/date + global.get $~lib/memory/__stack_pointer + global.get $std/date/date + local.tee $0 + i32.store global.get $std/date/creationTime - i32.const 1104 + local.get $0 i64.load i64.ne if @@ -162,12 +1607,20 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/date/date + local.tee $0 + i32.store + local.get $0 global.get $std/date/creationTime i64.const 1 i64.add i64.store + global.get $~lib/memory/__stack_pointer global.get $std/date/date + local.tee $0 + i32.store + local.get $0 i64.load global.get $std/date/creationTime i64.const 1 @@ -181,8 +1634,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/date + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 7685f7ed6e..392e1089c8 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -1,9 +1,14 @@ (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_i32_i32_=>_none (func (param i32 i32 i32 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_i64_=>_none (func (param i32 i64))) + (type $none_=>_i32 (func (result 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_=>_i64 (func (param i32) (result i64))) (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) @@ -13,180 +18,2408 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "Date" "now" (func $~lib/bindings/Date/now (result f64))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\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\00\00\00\00\00\00\00") + (data (i32.const 12) ",\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\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) (global $std/date/creationTime (mut i64) (i64.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $std/date/date (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 60)) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/date/Date#set:value (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 416 + i32.const 275 + 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 416 + i32.const 288 + 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 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 $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 416 + i32.const 224 + 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 416 + i32.const 239 + 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 416 + i32.const 240 + 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 416 + i32.const 256 + 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 416 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 80 + i32.const 416 + i32.const 462 + 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 416 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 - 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) + (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) - 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 $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 - 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 + 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 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 80 + i32.const 144 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 + call $~lib/memory/memory.fill + local.get $3 ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/date/Date#getTime (param $0 i32) (result i64) local.get $0 + i64.load ) - (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32) + (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64) local.get $0 - i32.eqz + local.get $1 + call $~lib/date/Date#set:value + local.get $1 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/date/date + local.tee $1 if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end + i32.const 272 local.get $0 - i64.const 0 - i64.store - local.get $0 - local.get $1 - i64.store + call $~lib/rt/itcms/__visit + i32.const 80 local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/date/Date#getTime (param $0 i32) (result i64) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i64.load + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end ) - (func $~lib/date/Date#setTime (param $0 i32) (param $1 i64) (result i64) - local.get $0 - local.get $1 - i64.store - local.get $1 + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + 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 $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:std/date + ) + (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:std/date (local $0 i32) @@ -196,6 +2429,15 @@ (local $4 i32) (local $5 i32) (local $6 i64) + (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 i32.const 1970 local.set $2 i32.const 0 @@ -316,25 +2558,25 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 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 global.get $std/date/creationTime call $~lib/date/Date#constructor global.set $std/date/date global.get $std/date/date + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 call $~lib/date/Date#getTime global.get $std/date/creationTime i64.eq @@ -348,12 +2590,22 @@ unreachable end global.get $std/date/date + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 global.get $std/date/creationTime i64.const 1 i64.add call $~lib/date/Date#setTime drop global.get $std/date/date + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 call $~lib/date/Date#getTime global.get $std/date/creationTime i64.const 1 @@ -368,8 +2620,43 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/date + (func $~lib/date/Date#constructor (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i64.const 0 + call $~lib/date/Date#set:value + local.get $0 + local.get $1 + call $~lib/date/Date#set:value + 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/std/hash.json b/tests/compiler/std/hash.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/hash.json +++ b/tests/compiler/std/hash.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index dd088a0099..6314777b30 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -1,21 +1,103 @@ (module (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 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\02\00\00\00a") + (data (i32.const 1100) "\1c") + (data (i32.const 1112) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 1132) "\1c") + (data (i32.const 1144) "\01\00\00\00\06\00\00\00a\00b\00c") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17548)) (export "memory" (memory $0)) (start $~start) + (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + i32.const 0 + call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1088 + call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store + i32.const 1120 + call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store + i32.const 1152 + call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1164 + i32.lt_s + if + i32.const 17568 + i32.const 17616 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/util/hash/hashStr (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const -2128831035 local.set $2 local.get $0 if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub @@ -47,17 +129,9 @@ end end end - ) - (func $~start - i32.const 0 - call $~lib/util/hash/hashStr - i32.const 1056 - call $~lib/util/hash/hashStr - i32.const 1088 - call $~lib/util/hash/hashStr - i32.const 1120 - call $~lib/util/hash/hashStr - i32.const 1152 - call $~lib/util/hash/hashStr + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 5487c890eb..cc30a79cee 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -1,19 +1,20 @@ (module (type $i32_=>_i32 (func (param 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 $i64_=>_i32 (func (param i64) (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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) "\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 76) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") + (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") + (data (i32.const 44) "\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 76) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -22,60 +23,6 @@ i32.const 1 i32.shr_u ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) - (func $~lib/util/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const -2128831035 - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - 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 $1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - local.get $3 - ) (func $std/hash/check (param $0 i32) (result i32) i32.const 1 ) @@ -209,90 +156,190 @@ local.set $3 local.get $3 ) + (func $~start + call $start:std/hash + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16544 + i32.const 16592 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if + i32.const 0 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + 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 $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + ) (func $start:std/hash (local $0 i32) - (local $1 i32) - (local $2 f32) - (local $3 f64) + (local $1 f32) + (local $2 f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store block $~lib/util/hash/HASH<~lib/string/String|null>|inlined.0 (result i32) i32.const 0 - call $~lib/rt/stub/__retain local.set $0 i32.const 1 drop local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 br $~lib/util/hash/HASH<~lib/string/String|null>|inlined.0 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer i32.const 32 - local.set $1 + local.tee $0 + i32.store offset=4 i32.const 1 drop - local.get $1 - call $~lib/util/hash/hashStr - local.set $0 - local.get $1 - call $~lib/rt/stub/__release local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/util/hash/hashStr br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer i32.const 64 - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 drop local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer i32.const 96 - local.set $1 + local.tee $0 + i32.store offset=4 i32.const 1 drop - local.get $1 - call $~lib/util/hash/hashStr - local.set $0 - local.get $1 - call $~lib/rt/stub/__release local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/util/hash/hashStr br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 end call $std/hash/check drop block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer i32.const 128 - local.set $0 + local.tee $0 + i32.store offset=4 i32.const 1 drop local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/util/hash/hashStr - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end call $std/hash/check drop block $~lib/util/hash/HASH|inlined.0 (result i32) f32.const 0 - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -303,7 +350,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -312,7 +359,7 @@ drop block $~lib/util/hash/HASH|inlined.1 (result i32) f32.const 1 - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -323,7 +370,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -332,7 +379,7 @@ drop block $~lib/util/hash/HASH|inlined.2 (result i32) f32.const 1.100000023841858 - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -343,7 +390,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -352,7 +399,7 @@ drop block $~lib/util/hash/HASH|inlined.3 (result i32) f32.const 0 - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -363,7 +410,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -372,7 +419,7 @@ drop block $~lib/util/hash/HASH|inlined.4 (result i32) f32.const inf - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -383,7 +430,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -392,7 +439,7 @@ drop block $~lib/util/hash/HASH|inlined.5 (result i32) f32.const nan:0x400000 - local.set $2 + local.set $1 i32.const 0 drop i32.const 0 @@ -403,7 +450,7 @@ i32.const 4 i32.eq drop - local.get $2 + local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.5 @@ -412,7 +459,7 @@ drop block $~lib/util/hash/HASH|inlined.0 (result i32) f64.const 0 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -427,7 +474,7 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -436,7 +483,7 @@ drop block $~lib/util/hash/HASH|inlined.1 (result i32) f64.const 1 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -451,7 +498,7 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -460,7 +507,7 @@ drop block $~lib/util/hash/HASH|inlined.2 (result i32) f64.const 1.1 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -475,7 +522,7 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -484,7 +531,7 @@ drop block $~lib/util/hash/HASH|inlined.3 (result i32) f64.const 0 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -499,7 +546,7 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -508,7 +555,7 @@ drop block $~lib/util/hash/HASH|inlined.4 (result i32) f64.const inf - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -523,7 +570,7 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -532,7 +579,7 @@ drop block $~lib/util/hash/HASH|inlined.5 (result i32) f64.const nan:0x8000000000000 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 @@ -547,15 +594,16 @@ i32.const 8 i32.eq drop - local.get $3 + local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 end call $std/hash/check drop - ) - (func $~start - call $start:std/hash + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/map.json b/tests/compiler/std/map.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/map.json +++ b/tests/compiler/std/map.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 3c511d4239..15371b5c56 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1,43 +1,281 @@ (module (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 $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_=>_none (func (param 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_i64_=>_none (func (param i32 i64))) + (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $i32_i64_i64_=>_none (func (param i32 i64 i64))) + (type $none_=>_i32 (func (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f32_i32_=>_none (func (param i32 f32 i32))) + (type $i32_f32_f32_=>_none (func (param i32 f32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i64_i64_=>_i32 (func (param i32 i64 i64) (result i32))) - (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) - (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) + (type $i32_f64_i32_=>_none (func (param i32 f64 i32))) + (type $i32_f64_f64_=>_none (func (param i32 f64 f64))) (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_f64_i32_=>_i32 (func (param i32 f64 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(\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) ",\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 1276) "<\00\00\00\01\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 1340) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") - (data (i32.const 1388) "<\00\00\00\01\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 1452) ",\00\00\00\01\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 1500) ",\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 1548) "<\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 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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1484) "<") + (data (i32.const 1496) "\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 1548) ",") + (data (i32.const 1560) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1596) "<") + (data (i32.const 1608) "\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 1660) ",") + (data (i32.const 1672) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1708) ",") + (data (i32.const 1720) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1760) " \00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1788) "\10\89\10\00\00\00\00\00B\08\00\00\00\00\00\00\02\t\00\00\00\00\00\00P\88\10\00\00\00\00\00\10\t\12\00\00\00\00\00\10\89\00\00\00\00\00\00B\00\00\00\00\00\00\00P\80\00\00\00\00\00\00\10\t\11\00\00\00\00\00\82\08\00\00\00\00\00\00\90\08\11\00\00\00\00\00\10\t\01\00\00\00\00\00\82\00\00\00\00\00\00\00\90\00\01\00\00\00\00\00\10\t\02\00\00\00\00\00\02\01\00\00\00\00\00\00\10\01\02\00\00\00\00\00\10\t\14\00\00\00\00\00\02\n\00\00\00\00\00\00\10\n\14\00\00\00\00\00\10\t\04\00\00\00\00\00\02\02\00\00\00\00\00\00\10\02\04\00\00\00\00\00\10\t2\00\00\00\00\00\02\19\00\00\00\00\00\00\10\192\00\00\00\00\00\10\t4\00\00\00\00\00\02\1a\00\00\00\00\00\00\10\1a4") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18404)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1616 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 18404 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1760 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1764 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -51,8 +289,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -71,8 +309,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -114,8 +352,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -206,8 +444,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -220,8 +458,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -293,8 +531,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -348,23 +586,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -411,8 +649,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -481,8 +719,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -509,8 +747,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -537,8 +775,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -605,10 +843,10 @@ if unreachable end - i32.const 1616 + i32.const 18416 i32.const 0 i32.store - i32.const 3184 + i32.const 19984 i32.const 0 i32.store loop $for-loop|0 @@ -619,7 +857,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1616 + i32.const 18416 i32.add i32.const 0 i32.store offset=4 @@ -637,7 +875,7 @@ i32.add i32.const 2 i32.shl - i32.const 1616 + i32.const 18416 i32.add i32.const 0 i32.store offset=96 @@ -655,82 +893,303 @@ br $for-loop|0 end end - i32.const 1616 - i32.const 3188 + i32.const 18416 + i32.const 19988 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1616 + i32.const 18416 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 1056 - i32.const 1184 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18404 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18404 + 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 $1 + i32.const 18404 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -744,8 +1203,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 333 + i32.const 1392 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -796,8 +1255,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 346 + i32.const 1392 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -818,130 +1277,75 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1184 - i32.const 360 - i32.const 14 + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz 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 + memory.size local.tee $1 - local.get $4 + i32.const 16 + i32.shl i32.const 4 i32.sub - i32.const 1 - i32.or - i32.store 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 - 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 $3 local.get $1 local.get $3 i32.gt_s @@ -973,8 +1377,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 498 + i32.const 1392 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -988,8 +1392,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -997,118 +1401,80 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (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 + i32.const 4 + i32.add + i32.const 15 + i32.and if - i32.const 1056 - i32.const 1120 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.get $3 + i32.const -4 + i32.and local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + local.tee $4 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 1612 - i32.gt_u + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 + local.get $1 + local.get $2 + local.get $3 + i32.const 2 i32.and + i32.or + i32.store local.get $2 - i32.const 1 + local.get $1 + i32.const 4 i32.add - i32.const -268435456 + 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 $3 + i32.const -2 i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $1 - local.get $2 - i32.const 1 + i32.const 4 i32.add - i32.store offset=4 + local.tee $0 local.get $1 i32.load - i32.const 1 + i32.const -4 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 $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1612 - i32.gt_u - if + i32.add local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + 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/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -1268,34 +1634,182 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (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.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if - i32.const 1248 - i32.const 1296 - i32.const 49 - i32.const 43 + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end local.get $0 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load + i32.store offset=12 local.get $2 local.get $0 - i32.load offset=4 + i32.store offset=16 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 290 + 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 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 i32.and i32.const 2 i32.shl @@ -1333,22 +1847,6 @@ end i32.const 0 ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1357,33 +1855,45 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 + 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 $7 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.tee $3 + 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 12 i32.mul i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 @@ -1391,25 +1901,25 @@ 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 i32.load8_s - local.tee $6 + local.tee $7 i32.store8 local.get $2 - local.get $4 + local.get $8 i32.load offset=4 i32.store offset=4 local.get $2 - local.get $5 - local.get $1 local.get $6 + local.get $1 + local.get $7 i32.const -2128831035 i32.xor i32.const 16777619 @@ -1418,10 +1928,10 @@ i32.const 2 i32.shl i32.add - local.tee $6 + local.tee $7 i32.load i32.store offset=8 - local.get $6 + local.get $7 local.get $2 i32.store local.get $2 @@ -1429,233 +1939,44 @@ i32.add local.set $2 end - local.get $4 + local.get $8 i32.const 12 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end local.get $0 - local.get $4 - i32.store + local.get $6 + call $~lib/map/Map#set:buckets local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end local.get $0 - local.get $1 - i32.store offset=8 + local.get $3 + call $~lib/map/Map#set:entries local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $3 - local.set $5 - local.get $0 - local.get $1 - local.get $3 - call $~lib/map/Map#find - local.tee $3 - if - local.get $3 + block $~lib/util/memory/memmove|inlined.0 local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain local.set $4 local.get $0 - local.get $0 - i32.load offset=16 - local.tee $3 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 12 - i32.mul - i32.add - local.tee $3 local.get $1 - i32.store8 - local.get $3 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $3 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=8 - local.get $1 - local.get $3 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - local.tee $0 - i32.eqz - if - i32.const 1408 - i32.const 1472 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - ) - (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 1184 - 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 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 local.get $0 local.get $1 i32.lt_u @@ -1819,173 +2140,16 @@ 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 1612 - 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) + (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 $7 i32) - (local $8 i32) - local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 1056 - i32.const 1120 - 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 1612 - 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) (param $2 i32) - (local $3 i32) - (local $4 i32) local.get $1 local.get $0 i32.load offset=8 - local.tee $3 + local.tee $5 local.get $2 i32.shr_u i32.gt_u @@ -1996,8 +2160,8 @@ i32.shr_u i32.gt_u if - i32.const 1248 - i32.const 1520 + i32.const 1456 + i32.const 1728 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -2005,21 +2169,57 @@ end local.get $0 i32.load - local.tee $4 + local.tee $6 + local.set $3 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 + local.get $2 + i32.shl + local.tee $7 + local.tee $4 + local.get $6 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $4 + i32.store offset=16 + local.get $3 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + local.get $4 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $4 + i32.gt_u + select + call $~lib/memory/memory.copy + end local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/pure/__renew - local.tee $1 - local.get $3 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $4 + local.get $6 i32.ne if local.get $0 @@ -2028,62 +2228,34 @@ local.get $0 local.get $1 i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link end local.get $0 - local.get $2 + local.get $7 i32.store offset=8 end ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $1 + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1568 - i32.const 1520 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end + local.get $1 + i32.const 0 + call $~lib/array/ensureSize local.get $0 - i32.load offset=4 local.get $1 - i32.add - local.get $2 - i32.store8 + i32.store offset=12 ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 0 + i32.const 2 call $~lib/array/ensureSize local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2091,332 +2263,191 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $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 $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1248 - i32.const 1520 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 i32.store - local.get $0 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 i32.store offset=4 local.get $0 - local.get $4 - i32.store offset=8 + i32.load offset=8 + local.tee $8 local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $6 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.load offset=8 + local.get $8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $1 local.get $2 + local.get $8 i32.load8_s - call $~lib/array/Array#__set + local.tee $7 + i32.store8 + local.get $2 + local.get $8 + i32.load8_s offset=1 + i32.store8 offset=1 + local.get $2 + local.get $6 local.get $1 - i32.const 1 + local.get $7 + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + i32.and + i32.const 2 + i32.shl i32.add - local.set $1 + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $5 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $5 - br $for-loop|0 + local.set $8 + br $while-continue|0 end end local.get $0 - local.get $1 - call $~lib/array/Array#set:length + local.get $6 + call $~lib/map/Map#set:buckets local.get $0 - ) - (func $~lib/array/Array#constructor (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 16 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 0 - i32.store - local.get $5 - i32.const 0 + local.get $1 i32.store offset=4 - local.get $5 - i32.const 0 - i32.store offset=8 - local.get $5 - i32.const 0 - i32.store offset=12 local.get $0 - i32.const 268435455 - i32.gt_u - if - i32.const 1248 - i32.const 1520 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/map/Map#set:entries local.get $0 - i32.const 2 - i32.shl - local.tee $4 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $1 - local.get $2 - local.get $5 - i32.load - local.tee $3 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 - local.get $4 - i32.store offset=8 local.get $5 - local.get $0 i32.store offset=12 - local.get $5 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 1568 - i32.const 1520 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - 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.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - i32.store + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) local.get $0 - i32.load offset=12 - drop + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul local.get $0 - local.get $1 - i32.store offset=12 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - local.set $3 + i32.load + local.get $2 local.get $0 - i32.load offset=16 - local.tee $4 - call $~lib/array/Array#constructor + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $0 - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s + loop $while-continue|0 + local.get $0 if - local.get $3 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $5 + local.get $0 i32.load offset=8 + local.tee $2 i32.const 1 i32.and - i32.eqz + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end if local.get $0 - local.get $1 - local.get $5 - i32.load offset=4 - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 + return end local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/map/Map#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1568 - i32.const 1520 - i32.const 104 - 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) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2424,33 +2455,45 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 + 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 $7 - i32.const 3 - i32.shl + local.tee $5 + i32.const 12 + i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.tee $3 + 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.const 12 + i32.mul i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 @@ -2458,311 +2501,92 @@ local.get $8 i32.ne if - local.get $4 - i32.load offset=4 + local.get $8 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $4 - i32.load8_s - local.tee $6 - i32.store8 + local.get $8 + i32.load + local.tee $7 + i32.store local.get $2 - local.get $4 - i32.load8_s offset=1 - i32.store8 offset=1 + local.get $8 + i32.load offset=4 + i32.store offset=4 local.get $2 - local.get $5 - local.get $1 local.get $6 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul + local.get $7 + call $~lib/util/hash/hash32 + local.get $1 i32.and i32.const 2 i32.shl i32.add - local.tee $6 + local.tee $7 i32.load - i32.store offset=4 - local.get $6 + i32.store offset=8 + local.get $7 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 12 i32.add local.set $2 end - local.get $4 - i32.const 8 + local.get $8 + i32.const 12 i32.add - local.set $4 + local.set $8 br $while-continue|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end local.get $0 - local.get $4 - i32.store + local.get $6 + call $~lib/map/Map#set:buckets local.get $0 local.get $1 i32.store offset=4 + local.get $0 local.get $3 - local.tee $1 + call $~lib/map/Map#set:entries local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 + local.get $5 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (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 - local.get $1 - local.tee $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 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=4 - local.tee $4 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - i32.load8_u - local.get $3 - i32.const 255 - i32.and - i32.eq - end - br_if $__inlined_func$~lib/map/Map#find - local.get $4 - i32.const -2 - i32.and - local.set $1 - br $while-continue|0 - end - end - i32.const 0 - local.set $1 - end - local.get $1 - if - local.get $1 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $1 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $1 - local.get $3 - i32.store8 - local.get $1 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $1 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $1 - i32.store - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul + i32.const 3 + i32.store offset=4 local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 4 + i32.store offset=12 local.get $0 - i32.load - local.get $2 + i32.const 0 + i32.store offset=16 local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end i32.const 0 + i32.store offset=20 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2770,33 +2594,45 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 + 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 $7 + local.tee $5 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.tee $3 + 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 12 i32.mul i32.add - local.set $8 + local.set $4 local.get $3 local.set $2 loop $while-continue|0 @@ -2804,104 +2640,3031 @@ 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 - i32.load - local.tee $6 - i32.store - local.get $2 - local.get $4 - i32.load offset=4 + local.get $8 + i32.load8_u + local.tee $7 + i32.store8 + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $1 + local.get $7 + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load8_u + local.tee $7 + i32.store8 + local.get $2 + local.get $8 + i32.load8_u offset=1 + i32.store8 offset=1 + local.get $2 + local.get $6 + local.get $1 + local.get $7 + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $8 + i32.const 8 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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/util/hash/hash16 (param $0 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load16_s + local.tee $7 + i32.store16 + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=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 $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load16_s + local.tee $7 + i32.store16 + local.get $2 + local.get $8 + i32.load16_s offset=2 + i32.store16 offset=2 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $8 + i32.const 8 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load16_u + local.tee $7 + i32.store16 + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne + if + local.get $8 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load16_u + local.tee $7 + i32.store16 + local.get $2 + local.get $8 + i32.load16_u offset=2 + i32.store16 offset=2 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 + end + local.get $8 + i32.const 8 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load + local.tee $7 + i32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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#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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load + local.tee $7 + i32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + 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/util/hash/hash64 (param $0 i64) (result i32) + (local $1 i32) + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + i64.load + local.tee $5 + i64.store + local.get $2 + local.get $9 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $5 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=12 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $9 + i32.const 16 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + i64.load + local.tee $5 + i64.store + local.get $2 + local.get $9 + i64.load offset=8 + i64.store offset=8 + local.get $2 + local.get $8 + local.get $5 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=16 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $9 + i32.const 24 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#clear (param $0 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + 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 $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i64.load + i64.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + i64.load + local.tee $5 + i64.store + local.get $2 + local.get $9 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $5 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=12 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $9 + i32.const 16 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + i64.load + local.tee $5 + i64.store + local.get $2 + local.get $9 + i64.load offset=8 + i64.store offset=8 + local.get $2 + local.get $8 + local.get $5 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=16 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $9 + i32.const 24 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f32.load + f32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f32.load + local.tee $5 + f32.store + local.get $2 + local.get $9 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $8 + local.get $5 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $9 + i32.const 12 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f32.load + local.tee $5 + f32.store + local.get $2 + local.get $9 + f32.load offset=4 + f32.store offset=4 + local.get $2 + local.get $8 + local.get $5 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $9 + i32.const 12 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=12 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + f64.load + f64.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $9 + i32.load offset=8 + i32.store offset=8 + local.get $2 + local.get $8 + local.get $5 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=12 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 16 + i32.add + local.set $2 + end + local.get $9 + i32.const 16 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 24 + i32.mul + i32.add + local.set $6 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne + if + local.get $9 + i32.load offset=16 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $9 + f64.load offset=8 + f64.store offset=8 + local.get $2 + local.get $8 + local.get $5 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=16 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 24 + i32.add + local.set $2 + end + local.get $9 + i32.const 24 + i32.add + local.set $9 + br $while-continue|0 + end + end + local.get $0 + local.get $8 + call $~lib/map/Map#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map#set:entries + local.get $0 + local.get $7 + 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/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + 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-inner0 $folding-inner1 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner0 $folding-inner1 $folding-inner0 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + ) + (func $~stack_check + 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 + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $3 + local.set $4 + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store8 + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + local.tee $0 + i32.eqz + if + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=8 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/map/Map#set:buckets + 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 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + call $~lib/memory/memory.fill + local.get $2 + local.get $3 + call $~lib/map/Map#set:buckets + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + 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 + i32.store + loop $for-loop|0 + local.get $0 + local.get $4 + i32.gt_s + if + local.get $5 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 local.get $2 + local.get $1 + local.get $3 + i32.load8_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1728 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $4 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 12 + i32.mul + i32.add + local.tee $5 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 local.get $5 - local.get $6 - call $~lib/util/hash/hash32 + i32.load offset=4 + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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 + 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 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + local.get $0 + i32.load + local.get $1 + local.tee $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $1 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $1 + if local.get $1 + i32.load offset=4 + local.tee $4 + i32.const 1 i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 + if (result i32) + i32.const 0 + else + local.get $1 + i32.load8_u + local.get $3 + i32.const 255 + i32.and + i32.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $1 + br $while-continue|0 end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 end + i32.const 0 + local.set $1 end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne if local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + local.get $2 + i32.store8 offset=1 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $1 local.get $4 - call $~lib/rt/pure/__release + i32.const 3 + i32.shl + i32.add + local.tee $1 + local.get $3 + i32.store8 + local.get $1 + local.get $2 + i32.store8 offset=1 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $1 + local.get $0 + i32.load + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $1 + i32.store end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 call $~lib/util/hash/hash32 - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -2915,6 +5678,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -2938,19 +5704,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -2969,27 +5736,38 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $0 i32.load i32.store offset=8 - local.get $1 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -3005,6 +5783,10 @@ local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -3049,43 +5831,17 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $2 call $~lib/map/Map#rehash end - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -3096,21 +5852,46 @@ (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -3120,6 +5901,12 @@ local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|1 local.get $1 i32.const 24 @@ -3129,17 +5916,23 @@ i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -3150,19 +5943,24 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -3176,7 +5974,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -3189,13 +5987,16 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -3212,18 +6013,24 @@ i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -3237,12 +6044,15 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -3253,19 +6063,24 @@ i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -3279,7 +6094,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -3292,39 +6107,63 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#keys - local.set $4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 + i32.store + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $1 i32.const 3 i32.store offset=4 local.get $1 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $1 i32.const 4 i32.store offset=12 @@ -3334,48 +6173,86 @@ local.get $1 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 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $5 + local.tee $4 + i32.store offset=20 loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=4 i32.add i32.load8_s - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $7 i32.const 20 @@ -3384,25 +6261,29 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 + local.get $5 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -3410,25 +6291,31 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -3445,18 +6332,24 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#get @@ -3470,21 +6363,27 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -3497,13 +6396,16 @@ br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -3520,17 +6422,23 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 local.get $2 @@ -3541,28 +6449,36 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -3575,193 +6491,88 @@ br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1360 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_u - local.tee $6 - i32.store8 - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $5 - local.get $1 - local.get $6 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.store + i32.store offset=4 + local.get $0 + call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne + i32.load offset=20 if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store local.get $1 i32.const 255 i32.and @@ -3770,7 +6581,7 @@ i32.const 16777619 i32.mul local.tee $3 - local.set $5 + local.set $4 local.get $0 local.get $1 local.get $3 @@ -3787,6 +6598,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -3810,19 +6624,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -3841,26 +6656,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $0 i32.load i32.store offset=8 - local.get $1 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -3874,8 +6700,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -3883,6 +6709,10 @@ end local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -3891,250 +6721,148 @@ (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load offset=8 - local.set $6 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - local.tee $7 - local.set $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 i32.store - local.get $0 + local.get $2 + i32.const 0 + call $~lib/map/Map#set:buckets + local.get $2 i32.const 0 i32.store offset=4 - local.get $0 + local.get $2 i32.const 0 i32.store offset=8 - local.get $0 + local.get $2 i32.const 0 i32.store offset=12 - local.get $4 + local.get $0 i32.const 1073741820 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 call $~lib/memory/memory.fill local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 local.get $3 - i32.store - local.get $0 + call $~lib/map/Map#set:buckets local.get $2 + local.get $3 i32.store offset=4 + local.get $2 local.get $0 - local.get $4 i32.store offset=8 + local.get $2 local.get $0 - local.get $4 i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $2 - i32.load8_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + loop $for-loop|0 + local.get $0 local.get $4 - local.get $8 - i32.ne + i32.gt_s if + local.get $5 local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load8_u - local.tee $6 - i32.store8 - local.get $2 - local.get $4 - i32.load8_u offset=1 - i32.store8 offset=1 - local.get $2 - local.get $5 - local.get $1 - local.get $6 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=4 - local.get $6 + i32.const 12 + i32.mul + i32.add + local.tee $3 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=4 local.get $2 - i32.const 8 + local.get $1 + local.get $3 + i32.load8_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end local.get $4 - i32.const 8 + i32.const 1 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 + local.get $2 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store local.get $0 i32.load local.get $1 @@ -4196,6 +6924,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -4219,19 +6950,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $1 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $1 + local.get $4 i32.const 3 i32.shl i32.add @@ -4257,20 +6989,31 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -4284,6 +7027,10 @@ local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -4328,10 +7075,17 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $2 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -4342,21 +7096,46 @@ (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 8 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -4366,6 +7145,12 @@ local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|1 local.get $1 i32.const 255 @@ -4373,17 +7158,23 @@ i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -4392,19 +7183,24 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -4416,7 +7212,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -4429,13 +7225,16 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -4450,18 +7249,24 @@ i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -4473,12 +7278,15 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -4487,19 +7295,24 @@ i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -4511,7 +7324,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -4524,39 +7337,63 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#keys - local.set $4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 + i32.store + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $1 i32.const 3 i32.store offset=4 local.get $1 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $1 i32.const 4 i32.store offset=12 @@ -4566,48 +7403,86 @@ local.get $1 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 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $5 + local.tee $4 + i32.store offset=20 loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=4 i32.add i32.load8_u - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $7 i32.const 20 @@ -4616,25 +7491,29 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 + local.get $5 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -4642,25 +7521,31 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -4675,18 +7560,24 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#get @@ -4698,21 +7589,27 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -4725,13 +7622,16 @@ br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -4746,17 +7646,23 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 local.get $2 @@ -4765,28 +7671,36 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -4799,100 +7713,56 @@ br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load16_u - local.get $1 - i32.const 65535 - i32.and - i32.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -4904,151 +7774,36 @@ call $~lib/map/Map#find i32.const 0 i32.ne - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load16_s - local.tee $6 - i32.store16 - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $5 - local.get $6 - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 16 i32.shl i32.const 16 i32.shr_s call $~lib/util/hash/hash16 - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -5062,6 +7817,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -5085,19 +7843,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -5116,26 +7875,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $0 i32.load i32.store offset=8 - local.get $1 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -5148,8 +7918,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -5157,9 +7927,21 @@ end local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -5169,9 +7951,9 @@ i32.const 0 i32.lt_s if - i32.const 1568 - i32.const 1520 - i32.const 120 + i32.const 1248 + i32.const 1728 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -5187,26 +7969,21 @@ local.get $3 i32.store offset=12 end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop + i32.store local.get $0 + i32.load offset=4 local.get $1 i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -5217,23 +7994,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $8 - local.set $7 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 12 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -5241,71 +8036,69 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $2 i32.const 536870910 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - local.get $3 + local.get $2 i32.load16_s call $~lib/array/Array#__set local.get $1 @@ -5313,161 +8106,49 @@ i32.add local.set $1 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#set:length - local.get $0 - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if local.get $4 - i32.load offset=4 i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load16_s - local.tee $6 - i32.store16 - local.get $2 - local.get $4 - i32.load16_s offset=2 - i32.store16 offset=2 - local.get $2 - local.get $5 - local.get $6 - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $4 - i32.const 8 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - local.tee $3 i32.const 16 i32.shl i32.const 16 i32.shr_s call $~lib/util/hash/hash16 local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.set $3 local.get $0 i32.load local.get $5 @@ -5521,6 +8202,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -5544,19 +8228,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $1 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $1 + local.get $4 i32.const 3 i32.shl i32.add @@ -5582,20 +8267,31 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -5608,6 +8304,10 @@ local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -5652,10 +8352,17 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $2 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -5666,21 +8373,46 @@ (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -5690,6 +8422,12 @@ local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|1 local.get $1 i32.const 16 @@ -5699,17 +8437,23 @@ i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -5720,19 +8464,24 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -5746,7 +8495,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -5759,13 +8508,16 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -5782,18 +8534,24 @@ i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -5807,12 +8565,15 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -5823,19 +8584,24 @@ i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -5849,7 +8615,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -5862,39 +8628,63 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#keys - local.set $4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 + i32.store + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $1 i32.const 3 i32.store offset=4 local.get $1 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $1 i32.const 4 i32.store offset=12 @@ -5904,50 +8694,88 @@ local.get $1 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 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $5 + local.tee $4 + i32.store offset=20 loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.load offset=4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_s - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $7 i32.const 20 @@ -5956,25 +8784,29 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 + local.get $5 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -5982,25 +8814,31 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -6017,18 +8855,24 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#get @@ -6042,21 +8886,27 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -6069,13 +8919,16 @@ br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -6092,17 +8945,23 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 local.get $2 @@ -6113,28 +8972,36 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -6147,194 +9014,93 @@ br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1360 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load16_u - local.tee $6 - i32.store16 - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $5 - local.get $6 - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 i32.ne if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1568 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.store + i32.store offset=4 + local.get $0 + call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne + i32.load offset=20 if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1568 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + local.get $1 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 65535 i32.and call $~lib/util/hash/hash16 - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -6348,6 +9114,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -6371,19 +9140,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -6402,26 +9172,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $1 + local.tee $0 i32.load i32.store offset=8 - local.get $1 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -6432,8 +9213,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -6441,6 +9222,10 @@ end local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -6451,23 +9236,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $8 - local.set $7 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -6475,231 +9278,117 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $2 i32.const 536870910 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 1 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $3 - i32.load16_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - 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#set:length - local.get $0 - ) - (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) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i32.load16_u - local.tee $6 - i32.store16 - local.get $2 - local.get $4 - i32.load16_u offset=2 - i32.store16 offset=2 - local.get $2 - local.get $5 - local.get $6 - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $6 - i32.load i32.store offset=4 - local.get $6 - local.get $2 - i32.store + local.get $0 + local.get $1 local.get $2 - i32.const 8 + i32.load16_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end local.get $4 - i32.const 8 + i32.const 1 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - local.tee $3 i32.const 65535 i32.and call $~lib/util/hash/hash16 local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.set $3 local.get $0 i32.load local.get $5 @@ -6753,6 +9442,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -6776,19 +9468,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $1 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $1 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $1 + local.get $4 i32.const 3 i32.shl i32.add @@ -6814,20 +9507,31 @@ i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=4 - local.get $2 + local.get $0 local.get $1 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -6838,6 +9542,10 @@ local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -6882,10 +9590,17 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $2 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -6896,21 +9611,46 @@ (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 14 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -6920,6 +9660,12 @@ local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|1 local.get $1 i32.const 65535 @@ -6927,17 +9673,23 @@ i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -6946,19 +9698,24 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -6970,7 +9727,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -6983,13 +9740,16 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -7004,18 +9764,24 @@ i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -7027,12 +9793,15 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 @@ -7041,19 +9810,24 @@ i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/map/Map#get @@ -7065,7 +9839,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -7078,39 +9852,63 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#keys - local.set $4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 16 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 + i32.store + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $1 i32.const 3 i32.store offset=4 local.get $1 i32.const 32 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $1 i32.const 4 i32.store offset=12 @@ -7120,50 +9918,88 @@ local.get $1 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 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $5 + local.tee $4 + i32.store offset=20 loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.load offset=4 local.get $2 i32.const 1 i32.shl i32.add i32.load16_u - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $7 i32.const 20 @@ -7172,25 +10008,29 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $1 + local.get $5 local.get $5 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -7198,25 +10038,31 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -7231,18 +10077,24 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#get @@ -7254,21 +10106,27 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7281,13 +10139,16 @@ br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7302,17 +10163,23 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 local.get $2 @@ -7321,28 +10188,36 @@ i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -7355,42 +10230,56 @@ br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -7398,8 +10287,23 @@ call $~lib/map/Map#find i32.const 0 i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -7408,8 +10312,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -7417,9 +10321,24 @@ end local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#delete (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -7428,6 +10347,10 @@ local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $1 @@ -7472,10 +10395,17 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $2 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -7486,43 +10416,71 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 call $~lib/map/Map#constructor - local.set $1 + local.tee $1 + i32.store loop $for-loop|0 local.get $2 i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 local.get $2 i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#get @@ -7532,7 +10490,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -7545,13 +10503,16 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -7564,18 +10525,24 @@ i32.const 100 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#get @@ -7585,31 +10552,39 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 local.get $2 i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $2 call $~lib/map/Map#get @@ -7619,7 +10594,7 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -7632,45 +10607,65 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $1 i32.load offset=16 - local.tee $6 + local.tee $7 call $~lib/array/Array#constructor - local.set $2 + local.tee $2 + i32.store loop $for-loop|01 local.get $4 - local.get $6 + local.get $7 i32.lt_s if - local.get $5 + local.get $6 local.get $4 i32.const 12 i32.mul i32.add - local.tee $7 + local.tee $8 i32.load offset=8 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 local.get $0 - local.get $7 + local.get $8 i32.load call $~lib/array/Array#__set local.get $0 @@ -7685,42 +10680,75 @@ br $for-loop|01 end end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 local.get $0 call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $0 + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $4 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $3 local.get $2 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 local.get $3 call $~lib/array/Array#__get local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $3 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $5 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $7 i32.const 20 @@ -7729,17 +10757,22 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $5 local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 local.get $4 local.get $7 i32.const 20 @@ -7747,7 +10780,6 @@ local.tee $5 local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add @@ -7755,25 +10787,31 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -7786,18 +10824,24 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#get @@ -7807,21 +10851,27 @@ i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -7834,13 +10884,16 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -7853,91 +10906,277 @@ i32.const 50 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 local.get $3 i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 local.get $3 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|4 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + call $~lib/util/hash/hash32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/map/Map#clear local.get $1 - i32.load offset=20 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 60 - i32.const 3 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -7948,23 +11187,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $8 - local.set $7 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 18 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -7972,71 +11229,69 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $2 i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - local.get $3 + local.get $2 i32.load call $~lib/array/Array#__set local.get $1 @@ -8044,17 +11299,216 @@ i32.add local.set $1 end - local.get $9 + local.get $4 i32.const 1 i32.add - local.set $9 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + call $~lib/util/hash/hash32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.store local.get $0 local.get $1 - call $~lib/array/Array#set:length + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + 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 $2 + i32.const 1 + i32.add + i32.const 4 local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric (local $0 i32) @@ -8065,21 +11519,46 @@ (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 17 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -8089,51 +11568,68 @@ local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 local.get $1 i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 i32.const 10 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $1 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort @@ -8146,13 +11642,16 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort @@ -8165,62 +11664,76 @@ i32.const 100 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $1 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $1 i32.const 20 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $1 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort @@ -8233,39 +11746,63 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#keys - local.set $4 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 call $~lib/map/Map#values - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 19 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 + i32.store + local.get $1 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $1 i32.const 3 i32.store offset=4 local.get $1 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $1 i32.const 4 i32.store offset=12 @@ -8275,61 +11812,119 @@ local.get $1 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 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $5 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $2 - local.get $4 + local.get $3 i32.load offset=12 i32.lt_s if - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $2 - call $~lib/array/Array#__get - local.set $3 + local.get $3 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 local.get $2 call $~lib/array/Array#__get local.set $7 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $5 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $7 i32.const 20 i32.sub - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - local.get $3 - local.get $3 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 + local.get $5 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $7 i32.const 20 i32.sub - local.tee $3 - local.get $3 + local.tee $5 + local.get $5 call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -8337,25 +11932,31 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort @@ -8368,42 +11969,54 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#get + call $~lib/map/Map#get local.get $2 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#delete + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort @@ -8416,13 +12029,16 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort @@ -8435,45 +12051,59 @@ i32.const 50 i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 local.get $2 i32.const 10 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#delete + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/map/Map#has + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort @@ -8486,149 +12116,56 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i64.load - i64.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -8636,148 +12173,32 @@ call $~lib/map/Map#find i32.const 0 i32.ne - ) - (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 i64) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $8 - i64.store - local.get $2 - local.get $4 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $5 - local.get $8 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + call $~lib/util/hash/hash64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - local.tee $5 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -8791,6 +12212,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -8814,19 +12238,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 4 i32.shl i32.add @@ -8845,26 +12270,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=12 - local.get $2 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -8873,8 +12309,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -8882,9 +12318,21 @@ end local.get $0 i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 local.get $0 i32.load offset=12 @@ -8894,9 +12342,9 @@ i32.const 0 i32.lt_s if - i32.const 1568 - i32.const 1520 - i32.const 120 + i32.const 1248 + i32.const 1728 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -8912,6 +12360,9 @@ local.get $3 i32.store offset=12 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 @@ -8920,18 +12371,10 @@ i32.add local.get $2 i64.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -8942,23 +12385,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $8 - local.set $7 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 21 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -8966,71 +12427,69 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $2 i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - local.get $3 + local.get $2 i64.load call $~lib/array/Array#__set local.get $1 @@ -9038,16 +12497,23 @@ i32.add local.set $1 end - local.get $9 + local.get $4 i32.const 1 i32.add - local.set $9 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) (func $~lib/map/Map#values (param $0 i32) (result i32) @@ -9056,14 +12522,24 @@ (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 $0 i32.load offset=8 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $4 call $~lib/array/Array#constructor - local.set $0 + local.tee $0 + i32.store loop $for-loop|0 local.get $2 local.get $4 @@ -9080,191 +12556,59 @@ i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 local.get $5 i32.load offset=8 call $~lib/array/Array#__set local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1568 - i32.const 1520 - i32.const 104 - 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 - ) - (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 i64) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - i64.load - local.tee $8 - i64.store - local.get $2 - local.get $4 - i64.load offset=8 - i64.store offset=8 - local.get $2 - local.get $5 - local.get $8 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=16 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 24 - i32.add - local.set $2 - end - local.get $4 - i32.const 24 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release + i32.const 1 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 - local.get $0 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 call $~lib/util/hash/hash64 - local.set $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -9279,7 +12623,7 @@ if local.get $3 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -9291,7 +12635,7 @@ i64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $5 + local.get $4 i32.const -2 i32.and local.set $3 @@ -9313,6 +12657,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -9336,19 +12683,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $5 local.get $3 + local.get $4 i32.const 24 i32.mul i32.add @@ -9367,28 +12715,39 @@ local.get $3 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $0 i32.load i32.store offset=16 - local.get $4 + local.get $0 local.get $3 i32.store - local.get $5 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 i64) (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 + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -9397,6 +12756,10 @@ local.tee $2 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $2 @@ -9441,259 +12804,316 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $3 call $~lib/map/Map#rehash end - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric - (local $0 i64) - (local $1 i32) + (local $0 i32) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 20 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 + call $~lib/map/Map#set:buckets + local.get $0 i32.const 3 i32.store offset=4 - local.get $1 + local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 + call $~lib/map/Map#set:entries + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $0 + local.get $1 i64.const 100 i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i64.const 100 i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#keys - local.set $5 - local.get $1 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#values - local.set $7 + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 22 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $2 i32.const 3 i32.store offset=4 local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $2 i32.const 4 i32.store offset=12 @@ -9703,36 +13123,90 @@ 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 $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $6 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 local.get $5 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $5 local.get $3 - call $~lib/array/Array#__get - local.set $0 - local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + i32.load offset=4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $5 call $~lib/array/Array#__get - local.set $4 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $6 i32.const 20 i32.sub i64.extend_i32_s @@ -9740,217 +13214,428 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + local.get $1 call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 local.get $4 + local.get $6 i32.const 20 i32.sub - local.tee $4 - local.get $4 + local.tee $6 + local.get $6 call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i64.const 50 i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|4 - local.get $0 + local.get $1 i64.const 50 i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/map/Map#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + call $~lib/util/hash/hash64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $5 + i32.const 4 + i32.shl + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i32.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=12 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $1 - call $~lib/map/Map#clear local.get $1 - i32.load offset=20 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $0 + i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 60 - i32.const 3 + i32.const 1616 + i32.const 1680 + i32.const 105 + i32.const 17 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) @@ -9961,23 +13646,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.set $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 local.tee $8 - local.set $7 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 24 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -9985,71 +13688,69 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $8 + local.get $2 i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 + local.get $6 + local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - local.get $3 + local.get $2 i64.load call $~lib/array/Array#__set local.get $1 @@ -10057,233 +13758,551 @@ i32.add local.set $1 end - local.get $9 + local.get $4 i32.const 1 i32.add - local.set $9 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + call $~lib/util/hash/hash64 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $3 + block $__inlined_func$~lib/map/Map#find + loop $while-continue|0 + local.get $3 + if + local.get $3 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $3 + i64.load + i64.eq + end + br_if $__inlined_func$~lib/map/Map#find + local.get $4 + i32.const -2 + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $3 + end + local.get $3 + if + local.get $3 + local.get $2 + i64.store offset=8 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 24 + i32.mul + i32.add + local.tee $3 + local.get $1 + i64.store + local.get $3 + local.get $2 + i64.store offset=8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $3 + local.get $0 + i32.load + local.get $5 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=16 + local.get $0 + local.get $3 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=12 + i32.const 1 + i32.or + i32.store offset=12 local.get $0 - local.get $1 - call $~lib/array/Array#set:length 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 $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric - (local $0 i64) - (local $1 i32) + (local $0 i32) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 23 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 + call $~lib/map/Map#set:buckets + local.get $0 i32.const 3 i32.store offset=4 - local.get $1 + local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 + call $~lib/map/Map#set:entries + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $0 + local.get $1 i64.const 100 i64.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 10 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i64.const 100 i64.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 20 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#keys - local.set $5 - local.get $1 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#values - local.set $7 + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 25 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $2 i32.const 3 i32.store offset=4 local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $2 i32.const 4 i32.store offset=12 @@ -10293,449 +14312,398 @@ 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 $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $6 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 local.get $5 + local.get $3 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $5 local.get $3 - call $~lib/array/Array#__get - local.set $0 - local.get $7 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1728 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + i32.load offset=4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $5 call $~lib/array/Array#__get - local.set $4 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $6 i32.const 20 i32.sub i64.extend_i32_s - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 + i32.store offset=4 + local.get $2 + local.get $1 + local.get $1 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 local.get $4 + local.get $6 i32.const 20 i32.sub - local.tee $4 - local.get $4 + local.tee $6 + local.get $6 call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 i64.const 50 i64.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.wrap_i64 i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end i64.const 0 - local.set $0 + local.set $1 loop $for-loop|4 - local.get $0 + local.get $1 i64.const 50 i64.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.wrap_i64 i32.const 10 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i64.const 1 i64.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/map/Map#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f32.load - f32.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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 f32) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f32.load - local.tee $8 - f32.store - local.get $2 - local.get $4 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $5 - local.get $8 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -10749,6 +14717,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -10772,19 +14743,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -10803,26 +14775,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=8 - local.get $2 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -10832,8 +14815,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -10841,34 +14824,56 @@ end local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result 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) (local $8 i32) - (local $9 i32) - (local $10 i32) + (local $9 f32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - local.tee $9 - local.set $8 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 27 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -10876,71 +14881,77 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $9 + local.get $2 i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 i32.shl - local.tee $7 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $7 + local.get $5 i32.store offset=8 local.get $0 - local.get $8 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $9 - local.get $10 - i32.gt_s + local.get $4 + local.get $8 + i32.lt_s if local.get $6 - local.get $10 + local.get $4 i32.const 12 i32.mul i32.add - local.tee $3 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 f32.load - local.set $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -10950,9 +14961,9 @@ i32.const 0 i32.lt_s if - i32.const 1568 - i32.const 1520 - i32.const 120 + i32.const 1248 + i32.const 1728 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -10961,181 +14972,74 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 call $~lib/array/ensureSize local.get $0 - local.get $3 + local.get $2 i32.store offset=12 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - local.get $4 + local.get $9 f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add local.set $1 - 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#set:length - local.get $0 - ) - (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 f32) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f32.load - local.tee $8 - f32.store - local.get $2 - local.get $4 - f32.load offset=4 - f32.store offset=4 - local.get $2 - local.get $5 - local.get $8 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=8 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $4 - i32.const 12 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.reinterpret_f32 call $~lib/util/hash/hash32 - local.tee $4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -11149,6 +15053,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -11172,19 +15079,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $5 local.get $3 + local.get $5 i32.const 12 i32.mul i32.add @@ -11210,21 +15118,32 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $0 i32.load i32.store offset=8 - local.get $4 + local.get $0 local.get $3 i32.store - local.get $5 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 f32) (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 + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -11234,6 +15153,10 @@ local.tee $2 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $2 @@ -11278,226 +15201,316 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $3 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric - (local $0 f32) - (local $1 i32) + (local $0 i32) + (local $1 f32) (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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 26 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 + call $~lib/map/Map#set:buckets + local.get $0 i32.const 3 i32.store offset=4 - local.get $1 + local.get $0 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 + call $~lib/map/Map#set:entries + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $0 + local.get $1 f32.const 100 f32.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f32_s i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1 f32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end f32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 f32.const 100 f32.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f32_s i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f32_s i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f32_s i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1 f32.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#keys - local.set $4 - local.get $1 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#values - local.set $7 + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 28 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $2 i32.const 3 i32.store offset=4 local.get $2 i32.const 48 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $2 i32.const 4 i32.store offset=12 @@ -11507,52 +15520,90 @@ 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 $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $6 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $5 local.get $3 - local.get $4 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 local.get $3 - local.get $4 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $4 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store local.get $3 + i32.load offset=4 + local.get $5 i32.const 2 i32.shl i32.add f32.load - 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 $7 - local.get $3 + i32.store offset=4 + local.get $7 + local.get $5 call $~lib/array/Array#__get - local.set $5 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $6 i32.const 20 i32.sub f32.convert_i32_s @@ -11560,412 +15611,307 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + local.get $1 call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $6 - local.get $5 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $6 + local.get $6 call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end f32.const 0 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 f32.const 50 f32.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f32_s i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1 f32.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end f32.const 0 - local.set $0 + local.set $1 loop $for-loop|4 - local.get $0 + local.get $1 f32.const 50 f32.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f32_s i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f32.const 1 f32.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/map/Map#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable - end - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=12 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f64.load - f64.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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 f64) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 4 - i32.shl - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if - local.get $4 - i32.load offset=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f64.load - local.tee $8 - f64.store - local.get $2 - local.get $4 - i32.load offset=8 - i32.store offset=8 - local.get $2 - local.get $5 - local.get $8 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=12 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $4 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i64.reinterpret_f64 call $~lib/util/hash/hash64 - local.tee $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $4 call $~lib/map/Map#find local.tee $3 if @@ -11979,6 +15925,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -12002,19 +15951,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $5 i32.const 1 i32.add i32.store offset=16 - local.get $4 local.get $3 + local.get $5 i32.const 4 i32.shl i32.add @@ -12033,26 +15983,37 @@ local.get $3 local.get $0 i32.load - local.get $5 + local.get $4 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $2 + local.tee $0 i32.load i32.store offset=12 - local.get $2 + local.get $0 local.get $3 i32.store - local.get $4 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 f64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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.store local.get $0 local.get $1 local.get $1 @@ -12062,8 +16023,8 @@ local.tee $0 i32.eqz if - i32.const 1408 - i32.const 1472 + i32.const 1616 + i32.const 1680 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -12071,34 +16032,56 @@ end local.get $0 i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - local.tee $9 - local.set $8 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 i32.const 30 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -12106,71 +16089,77 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $9 + local.get $2 i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1520 - i32.const 57 + i32.const 1456 + i32.const 1728 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 i32.shl - local.tee $7 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $7 + local.get $5 i32.store offset=8 local.get $0 - local.get $8 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $9 - local.get $10 - i32.gt_s + local.get $4 + local.get $8 + i32.lt_s if local.get $6 - local.get $10 + local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load offset=12 i32.const 1 i32.and i32.eqz if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 f64.load - local.set $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -12180,9 +16169,9 @@ i32.const 0 i32.lt_s if - i32.const 1568 - i32.const 1520 - i32.const 120 + i32.const 1248 + i32.const 1728 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -12191,182 +16180,74 @@ local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 3 call $~lib/array/ensureSize local.get $0 - local.get $3 + local.get $2 i32.store offset=12 end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 i32.const 3 i32.shl i32.add - local.get $4 + local.get $9 f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add local.set $1 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#set:length - local.get $0 - ) - (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 f64) - (local $9 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $7 - i32.ne - if local.get $4 - i32.load offset=16 i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $4 - f64.load - local.tee $8 - f64.store - local.get $2 - local.get $4 - f64.load offset=8 - f64.store offset=8 - local.get $2 - local.get $5 - local.get $8 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $9 - i32.load - i32.store offset=16 - local.get $9 - local.get $2 - i32.store - local.get $2 - i32.const 24 - i32.add - local.set $2 - end - local.get $4 - i32.const 24 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $4 - local.get $0 - i32.load - local.tee $2 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $4 - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $6 - i32.store offset=12 local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (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 $1 i64.reinterpret_f64 call $~lib/util/hash/hash64 - local.set $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and @@ -12381,7 +16262,7 @@ if local.get $3 i32.load offset=16 - local.tee $5 + local.tee $4 i32.const 1 i32.and if (result i32) @@ -12393,7 +16274,7 @@ f64.eq end br_if $__inlined_func$~lib/map/Map#find - local.get $5 + local.get $4 i32.const -2 i32.and local.set $3 @@ -12415,6 +16296,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -12438,19 +16322,20 @@ end call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store offset=4 local.get $0 local.get $0 i32.load offset=16 - local.tee $3 + local.tee $4 i32.const 1 i32.add i32.store offset=16 - local.get $5 local.get $3 + local.get $4 i32.const 24 i32.mul i32.add @@ -12469,28 +16354,39 @@ local.get $3 local.get $0 i32.load - local.get $4 + local.get $5 local.get $0 i32.load offset=4 i32.and i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $0 i32.load i32.store offset=16 - local.get $4 + local.get $0 local.get $3 i32.store - local.get $5 - call $~lib/rt/pure/__release end - local.get $0 - call $~lib/rt/pure/__retain + 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 f64) (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 + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 @@ -12500,6 +16396,10 @@ local.tee $2 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $2 @@ -12544,226 +16444,316 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $3 call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/map/testNumeric - (local $0 f64) - (local $1 i32) + (local $0 i32) + (local $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 $~lib/memory/__stack_pointer + i32.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 24 i32.const 29 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $1 + call $~lib/map/Map#set:buckets + local.get $0 i32.const 3 i32.store offset=4 - local.get $1 + local.get $0 i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $1 + call $~lib/map/Map#set:entries + local.get $0 i32.const 4 i32.store offset=12 - local.get $1 + local.get $0 i32.const 0 i32.store offset=16 - local.get $1 + local.get $0 i32.const 0 i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $0 + local.get $1 f64.const 100 f64.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f64_s i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 1 f64.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end f64.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 f64.const 100 f64.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f64_s i32.const 10 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f64_s i32.const 20 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f64_s i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 1 f64.add - local.set $0 + local.set $1 br $for-loop|1 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#keys - local.set $4 - local.get $1 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/map/Map#values - local.set $7 + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.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 24 i32.const 31 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $2 + i32.store + local.get $2 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $2 i32.const 3 i32.store offset=4 local.get $2 i32.const 96 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $2 i32.const 4 i32.store offset=12 @@ -12773,52 +16763,90 @@ 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 $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer call $~lib/map/Map#constructor - local.set $6 + local.tee $4 + i32.store offset=20 loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $5 local.get $3 - local.get $4 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $5 local.get $3 - local.get $4 i32.load offset=12 i32.ge_u if - i32.const 1568 - i32.const 1520 - i32.const 104 + i32.const 1248 + i32.const 1728 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end - local.get $4 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store + local.get $3 + i32.load offset=4 + local.get $5 i32.const 3 i32.shl i32.add f64.load - 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 $7 - local.get $3 + i32.store offset=4 + local.get $7 + local.get $5 call $~lib/array/Array#__get - local.set $5 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $6 i32.const 20 i32.sub f64.convert_i32_s @@ -12826,335 +16854,407 @@ i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $0 - local.get $0 + i32.store offset=4 + local.get $2 + local.get $1 + local.get $1 call $~lib/map/Map#set - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $6 - local.get $5 i32.const 20 i32.sub - local.tee $5 - local.get $5 + local.tee $6 + local.get $6 call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end f64.const 0 - local.set $0 + local.set $1 loop $for-loop|3 - local.get $0 + local.get $1 f64.const 50 f64.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#get + i32.store offset=4 local.get $0 + local.get $1 + call $~lib/map/Map#get + local.get $1 i32.trunc_f64_s i32.const 20 i32.add i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 1 f64.add - local.set $0 + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end f64.const 0 - local.set $0 + local.set $1 loop $for-loop|4 - local.get $0 + local.get $1 f64.const 50 f64.lt if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 + local.get $1 + local.get $1 i32.trunc_f64_s i32.const 10 i32.add call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/map/Map#delete local.get $1 + call $~lib/map/Map#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + local.get $1 call $~lib/map/Map#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 f64.const 1 f64.add - local.set $0 + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/map/Map#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - i32.const 1 - i32.and + i32.const 1073741820 + i32.gt_u if - i32.const 0 - i32.const 1120 - i32.const 122 - i32.const 14 + i32.const 1456 + i32.const 1504 + i32.const 49 + i32.const 43 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner2 - 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 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner2 $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=20 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=28 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - 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 - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - 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 - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric ) - (func $~lib/rt/pure/__visit (param $0 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/map/Map#set:buckets + 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 1612 - i32.lt_u + i32.const 268435455 + i32.gt_u if - return + i32.const 1456 + i32.const 1728 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 20 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + local.get $2 + call $~lib/map/Map#set:buckets + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/map/Map#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - call $~lib/rt/pure/decrement + 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 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/std/map.ts b/tests/compiler/std/map.ts index 4feaa40c45..baf1bee536 100644 --- a/tests/compiler/std/map.ts +++ b/tests/compiler/std/map.ts @@ -70,3 +70,5 @@ testNumeric(); testNumeric(); testNumeric(); testNumeric(); + +__collect(); diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index b2ad8479ee..2f5e216acd 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -6,10 +6,13 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f64_=>_none (func (param i32 f64))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) @@ -20,158 +23,494 @@ (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_f32_f32_=>_i32 (func (param i32 f32 f32) (result i32))) (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result 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) ",\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 252) "<\00\00\00\01\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 316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 364) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 428) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 476) ",\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 524) "<\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 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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\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/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) "<\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\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\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 684) ",\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 736) " \00\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\89\10\00\00\00\00\00B\08\00\00\00\00\00\00\02\t\00\00\00\00\00\00P\88\10\00\00\00\00\00\10\t\12\00\00\00\00\00\10\89\00\00\00\00\00\00B\00\00\00\00\00\00\00P\80\00\00\00\00\00\00\10\t\11\00\00\00\00\00\82\08\00\00\00\00\00\00\90\08\11\00\00\00\00\00\10\t\01\00\00\00\00\00\82\00\00\00\00\00\00\00\90\00\01\00\00\00\00\00\10\t\02\00\00\00\00\00\02\01\00\00\00\00\00\00\10\01\02\00\00\00\00\00\10\t\14\00\00\00\00\00\02\n\00\00\00\00\00\00\10\n\14\00\00\00\00\00\10\t\04\00\00\00\00\00\02\02\00\00\00\00\00\00\10\02\04\00\00\00\00\00\10\t2\00\00\00\00\00\02\19\00\00\00\00\00\00\10\192\00\00\00\00\00\10\t4\00\00\00\00\00\02\1a\00\00\00\00\00\00\10\1a4\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 588)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 17380)) (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 $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 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 - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end - local.get $2 + ) + (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/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.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 + 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 160 - i32.const 274 - i32.const 14 + i32.const 96 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 256 - i32.lt_u + 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 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 + ) + (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 $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=8 - end - local.get $7 + 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 $7 - local.get $6 - i32.store offset=4 + 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 $1 local.get $0 - local.set $10 + 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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 @@ -253,7 +592,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -277,8 +616,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -294,8 +633,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -348,7 +687,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -389,8 +728,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -423,7 +762,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -432,7 +771,7 @@ 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 @@ -454,8 +793,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -472,8 +811,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -531,8 +870,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -556,15 +895,15 @@ 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 @@ -592,7 +931,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -636,8 +975,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -679,8 +1018,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -712,8 +1051,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -750,13 +1089,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 @@ -767,7 +1106,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 @@ -794,6 +1133,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 @@ -836,7 +1177,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 @@ -924,34 +1265,362 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne 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 + i32.eqz + else + i32.const 0 end - ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) - local.get $0 - i32.const 1073741820 - i32.ge_u + 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 32 - i32.const 160 - i32.const 461 + i32.const 0 + i32.const 368 + i32.const 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1034,8 +1703,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1099,8 +1768,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1250,8 +1919,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1276,7 +1945,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 @@ -1289,7 +1958,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 @@ -1300,7 +1969,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 @@ -1330,7 +1999,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) @@ -1359,8 +2028,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1379,8 +2048,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1408,118 +2077,15 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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 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.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 - end - local.get $0 - ) - (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 + i32.store offset=16 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1734,74 +2300,163 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 224 - i32.const 272 - i32.const 49 - i32.const 43 + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new + 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 - i32.const 0 local.get $1 - call $~lib/memory/memory.fill + 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 - call $~lib/rt/pure/__retain + i32.const 20 + i32.add local.set $3 + local.get $3 + i32.const 0 local.get $0 - call $~lib/rt/pure/__release + call $~lib/memory/memory.fill local.get $3 ) - (func $~lib/map/Map#constructor (param $0 i32) (result 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.get $1 + i32.eqz + if + return + end + i32.const 1 + drop local.get $0 i32.eqz if - i32.const 24 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.const 96 + i32.const 290 + 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/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 - local.get $0 ) (func $~lib/util/hash/hash8 (param $0 i32) (result i32) i32.const -2128831035 @@ -1864,34 +2519,20 @@ end i32.const 0 ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 ) (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -1907,28 +2548,40 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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.set $5 + local.tee $5 + i32.store offset=4 local.get $0 i32.load offset=8 local.set $6 @@ -1963,11 +2616,11 @@ local.set $12 local.get $11 local.get $12 - i32.store8 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 i32.load offset=4 - i32.store offset=4 + call $~lib/map/MapEntry#set:value block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 @@ -1997,7 +2650,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -2014,336 +2667,53 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + 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:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (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 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 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 0 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end local.get $1 i32.const 0 - 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 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - local.get $3 + local.get $1 i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - local.get $2 + 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 - 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 160 - 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) @@ -3598,195 +3968,50 @@ 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) + (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 $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 + local.get $0 + i32.const 20 + i32.sub + local.set $2 local.get $1 + local.get $2 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.const 16 + i32.sub i32.le_u if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop + local.get $2 local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 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 32 - i32.const 96 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 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.tee $4 local.get $2 - i32.const 16 - i32.add + 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/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3808,8 +4033,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 496 + i32.const 432 + i32.const 704 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3824,7 +4049,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/pure/__renew + call $~lib/rt/itcms/__renew local.set $6 local.get $6 local.get $3 @@ -3844,6 +4069,10 @@ local.get $0 local.get $6 i32.store offset=4 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link end local.get $0 local.get $5 @@ -3851,8 +4080,6 @@ end ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -3861,264 +4088,231 @@ 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 + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + local.get $1 + i32.const 0 + call $~lib/array/ensureSize local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + call $~lib/array/Array#set:length_ ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop + local.get $1 + i32.store local.get $0 local.get $1 i32.const 0 - call $~lib/array/ensureSize + 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=12 + i32.store offset=4 ) - (func $~lib/map/Map#keys (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) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - local.set $1 + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=16 - local.set $2 - i32.const 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 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 + i32.store i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + drop ) - (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) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 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 $1 + i32.const 2 + call $~lib/array/ensureSize local.get $0 - i32.const 0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=8 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 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 + i32.store offset=20 + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) 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 + local.get $1 i32.store local.get $0 - local.get $3 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.get $2 + local.get $1 i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store offset=20 ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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 - drop + i32.shl + i32.add + i32.load8_s + ) + (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 - local.get $2 - i32.store + i32.load ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_s + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + i32.store8 offset=1 ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 2 - call $~lib/array/ensureSize + i32.store8 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + i32.store offset=4 ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4126,220 +4320,205 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 + local.get $4 + i32.const 8 + 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 8 + 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 $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 + local.get $6 + local.set $10 + local.get $10 + i32.load offset=4 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.load8_s offset=1 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $13 local.get $3 - local.get $4 - local.tee $8 - i32.const 1 + local.get $13 + i32.const 4 + i32.mul i32.add - local.set $4 + local.set $14 + local.get $11 + local.get $14 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $14 local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 8 i32.add - local.set $5 - br $for-loop|0 + local.set $6 + br $while-continue|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + local.get $1 + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.const 4 - i32.store offset=12 + local.get $5 + call $~lib/map/Map#set:entries local.get $0 - i32.const 0 - i32.store offset=16 + local.get $4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - i32.const 0 - i32.store offset=20 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#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 + local.set $1 + local.get $1 local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + local.set $1 + local.get $1 local.get $0 - i32.const 0 - i32.store offset=20 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + i32.load + local.get $2 local.get $0 i32.load offset=4 - local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_s - ) - (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 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (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#__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 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul + i32.and + i32.const 4 + i32.mul i32.add i32.load local.set $3 @@ -4349,7 +4528,7 @@ local.get $4 if local.get $3 - i32.load offset=4 + i32.load offset=8 local.set $5 local.get $5 i32.const 1 @@ -4357,12 +4536,8 @@ i32.eqz if (result i32) local.get $3 - i32.load8_s + i32.load local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s i32.eq else i32.const 0 @@ -4382,7 +4557,22 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4396,35 +4586,47 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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 8 + i32.const 12 i32.mul i32.add local.set $7 @@ -4440,7 +4642,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -4448,16 +4650,16 @@ local.get $8 local.set $11 local.get $10 - i32.load8_s + i32.load local.set $12 local.get $11 local.get $12 - i32.store8 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load8_s offset=1 - i32.store8 offset=1 - block $~lib/util/hash/HASH|inlined.5 (result i32) + i32.load offset=4 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $12 local.set $13 i32.const 0 @@ -4466,13 +4668,21 @@ drop i32.const 0 drop + i32.const 4 i32.const 1 - i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 i32.eq drop local.get $13 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.5 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.get $1 i32.and @@ -4486,235 +4696,120 @@ local.get $11 local.get $14 i32.load - i32.store offset=4 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store local.get $8 - i32.const 8 + i32.const 12 i32.add local.set $8 end local.get $6 - i32.const 8 + i32.const 12 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + 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:size (param $0 i32) (result i32) local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4743,8 +4838,10 @@ i32.eqz if (result i32) local.get $3 - i32.load + i32.load8_u local.get $1 + i32.const 255 + i32.and i32.eq else i32.const 0 @@ -4764,7 +4861,22 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store8 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4778,28 +4890,40 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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.set $5 + local.tee $5 + i32.store offset=4 local.get $0 i32.load offset=8 local.set $6 @@ -4830,16 +4954,16 @@ local.get $8 local.set $11 local.get $10 - i32.load + i32.load8_u local.set $12 local.get $11 local.get $12 - i32.store + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -4848,21 +4972,13 @@ drop i32.const 0 drop - i32.const 4 i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 + i32.const 1 i32.eq drop local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -4876,7 +4992,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -4893,324 +5009,194 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 + 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: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.tee $13 - local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 + local.get $1 i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - local.get $4 + 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 0 + i32.shl + i32.add + local.get $2 + i32.store8 + i32.const 0 + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - local.set $4 + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + local.get $1 + i32.store offset=8 local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub + local.get $1 i32.store offset=20 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 + local.get $1 + i32.const 0 + i32.shl i32.add - i32.const 4 - local.tee $2 + i32.load8_u + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.load offset=20 - local.tee $5 + i32.load local.get $2 - local.get $5 - i32.gt_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 $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 local.get $4 - call $~lib/map/Map#rehash + if + local.get $3 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end end - i32.const 1 + i32.const 0 ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store + i32.store8 offset=1 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + i32.store8 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=20 + local.get $1 + i32.store offset=4 ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5220,544 +5206,570 @@ (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $1 - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 + local.get $4 + i32.const 8 + 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 8 + 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 $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $6 + local.set $10 + local.get $10 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 + local.get $8 + local.set $11 + local.get $10 + i32.load8_u + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i32.load8_u offset=1 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.5 + end + 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 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.add + local.set $8 end - local.get $1 - i32.const 1 + local.get $6 + i32.const 8 i32.add - local.set $1 - br $for-loop|1 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) + local.get $0 i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/util/hash/hash16 (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if - i32.const 0 - i32.const 336 + if (result i32) + local.get $3 + i32.load16_s + local.get $1 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if + i32.shl + i32.const 16 + i32.shr_s + i32.eq + else i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#keys - local.set $1 + local.get $1 + i32.store16 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#values - local.set $4 + local.get $1 + i32.store offset=8 + ) + (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) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $5 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 - call $~lib/map/Map#constructor + 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 - i32.const 0 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add local.set $7 - loop $for-loop|4 + local.get $5 + local.set $8 + loop $while-continue|0 + local.get $6 local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 - if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get + i32.ne + local.set $9 + local.get $9 + if + local.get $6 local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i32.load16_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 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + 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 $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 + i32.const 12 i32.add - local.set $7 - br $for-loop|4 + 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#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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: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 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.const 1 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 8 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + local.get $1 + i32.store local.get $0 + local.get $1 i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 + i32.load offset=12 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5778,7 +5790,7 @@ local.get $4 if local.get $3 - i32.load offset=8 + i32.load offset=4 local.set $5 local.get $5 i32.const 1 @@ -5786,10 +5798,12 @@ i32.eqz if (result i32) local.get $3 - i32.load8_u + i32.load16_s local.get $1 - i32.const 255 - i32.and + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.eq else i32.const 0 @@ -5809,34 +5823,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.store16 offset=2 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5850,35 +5852,47 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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.const 8 i32.mul i32.add local.set $7 @@ -5894,7 +5908,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz @@ -5902,16 +5916,16 @@ local.get $8 local.set $11 local.get $10 - i32.load8_u + i32.load16_s local.set $12 local.get $11 local.get $12 - i32.store8 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load16_s offset=2 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) local.get $12 local.set $13 i32.const 0 @@ -5920,13 +5934,17 @@ drop i32.const 0 drop + i32.const 2 i32.const 1 - i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 i32.eq drop local.get $13 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and @@ -5940,583 +5958,119 @@ local.get $11 local.get $14 i32.load - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 8 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 8 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (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 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/map/Map#clear (param $0 i32) local.get $0 i32.const 0 - i32.store + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 i32.const 0 - i32.store offset=4 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=8 + call $~lib/map/Map#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=12 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 1073741820 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $0 local.get $1 i32.const 0 - 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 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - local.get $3 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.get $2 + local.get $1 i32.store offset=8 local.get $0 local.get $1 - i32.store offset=12 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (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) - i32.const 0 - drop + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 0 - i32.shl - i32.add - local.get $2 - i32.store8 + i32.store offset=16 ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 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 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - 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#__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#__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 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.store offset=20 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 i32.load local.get $2 @@ -6534,7 +6088,7 @@ local.get $4 if local.get $3 - i32.load offset=4 + i32.load offset=8 local.set $5 local.get $5 i32.const 1 @@ -6542,9 +6096,9 @@ i32.eqz if (result i32) local.get $3 - i32.load8_u + i32.load16_u local.get $1 - i32.const 255 + i32.const 65535 i32.and i32.eq else @@ -6565,49 +6119,76 @@ end i32.const 0 ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (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) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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 8 + i32.const 12 i32.mul i32.add local.set $7 @@ -6623,7 +6204,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -6631,16 +6212,16 @@ local.get $8 local.set $11 local.get $10 - i32.load8_u + i32.load16_u local.set $12 local.get $11 local.get $12 - i32.store8 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load8_u offset=1 - i32.store8 offset=1 - block $~lib/util/hash/HASH|inlined.5 (result i32) + i32.load offset=4 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -6649,13 +6230,17 @@ drop i32.const 0 drop - i32.const 1 + i32.const 2 i32.const 1 i32.eq drop + i32.const 2 + i32.const 2 + i32.eq + drop local.get $13 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.5 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -6669,876 +6254,474 @@ local.get $11 local.get $14 i32.load - i32.store offset=4 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store local.get $8 - i32.const 8 + i32.const 12 i32.add local.set $8 end local.get $6 - i32.const 8 + i32.const 12 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $3 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $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 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store8 offset=1 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store8 - local.get $5 - local.get $2 - i32.store8 offset=1 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) 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.set $4 - local.get $4 + i32.load offset=4 + local.get $1 i32.const 1 + i32.shl i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/map/Map#rehash - end + i32.store16 + i32.const 0 + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $3 + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 local.get $3 + local.set $4 + local.get $4 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 255 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1 i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has i32.eqz - if + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store16 offset=2 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store16 + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (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) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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 - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#keys - local.set $1 - local.get $0 - call $~lib/map/Map#values + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor + local.get $4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store offset=4 + local.get $0 + i32.load offset=8 local.set $6 - i32.const 0 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + i32.mul + i32.add local.set $7 - loop $for-loop|4 + local.get $5 + local.set $8 + loop $while-continue|0 + local.get $6 local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 + i32.ne + local.set $9 + local.get $9 if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get + local.get $6 local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i32.load16_u + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i32.load16_u offset=2 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.5 + end + 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 8 + i32.add + local.set $8 end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 + i32.const 8 i32.add - local.set $7 - br $for-loop|4 + 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#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 255 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end + 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:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 255 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - call $~lib/map/Map#clear + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - call $~lib/map/Map#get:size i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + call $~lib/map/Map#set:entriesOffset local.get $0 - call $~lib/rt/pure/__release + i32.const 0 + call $~lib/map/Map#set:entriesCount ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=12 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 i32.const 0 i32.const 4 i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/map/Map#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (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/hash/hash16 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + i32.store offset=12 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -7567,12 +6750,8 @@ i32.eqz if (result i32) local.get $3 - i32.load16_s + i32.load local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s i32.eq else i32.const 0 @@ -7592,40 +6771,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.store offset=4 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7639,28 +6800,40 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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.set $5 + local.tee $5 + i32.store offset=4 local.get $0 i32.load offset=8 local.set $6 @@ -7691,16 +6864,16 @@ local.get $8 local.set $11 local.get $10 - i32.load16_s + i32.load local.set $12 local.get $11 local.get $12 - i32.store16 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -7709,17 +6882,21 @@ drop i32.const 0 drop - i32.const 2 + i32.const 4 i32.const 1 i32.eq drop - i32.const 2 + i32.const 4 i32.const 2 i32.eq drop + i32.const 4 + i32.const 4 + i32.eq + drop local.get $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -7733,7 +6910,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -7750,575 +6927,513 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 + 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: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.tee $13 - local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 + local.get $1 i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - local.get $4 + 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:length (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end end - local.set $4 + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end - local.get $0 - call $~lib/rt/pure/__retain + i32.store offset=4 ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + i32.store ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=8 ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 12 - 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 1 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 - i32.shl + i32.add local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 + global.get $~lib/memory/__stack_pointer 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.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $4 + global.get $~lib/memory/__stack_pointer i32.const 0 - drop + 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=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.store16 - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + i32.load offset=8 + local.set $6 + local.get $6 local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s + 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 - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 + 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.load + 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 + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $13 local.get $3 - local.get $4 - local.tee $8 - i32.const 1 + local.get $13 + i32.const 4 + i32.mul i32.add - local.set $4 + local.set $14 + local.get $11 + local.get $14 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $14 local.get $8 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 12 i32.add - local.set $5 - br $for-loop|0 + local.set $6 + br $while-continue|0 end end + local.get $0 local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + call $~lib/map/Map#set:buckets local.get $0 - i32.load offset=8 - local.set $1 + local.get $1 + call $~lib/map/Map#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/map/Map#set:entries local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 local.get $4 - call $~lib/array/Array#set:length - local.get $3 + 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#constructor (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 i32.const 0 i32.const 4 - i32.const 8 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/map/Map#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 - local.get $0 + call $~lib/map/Map#set:entriesCount ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $1 + i32.store local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=8 local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 i32.const 0 - drop + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/util/hash/hash64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.wrap_i64 + local.set $1 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $2 + i32.const -2128831035 + local.set $3 + local.get $3 + local.get $1 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 local.get $2 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -8339,7 +7454,7 @@ local.get $4 if local.get $3 - i32.load offset=4 + i32.load offset=12 local.set $5 local.get $5 i32.const 1 @@ -8347,13 +7462,9 @@ i32.eqz if (result i32) local.get $3 - i32.load16_s + i64.load local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq + i64.eq else i32.const 0 end @@ -8372,7 +7483,22 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -8383,38 +7509,51 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $12 i64) + (local $13 i64) (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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 8 + i32.const 16 i32.mul i32.add local.set $7 @@ -8430,7 +7569,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=4 + i32.load offset=12 i32.const 1 i32.and i32.eqz @@ -8438,16 +7577,16 @@ local.get $8 local.set $11 local.get $10 - i32.load16_s + i64.load local.set $12 local.get $11 local.get $12 - i32.store16 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load16_s offset=2 - i32.store16 offset=2 - block $~lib/util/hash/HASH|inlined.5 (result i32) + i32.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -8456,912 +7595,479 @@ drop i32.const 0 drop - i32.const 2 + i32.const 8 i32.const 1 i32.eq drop + i32.const 8 i32.const 2 - 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 $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.5 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $13 + local.set $14 local.get $3 - local.get $13 + local.get $14 i32.const 4 i32.mul i32.add - local.set $14 + local.set $15 local.get $11 - local.get $14 + local.get $15 i32.load - i32.store offset=4 - local.get $14 + call $~lib/map/MapEntry#set:taggedNext + local.get $15 local.get $8 i32.store local.get $8 - i32.const 8 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 8 + i32.const 16 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $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 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + 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 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 + local.get $1 + i32.const 3 + i32.shl i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/map/Map#rehash - end - i32.const 1 + i64.store + i32.const 0 + drop ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (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) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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 - end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 local.set $4 local.get $4 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $3 + i32.load offset=16 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i64) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i64.store offset=8 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i64) local.get $0 - call $~lib/map/Map#keys - local.set $1 + local.get $1 + i64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 + local.get $1 + i32.store offset=16 + ) + (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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $6 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $7 - loop $for-loop|4 - local.get $7 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 + local.get $4 + i32.const 24 + 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 24 + 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 $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get + local.get $6 local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has + i32.load offset=16 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i64.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $13 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 24 + i32.add + local.set $8 end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $6 - local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 - i32.const 1 + i32.const 24 i32.add - local.set $7 - br $for-loop|4 + 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#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|6 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 14 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 i32.const 0 i32.const 4 - i32.const 12 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/map/Map#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store offset=4 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -9382,7 +8088,7 @@ local.get $4 if local.get $3 - i32.load offset=8 + i32.load offset=12 local.set $5 local.get $5 i32.const 1 @@ -9390,11 +8096,9 @@ i32.eqz if (result i32) local.get $3 - i32.load16_u + i64.load local.get $1 - i32.const 65535 - i32.and - i32.eq + i64.eq else i32.const 0 end @@ -9413,38 +8117,22 @@ end i32.const 0 ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne + i32.store offset=8 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -9455,38 +8143,51 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $12 i64) + (local $13 i64) (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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.const 16 i32.mul i32.add local.set $7 @@ -9502,7 +8203,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=8 + i32.load offset=12 i32.const 1 i32.and i32.eqz @@ -9510,16 +8211,16 @@ local.get $8 local.set $11 local.get $10 - i32.load16_u + i64.load local.set $12 local.get $11 local.get $12 - i32.store16 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) + i32.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -9528,473 +8229,241 @@ drop i32.const 0 drop - i32.const 2 + i32.const 8 i32.const 1 i32.eq drop + i32.const 8 i32.const 2 - 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 $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $13 + local.set $14 local.get $3 - local.get $13 + local.get $14 i32.const 4 i32.mul i32.add - local.set $14 + local.set $15 local.get $11 - local.get $14 + local.get $15 i32.load - i32.store offset=8 - local.get $14 + call $~lib/map/MapEntry#set:taggedNext + local.get $15 local.get $8 i32.store local.get $8 - i32.const 12 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 12 + i32.const 16 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $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 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + i32.store offset=4 ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=8 ) - (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) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 16 - i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=8 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 1073741820 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 1 - 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 + i32.store offset=20 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 + i32.load offset=12 ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 - i32.const 1 + i32.const 3 i32.shl i32.add - local.get $2 - i32.store16 - ) - (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 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + i64.load ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (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 $0 - i32.load offset=8 - local.set $1 local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 + i32.load local.get $2 - call $~lib/array/Array#constructor + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - local.get $1 + local.get $3 + i32.load offset=16 + local.set $5 local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 i32.const 1 i32.and i32.eqz + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else + i32.const 0 + end if local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set + return end local.get $5 i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + i32.const 0 ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store offset=8 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i64) + local.get $0 + local.get $1 + i64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10002,138 +8471,237 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 + local.get $4 + i32.const 24 + 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 24 + 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 $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 + local.get $6 + local.set $10 + local.get $10 + i32.load offset=16 i32.const 1 i32.and i32.eqz if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 + local.set $11 + local.get $10 + i64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i64.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $13 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 24 + i32.add + local.set $8 + end + local.get $6 + i32.const 24 i32.add - local.set $5 - br $for-loop|0 + 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/array/Array#set:length - local.get $3 + 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#constructor (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 16 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/map/Map#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 i32.const 0 i32.const 4 - i32.const 8 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/map/Map#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (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#get:length (param $0 i32) (result i32) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 + local.get $1 + i32.store offset=4 ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.store offset=20 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -10154,7 +8722,7 @@ local.get $4 if local.get $3 - i32.load offset=4 + i32.load offset=8 local.set $5 local.get $5 i32.const 1 @@ -10162,11 +8730,9 @@ i32.eqz if (result i32) local.get $3 - i32.load16_u + f32.load local.get $1 - i32.const 65535 - i32.and - i32.eq + f32.eq else i32.const 0 end @@ -10185,7 +8751,22 @@ end i32.const 0 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 f32) + local.get $0 + local.get $1 + f32.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -10196,38 +8777,51 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $12 f32) + (local $13 f32) (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 + i32.const 12 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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 8 + i32.const 12 i32.mul i32.add local.set $7 @@ -10243,7 +8837,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -10251,1008 +8845,540 @@ local.get $8 local.set $11 local.get $10 - i32.load16_u + f32.load local.set $12 local.get $11 local.get $12 - i32.store16 + call $~lib/map/MapEntry#set:key local.get $11 local.get $10 - i32.load16_u offset=2 - i32.store16 offset=2 - block $~lib/util/hash/HASH|inlined.5 (result i32) + i32.load offset=4 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 drop i32.const 0 drop - i32.const 0 - drop - i32.const 2 i32.const 1 - i32.eq drop - i32.const 2 - i32.const 2 + i32.const 4 + i32.const 4 i32.eq drop local.get $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.5 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $13 + local.set $14 local.get $3 - local.get $13 + local.get $14 i32.const 4 i32.mul i32.add - local.set $14 + local.set $15 local.get $11 - local.get $14 + local.get $15 i32.load - i32.store offset=4 - local.get $14 + call $~lib/map/MapEntry#set:taggedNext + local.get $15 local.get $8 i32.store local.get $8 - i32.const 8 + i32.const 12 i32.add local.set $8 end local.get $6 - i32.const 8 + i32.const 12 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/map/Map#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/map/Map#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/map/Map#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $3 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.4 - end - local.set $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 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 0 - drop - local.get $5 - local.get $2 - i32.store16 offset=2 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 8 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store16 - local.get $5 - local.get $2 - i32.store16 offset=2 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=4 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + 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 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 + local.get $1 + i32.const 2 + i32.shl i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/map/Map#rehash - end - i32.const 1 + f32.store + i32.const 0 + drop ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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 - end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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.lt_u + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 local.set $4 local.get $4 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.const 65535 + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has i32.eqz - if + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.const 65535 - i32.and - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 f32) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + f32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 f32) local.get $0 - call $~lib/map/Map#keys - local.set $1 + local.get $1 + f32.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/map/Map#values - local.set $4 - i32.const 0 - call $~lib/map/Map#constructor - local.set $5 - i32.const 0 - call $~lib/map/Map#constructor - local.set $6 + local.get $1 + i32.store offset=8 + ) + (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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 f32) + (local $13 f32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $7 - loop $for-loop|4 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $8 - local.get $8 + i32.ne + local.set $9 + local.get $9 if - local.get $1 - local.get $7 - call $~lib/array/Array#__get - local.set $9 - local.get $4 - local.get $7 - call $~lib/array/Array#__get - local.set $10 - local.get $0 - local.get $9 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - local.get $9 - local.get $9 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $6 + local.set $10 local.get $10 - i32.const 20 - i32.sub - local.get $10 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $7 + i32.load offset=8 i32.const 1 - i32.add - local.set $7 - br $for-loop|4 - end - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $7 - loop $for-loop|6 - local.get $7 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $10 - local.get $10 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#get - i32.const 20 - local.get $7 - i32.const 65535 i32.and - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz i32.eqz if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + f32.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + f32.load offset=4 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $13 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 12 + i32.add + local.set $8 end - local.get $7 - i32.const 1 + local.get $6 + i32.const 12 i32.add - local.set $7 - br $for-loop|6 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + 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:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) + local.get $0 i32.const 0 - local.set $7 - loop $for-loop|8 - local.get $7 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.const 10 - local.get $7 - i32.const 65535 - i32.and - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|8 - end - end + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - call $~lib/map/Map#clear + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - call $~lib/map/Map#get:size i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.store local.get $0 - call $~lib/rt/pure/__release + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - call $~lib/map/Map#find i32.const 0 - i32.ne + call $~lib/rt/itcms/__link ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + i32.store offset=12 ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (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 $0 - i32.load offset=8 - local.set $1 local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 + i32.load local.get $2 - call $~lib/array/Array#constructor + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - local.get $1 + local.get $3 + i32.load offset=12 + local.set $5 local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 i32.const 1 i32.and i32.eqz + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else + i32.const 0 + end if local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set + return end local.get $5 i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + i32.const 0 ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 f64) + local.get $0 + local.get $1 + f64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -11260,1720 +9386,1499 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 f64) + (local $13 f64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 + local.get $4 + i32.const 16 + 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 16 + 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 $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 + local.get $6 + local.set $10 + local.get $10 + i32.load offset=12 i32.const 1 i32.and i32.eqz if + local.get $8 + local.set $11 + local.get $10 + f64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + i32.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $13 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $14 local.get $3 - local.get $4 - local.tee $8 - i32.const 1 + local.get $14 + i32.const 4 + i32.mul i32.add - local.set $4 + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $15 local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 16 i32.add - local.set $5 - br $for-loop|0 + 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/array/Array#set:length - local.get $3 + 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/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/map/Map#get:size (param $0 i32) (result i32) local.get $0 - i32.load offset=12 + i32.load offset=20 ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (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 - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 + 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 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + 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#__uset (param $0 i32) (param $1 i32) (param $2 f64) local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 + local.get $1 + i32.const 3 + i32.shl i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/map/Map#rehash - end - i32.const 1 + f64.store + i32.const 0 + drop ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + ) + (func $~lib/map/Map#set:buckets (param $0 i32) (param $1 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.get $3 + i32.load offset=16 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 f64) local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + f64.store offset=8 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 f64) + local.get $0 + local.get $1 + f64.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 f64) + (local $13 f64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 24 + 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 24 + 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=16 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + f64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/map/MapEntry#set:key + local.get $11 + local.get $10 + f64.load offset=8 + call $~lib/map/MapEntry#set:value + block $~lib/util/hash/HASH|inlined.5 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $13 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.5 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 24 + i32.add + local.set $8 end - local.get $1 - i32.const 1 + local.get $6 + i32.const 24 i32.add - local.set $1 - br $for-loop|1 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/map/Map#set:buckets local.get $0 - call $~lib/map/Map#keys - local.set $1 + 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:size (param $0 i32) (result i32) + local.get $0 + i32.load offset=20 + ) + (func $~lib/map/Map#clear (param $0 i32) local.get $0 - call $~lib/map/Map#values - local.set $2 i32.const 0 - call $~lib/map/Map#constructor - local.set $3 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 i32.const 0 - call $~lib/map/Map#constructor - local.set $4 + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 i32.const 0 - local.set $5 - loop $for-loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - call $~lib/array/Array#__get - local.set $7 - local.get $2 - local.get $5 - call $~lib/array/Array#__get - local.set $8 - local.get $0 - local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + ) + (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 - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#has - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $3 - local.get $7 - local.get $7 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $4 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|2 end end - local.get $3 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - 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 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|3 - local.get $5 - i32.const 50 - i32.lt_s - local.set $6 - local.get $6 + i32.ne + local.set $0 + local.get $0 if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#get - i32.const 20 - local.get $5 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete + call $~lib/rt/itcms/step drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|3 + br $while-continue|1 end end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold i32.const 0 - local.set $5 - loop $for-loop|4 - local.get $5 - i32.const 50 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 10 - local.get $5 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - 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 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end + drop + ) + (func $start:std/map + 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 $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $std/map/testNumeric + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 592 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~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 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - call $~lib/map/Map#clear + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - call $~lib/map/Map#get:size + i32.load offset=8 + local.set $2 i32.const 0 - i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + else i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $1 - call $~lib/rt/pure/__release + drop local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/map/Map#__visit ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - 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 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 + drop local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + 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 - i32.store offset=12 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.const 0 - i32.store offset=16 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 + i32.load offset=8 + local.set $2 i32.const 0 - i32.store offset=20 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/map/Map#__visit ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__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/map/Map#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 + i32.load local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + else + i32.const 0 end - call $~lib/map/Map#find - i32.const 0 - i32.ne + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (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 + i32.load local.get $1 - i32.const 1 - i32.add + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 local.set $2 i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 i32.load offset=8 - local.set $6 - local.get $6 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) 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.load - local.set $12 - local.get $11 - local.get $12 - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - 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 - i32.store offset=8 - 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 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release + 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/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end - local.get $12 - i32.store + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=4 + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - local.tee $13 - local.get $5 - local.tee $14 - local.get $13 i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 end - local.get $14 - i32.store offset=8 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 - local.get $4 - i32.store offset=12 + local.get $1 + call $~lib/map/Map#__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 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + else + i32.const 0 end - local.set $4 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=4 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/pure/__release end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + call $~lib/map/Map#__visit ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $0 + i32.load local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 + call $~lib/rt/itcms/__visit ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 18 - 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 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 + i32.load offset=8 + local.set $2 i32.const 0 - i32.store offset=8 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) 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 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load local.get $1 - i32.const 2 - i32.shl + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 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 + if (result i32) + i32.const 1 + else + i32.const 0 end - local.get $5 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 + drop local.get $2 - i32.store offset=8 - local.get $0 local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/map/Map#__visit ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 drop local.get $0 - i32.load offset=4 + i32.load local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else i32.const 0 - i32.lt_s - if - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + call $~lib/map/Map#__visit ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load offset=12 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 local.set $2 + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 drop local.get $0 + i32.load local.get $1 - i32.const 2 - call $~lib/array/ensureSize + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#__visit ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map#__visit (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 $0 - i32.load offset=8 - local.set $1 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=16 + i32.load offset=8 local.set $2 i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + if (result i32) + i32.const 1 + else + i32.const 0 end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/map/Map#__visit (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 $0 - i32.load offset=8 - local.set $1 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=16 + i32.load offset=8 local.set $2 i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 12 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=4 - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + if (result i32) + i32.const 1 + else + i32.const 0 end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/map/Map#__visit ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $0 - i32.load offset=12 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/array/Array#__visit ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) (local $2 i32) + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 544 - i32.const 496 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget + i32.load offset=8 local.set $2 i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end drop local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/map/Map + block $~lib/map/Map + block $~lib/map/Map + block $~lib/array/Array + block $~lib/array/Array + block $~lib/map/Map + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + 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/array/Array $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return + end + local.get $0 local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 + call $~lib/map/Map~visit return end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return end + local.get $0 + local.get $1 + call $~lib/map/Map~visit + return end - i32.const 0 + 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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 + (func $~start + call $start:std/map + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17408 + i32.const 17456 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - 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.load - local.set $12 - local.get $11 - local.get $12 - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.5 - end - 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 - i32.store offset=8 - 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 + i32.store local.get $0 - local.tee $11 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 i32.store - local.get $0 + local.get $3 local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end - local.get $14 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 + call $~lib/map/Map#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 i32.const 0 @@ -12982,35 +10887,36 @@ drop i32.const 0 drop - i32.const 4 i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 + i32.const 1 i32.eq drop local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - i32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -13019,6 +10925,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -13039,12 +10950,13 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store offset=4 local.get $3 local.get $0 local.get $0 @@ -13052,7 +10964,7 @@ local.tee $6 i32.const 1 i32.add - i32.store offset=16 + call $~lib/map/Map#set:entriesOffset local.get $6 i32.const 12 i32.mul @@ -13060,16 +10972,20 @@ local.set $5 local.get $5 local.get $1 - i32.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - i32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -13083,28 +10999,39 @@ local.get $5 local.get $6 i32.load - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $6 local.get $5 i32.store - local.get $3 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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/map/Map#delete (param $0 i32) (param $1 i32) (result i32) + (func $~lib/map/Map#get (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 @@ -13113,130 +11040,92 @@ drop i32.const 0 drop - i32.const 4 i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 + i32.const 1 i32.eq drop local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.6 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz if - i32.const 0 - return + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 local.get $3 - 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.set $4 - local.get $4 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - local.tee $2 + 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=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_u - select + i32.load offset=12 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 + if + local.get $1 + i32.const 0 i32.lt_s - else + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add i32.const 0 - end - if + call $~lib/array/ensureSize local.get $0 - local.get $4 - call $~lib/map/Map#rehash + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + local.get $3 local.get $1 - i32.store offset=8 - local.get $0 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/map/testNumeric - (local $0 i32) + (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13245,904 +11134,522 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 - local.set $1 + local.set $4 + i32.const 0 + local.set $5 loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_u - local.set $2 + local.get $5 local.get $2 + i32.lt_s + local.set $6 + local.get $6 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 local.get $1 + local.get $5 + i32.const 12 + i32.mul i32.add - i32.eq + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load8_s + call $~lib/array/Array#__set end - local.get $1 + local.get $5 i32.const 1 i32.add - local.set $1 + local.set $5 br $for-loop|0 end end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $for-loop|1 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if local.get $1 - i32.const 100 - i32.lt_u - local.set $2 - local.get $2 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - 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|1 + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/map/Map#keys + i32.load offset=8 local.set $1 local.get $0 - call $~lib/map/Map#values + i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $3 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 - call $~lib/map/Map#constructor local.set $4 i32.const 0 local.set $5 - loop $for-loop|2 + loop $for-loop|0 local.get $5 - local.get $1 - call $~lib/array/Array#get:length + local.get $2 i32.lt_s local.set $6 local.get $6 if local.get $1 local.get $5 - call $~lib/array/Array#__get + i32.const 12 + i32.mul + i32.add local.set $7 - local.get $2 - local.get $5 - call $~lib/array/Array#__get - local.set $8 - local.get $0 local.get $7 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#has + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=4 + call $~lib/array/Array#__set end - local.get $3 - local.get $7 - local.get $7 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $4 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 i32.const 1 i32.add local.set $5 - br $for-loop|2 + br $for-loop|0 end end local.get $3 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 0 - i32.const 336 - i32.const 36 - i32.const 3 + i32.const 224 + i32.const 704 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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#__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 0 - i32.const 336 - i32.const 37 - i32.const 3 + i32.const 224 + i32.const 704 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 i32.const 0 + 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/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find local.set $5 - loop $for-loop|3 + local.get $5 + if local.get $5 - i32.const 50 - i32.lt_u - local.set $6 - local.get $6 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#get - i32.const 20 - local.get $5 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop + i32.load offset=20 local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|3 + call $~lib/map/Map#rehash end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|4 + drop local.get $5 - i32.const 50 - i32.lt_u + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add local.set $6 + local.get $5 local.get $6 - if - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.const 10 - local.get $5 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $5 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - 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 - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 20 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store end local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 - local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (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 - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=12 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 - local.set $2 + local.set $3 i32.const 0 drop i32.const 0 drop i32.const 0 drop - i32.const 8 + i32.const 4 i32.const 1 i32.eq drop - i32.const 8 + i32.const 4 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 $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - 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=12 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=12 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 - end - local.get $6 - i32.const 16 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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.const 4 i32.eq drop local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 end local.set $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - i32.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -14151,6 +11658,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -14171,37 +11683,42 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $0 i32.load offset=16 - local.tee $7 + local.tee $6 i32.const 1 i32.add - i32.store offset=16 - local.get $7 - i32.const 16 + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 local.get $5 local.get $1 - i64.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - i32.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -14211,27 +11728,46 @@ i32.const 4 i32.mul i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.load - i32.store offset=12 - local.get $7 + call $~lib/map/MapEntry#set:taggedNext + local.get $6 local.get $5 i32.store - local.get $6 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain + 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/map/Map#get (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 + (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 local.set $2 i32.const 0 drop @@ -14239,187 +11775,95 @@ drop i32.const 0 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.const 1 i32.eq drop local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.6 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + 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 $3 + local.get $3 i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (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 21 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.store + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext local.get $0 - i32.const 0 - i32.store offset=4 local.get $0 - i32.const 0 - i32.store offset=8 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount local.get $0 - i32.const 0 - i32.store offset=12 - local.get $1 - i32.const 1073741820 - i32.const 3 + i32.load offset=4 + i32.const 1 i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - 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.set $4 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#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + i32.const 1 i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 + i32.const 4 + local.tee $2 local.get $0 - i32.load offset=12 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + if (result i32) local.get $0 - local.get $1 - i32.const 1 - i32.add + i32.load offset=20 + local.get $0 + i32.load offset=12 i32.const 3 - call $~lib/array/ensureSize + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/map/Map#rehash end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + 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/map/Map#keys (param $0 i32) (result i32) + (func $std/map/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14428,577 +11872,718 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 - local.set $4 + call $~lib/map/Map#constructor + local.tee $0 + i32.store i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 i32.lt_s - local.set $6 - local.get $6 + local.set $3 + local.get $3 if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#has + i32.eqz i32.eqz if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i64.load - call $~lib/array/Array#__set + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.const 1 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if + call $~lib/map/Map#set + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - local.get $5 - i32.const 16 - i32.mul + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and + i32.eq i32.eqz if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=8 - call $~lib/array/Array#__set + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 - br $for-loop|0 + local.set $1 + br $for-loop|1 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 22 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - 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#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (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 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz if + i32.const 0 i32.const 544 - i32.const 496 - i32.const 104 - i32.const 42 + i32.const 11 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s local.set $4 local.get $4 if - local.get $3 - i32.load offset=16 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz if - local.get $3 - return + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - 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=16 - i32.const 1 - i32.and + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + i32.const 20 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#has i32.eqz if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - local.get $11 - local.get $10 - i64.load offset=8 - i64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=16 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $6 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 24 + i32.shl i32.const 24 + i32.shr_s i32.add - local.set $6 - br $while-continue|0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + 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 local.get $0 - local.tee $11 - local.get $3 - local.tee $14 + local.set $11 + global.get $~lib/memory/__stack_pointer local.get $11 - i32.load - local.tee $9 - i32.ne + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $14 - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 i32.store offset=4 + local.get $11 + call $~lib/map/Map#keys + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#values + local.tee $4 i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $7 + loop $for-loop|4 + local.get $7 local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/array/Array#get:length + i32.lt_s + local.set $8 + local.get $8 + if + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $9 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $10 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + local.get $9 + call $~lib/map/Map#set + drop + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 + i32.const 20 + i32.sub + local.get $10 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|4 + end end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz if i32.const 0 - drop - local.get $5 - local.get $2 - i64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + loop $for-loop|6 + local.get $7 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $10 + local.get $10 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#get + i32.const 20 + local.get $7 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable end - call $~lib/map/Map#rehash + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|6 end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + loop $for-loop|8 local.get $7 i32.const 24 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=16 - local.get $7 - local.get $5 - i32.store - local.get $6 - call $~lib/rt/pure/__release + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + i32.const 10 + local.get $7 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|8 + end end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#clear + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#has (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 i32.const 0 @@ -15007,135 +12592,285 @@ drop i32.const 0 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.const 1 i32.eq drop local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find + i32.const 0 + i32.ne local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.eqz - if + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 i32.const 0 - return + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $3 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - 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.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $5 local.get $0 - i32.load offset=20 - local.tee $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 local.get $5 - local.get $6 - i32.gt_u - select - i32.ge_u - if (result i32) + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else local.get $0 - i32.load offset=20 + i32.load offset=16 local.get $0 i32.load offset=12 - i32.const 3 + i32.eq + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 i32.mul - i32.const 4 - i32.div_s - i32.lt_s - else + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key i32.const 0 - end - if + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount local.get $0 + i32.load local.get $4 - call $~lib/map/Map#rehash + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store end - i32.const 1 + local.get $0 + 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/map/Map#clear (param $0 i32) - (local $1 i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 + 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.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 1 i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + i32.store local.get $1 - i32.store offset=8 - 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 i64) + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -15143,783 +12878,1233 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 loop $for-loop|0 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 + local.get $5 local.get $2 + i32.lt_s + local.set $6 + local.get $6 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 12 + i32.mul i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 1 i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 + local.set $5 br $for-loop|0 end end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 - loop $for-loop|1 - local.get $1 - i64.const 100 - i64.lt_s - local.set $2 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 local.get $2 + i32.lt_s + local.set $6 + local.get $6 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 12 + i32.mul i32.add - i32.eq + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=4 + call $~lib/array/Array#__set end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.wrap_i64 + local.get $5 + i32.const 1 i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.wrap_i64 - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|1 + local.set $5 + br $for-loop|0 end end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + i32.load offset=12 + i32.ge_u if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 + i32.const 224 + i32.const 704 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#keys - local.set $2 - local.get $0 - call $~lib/map/Map#values local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 i32.const 0 - call $~lib/map/Map#constructor + 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/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $3 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.4 + end local.set $4 - i32.const 0 - call $~lib/map/Map#constructor + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 + local.get $5 + if + local.get $5 local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 - local.get $7 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 - local.get $8 - i32.const 20 - i32.sub - i64.extend_i32_s - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|2 + call $~lib/map/Map#rehash end - end - local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key i32.const 0 - i32.const 336 - i32.const 36 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_s - local.set $6 - local.get $6 - if + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store + end + local.get $0 + 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/map/Map#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/map/Map#rehash + 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 $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) + 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 + i32.const 0 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + local.set $3 + local.get $3 + if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 41 + i32.const 544 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get - i32.const 20 + i32.const 10 local.get $1 - i32.wrap_i64 + i32.const 255 + i32.and i32.add - i32.eq + call $~lib/map/Map#set + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 42 + i32.const 544 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 + call $~lib/map/Map#get + i32.const 10 local.get $1 - call $~lib/map/Map#has - i32.eqz + i32.const 255 + i32.and + i32.add + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 44 + i32.const 544 + i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + i32.const 1 + i32.add local.set $1 - br $for-loop|3 + br $for-loop|1 end end local.get $0 - call $~lib/map/Map#get:size - i32.const 50 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 46 + i32.const 544 + i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 + i32.const 0 local.set $1 - loop $for-loop|4 + loop $for-loop|3 local.get $1 - i64.const 50 - i64.lt_s - local.set $6 - local.get $6 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + local.set $4 + local.get $4 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has - i32.eqz + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 50 + i32.const 544 + i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - i32.const 10 - local.get $1 - i32.wrap_i64 - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 52 + i32.const 544 + i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#delete + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set drop local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.const 255 + i32.and + i32.add + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 54 + i32.const 544 + i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + i32.const 1 + i32.add local.set $1 - br $for-loop|4 + br $for-loop|3 end end local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 60 + i32.const 544 + i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 23 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $11 + call $~lib/map/Map#keys + local.tee $1 i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#values + local.tee $4 i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 i32.store offset=16 - local.get $0 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $~lib/map/Map#constructor + local.tee $6 i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 + i32.const 0 + local.set $7 + loop $for-loop|4 + local.get $7 + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/array/Array#get:length + i32.lt_s + local.set $8 + local.get $8 if - local.get $3 - i32.load offset=12 - local.set $5 - local.get $5 - i32.const 1 - i32.and + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $9 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $10 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + call $~lib/map/Map#has i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else + if i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz if - local.get $3 - return + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable end local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + local.get $9 + call $~lib/map/Map#set + drop + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 + i32.const 20 + i32.sub + local.get $10 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $7 i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop + i32.add + local.set $7 + br $for-loop|4 + end + end + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if i32.const 0 - drop + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if i32.const 0 - 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 $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable end - call $~lib/map/Map#find - i32.const 0 - i32.ne - ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 - local.get $6 + loop $for-loop|6 local.get $7 - i32.ne - local.set $9 - local.get $9 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + local.set $10 + local.get $10 if - local.get $6 - local.set $10 - local.get $10 - i32.load offset=12 - i32.const 1 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#get + i32.const 20 + local.get $7 + i32.const 255 i32.and + i32.add + i32.eq i32.eqz if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=12 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $6 - i32.const 16 + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 i32.add - local.set $6 - br $while-continue|0 + local.set $7 + br $for-loop|6 end end local.get $0 - local.tee $11 - local.get $3 - local.tee $14 + local.set $11 + global.get $~lib/memory/__stack_pointer local.get $11 - i32.load - local.tee $9 - i32.ne + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $7 + loop $for-loop|8 + local.get $7 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + local.set $9 local.get $9 - call $~lib/rt/pure/__release + if + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + i32.const 10 + local.get $7 + i32.const 255 + i32.and + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|8 + end end - local.get $14 - i32.store local.get $0 - local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne + local.get $11 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - i32.store offset=8 local.get $0 - local.get $4 - i32.store offset=12 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#clear local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (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 $0 - i32.load offset=20 - i32.store offset=16 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i64) + (func $~lib/map/Map#set (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) - block $~lib/util/hash/HASH|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 i32.const 0 @@ -15928,39 +14113,40 @@ drop i32.const 0 drop - i32.const 8 + i32.const 2 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.const 2 i32.eq drop local.get $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - i32.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -15969,6 +14155,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -15989,37 +14180,42 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $0 i32.load offset=16 - local.tee $7 + local.tee $6 i32.const 1 i32.add - i32.store offset=16 - local.get $7 - i32.const 16 + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 local.get $5 local.get $1 - i64.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - i32.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -16029,26 +14225,43 @@ i32.const 4 i32.mul i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.load - i32.store offset=12 - local.get $7 + call $~lib/map/MapEntry#set:taggedNext + local.get $6 local.get $5 i32.store - local.get $6 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain + 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/map/Map#get (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/map/Map#get (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 @@ -16057,138 +14270,53 @@ drop i32.const 0 drop - i32.const 8 + i32.const 2 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.const 2 i32.eq drop local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz if - i32.const 384 - i32.const 448 + i32.const 592 + i32.const 656 i32.const 105 i32.const 17 call $~lib/builtins/abort unreachable end local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 24 - 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 3 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer 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#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - i64.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) local.get $1 local.get $0 i32.load offset=12 @@ -16198,9 +14326,9 @@ i32.const 0 i32.lt_s if - i32.const 544 - i32.const 496 - i32.const 120 + i32.const 224 + i32.const 704 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -16209,35 +14337,29 @@ local.get $1 i32.const 1 i32.add - i32.const 3 + i32.const 1 call $~lib/array/ensureSize local.get $0 local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) + (func $~lib/map/Map#keys (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16246,16 +14368,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -16269,17 +14402,22 @@ if local.get $1 local.get $5 - i32.const 16 + i32.const 12 i32.mul i32.add local.set $7 local.get $7 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -16287,8 +14425,8 @@ local.set $4 local.get $8 local.get $7 - i64.load - call $~lib/array/Array#__set + i32.load16_s + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -16298,11 +14436,22 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/map/Map#values (param $0 i32) (result i32) + (func $~lib/map/Map#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -16311,16 +14460,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 call $~lib/array/Array#constructor - local.set $3 + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -16334,17 +14494,22 @@ if local.get $1 local.get $5 - i32.const 16 + i32.const 12 i32.mul i32.add local.set $7 local.get $7 - i32.load offset=12 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -16352,7 +14517,7 @@ local.set $4 local.get $8 local.get $7 - i32.load offset=8 + i32.load offset=4 call $~lib/array/Array#__set end local.get $5 @@ -16363,512 +14528,287 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 call $~lib/array/Array#set:length local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/map/Map#constructor (param $0 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.eqz + i32.load offset=12 + i32.ge_u if - i32.const 24 - i32.const 25 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - 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#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (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 544 - i32.const 496 - i32.const 104 + i32.const 224 + i32.const 704 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 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/map/Map#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/map/Map#set (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 - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop local.get $3 - local.set $4 - local.get $4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $3 - i32.load offset=16 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + 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 if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq + local.get $0 + i32.load offset=4 else - i32.const 0 - end - if - local.get $3 - return + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 8 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store end - i32.const 0 + local.get $0 + 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/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#delete (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 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + i32.store local.get $0 - i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - 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=16 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - local.get $11 - local.get $10 - i64.load offset=8 - i64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=16 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 - end - local.get $6 - i32.const 24 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 i32.store - local.get $0 + local.get $6 local.get $1 - i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 - local.set $3 + local.set $2 i32.const 0 drop i32.const 0 drop i32.const 0 drop - i32.const 8 + i32.const 2 i32.const 1 i32.eq drop - i32.const 8 + i32.const 2 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 $3 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.6 end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz if i32.const 0 - drop - local.get $5 - local.get $2 - i64.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 24 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i64.store - local.get $5 - local.get $2 - i64.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=16 - local.get $7 - local.get $5 - i32.store + global.set $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release + return end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 - end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -16878,12 +14818,12 @@ i32.const 1 i32.add i32.const 4 - local.tee $5 + local.tee $2 local.get $0 i32.load offset=20 - local.tee $6 + local.tee $5 + local.get $2 local.get $5 - local.get $6 i32.gt_u select i32.ge_u @@ -16902,58 +14842,25 @@ end if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $4 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) - (local $1 i64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -16961,791 +14868,805 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $3 + local.get $3 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 i32.const 10 local.get $1 - i32.wrap_i64 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.wrap_i64 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + i32.const 1 + i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 + i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 - i64.const 100 - i64.lt_u - local.set $2 - local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.wrap_i64 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 i32.const 20 local.get $1 - i32.wrap_i64 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.wrap_i64 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + i32.const 1 + i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#keys - local.set $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#keys + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#values - local.set $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#values + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $4 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor - local.set $5 + local.tee $6 + i32.store offset=20 i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 + local.set $7 + loop $for-loop|4 local.get $7 + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/array/Array#get:length + i32.lt_s + local.set $8 + local.get $8 if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $9 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 call $~lib/array/Array#__get - local.set $8 + local.set $10 local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 i32.const 20 i32.sub - i64.extend_i32_s - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 - local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + local.get $9 + call $~lib/map/Map#set + drop + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 i32.const 20 i32.sub - local.get $8 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 + drop + local.get $7 i32.const 1 i32.add - local.set $6 - br $for-loop|2 + local.set $7 + br $for-loop|4 end end - local.get $4 - call $~lib/map/Map#get:size + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i64.const 50 - i64.lt_u - local.set $6 - local.get $6 + i32.const 0 + local.set $7 + loop $for-loop|6 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $10 + local.get $10 if local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#get + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#get i32.const 20 - local.get $1 - i32.wrap_i64 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|6 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_u - local.set $6 - local.get $6 + i32.const 0 + local.set $7 + loop $for-loop|8 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $9 + local.get $9 if local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 i32.const 10 - local.get $1 - i32.wrap_i64 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|8 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 26 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 + (func $~lib/map/Map#has (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 1 i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 + i32.store local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 2 i32.const 1 + i32.eq drop - i32.const 4 - i32.const 4 + i32.const 2 + i32.const 2 i32.eq drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne + 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/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (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 f32) - (local $13 f32) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.mul - i32.const 3 - i32.div_s + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $3 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - 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 - f32.load - local.set $12 - local.get $11 - local.get $12 - f32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=8 - local.get $15 - 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.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - i32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -17754,6 +15675,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -17774,37 +15700,42 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $0 i32.load offset=16 - local.tee $7 + local.tee $6 i32.const 1 i32.add - i32.store offset=16 - local.get $7 + call $~lib/map/Map#set:entriesOffset + local.get $6 i32.const 12 i32.mul i32.add local.set $5 local.get $5 local.get $1 - f32.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - i32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -17814,50 +15745,72 @@ i32.const 4 i32.mul i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.load - i32.store offset=8 - local.get $7 + call $~lib/map/MapEntry#set:taggedNext + local.get $6 local.get $5 i32.store - local.get $6 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain + 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/map/Map#get (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/map/Map#get (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 2 i32.const 1 + i32.eq drop - i32.const 4 - i32.const 4 + i32.const 2 + i32.const 2 i32.eq drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz if - i32.const 384 - i32.const 448 + i32.const 592 + i32.const 656 i32.const 105 i32.const 17 call $~lib/builtins/abort @@ -17865,154 +15818,67 @@ end local.get $3 i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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=20 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#constructor (param $0 i32) (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 27 - 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 224 - i32.const 496 - 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#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (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 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18020,16 +15886,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -18054,6 +15931,11 @@ i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -18061,8 +15943,8 @@ local.set $4 local.get $8 local.get $7 - f32.load - call $~lib/array/Array#__set + i32.load16_u + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -18072,11 +15954,22 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/map/Map#values (param $0 i32) (result i32) + (func $~lib/map/Map#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -18085,16 +15978,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 call $~lib/array/Array#constructor - local.set $3 + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -18119,6 +16023,11 @@ i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -18137,343 +16046,118 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 call $~lib/array/Array#set:length local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 28 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - 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.const 1 i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=20 - 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#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) + i32.store local.get $1 local.get $0 i32.load offset=12 i32.ge_u if - i32.const 544 - i32.const 496 - i32.const 104 + i32.const 224 + i32.const 704 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 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/map/Map#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (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 f32) - (local $13 f32) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - 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 - f32.load - local.set $12 - local.get $11 - local.get $12 - f32.store - local.get $11 - local.get $10 - f32.load offset=4 - f32.store offset=4 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=8 - local.get $15 - 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.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result i32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 2 i32.const 1 + i32.eq drop - i32.const 4 - i32.const 4 + i32.const 2 + i32.const 2 i32.eq drop local.get $3 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.4 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.4 end local.set $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - f32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -18482,6 +16166,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -18502,37 +16191,42 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $0 i32.load offset=16 - local.tee $7 + local.tee $6 i32.const 1 i32.add - i32.store offset=16 - local.get $7 - i32.const 12 + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 8 i32.mul i32.add local.set $5 local.get $5 local.get $1 - f32.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - f32.store offset=4 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -18542,74 +16236,93 @@ i32.const 4 i32.mul i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.load - i32.store offset=8 - local.get $7 + call $~lib/map/MapEntry#set:taggedNext + local.get $6 local.get $5 i32.store - local.get $6 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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/map/Map#delete (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/map/Map#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) + block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 2 i32.const 1 + i32.eq drop - i32.const 4 - i32.const 4 + i32.const 2 + i32.const 2 i32.eq drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.6 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.6 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 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 - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 i32.const 1 i32.or - i32.store offset=8 + call $~lib/map/MapEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -18619,12 +16332,12 @@ i32.const 1 i32.add i32.const 4 - local.tee $5 + local.tee $2 local.get $0 i32.load offset=20 - local.tee $6 + local.tee $5 + local.get $2 local.get $5 - local.get $6 i32.gt_u select i32.ge_u @@ -18643,58 +16356,25 @@ end if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $4 - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $std/map/testNumeric + (func $std/map/testNumeric (local $0 i32) - (local $1 f32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18702,588 +16382,797 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + i32.const 0 + call $~lib/map/Map#constructor + local.tee $0 + i32.store i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - f32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + local.set $3 + local.get $3 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 i32.const 10 local.get $1 - i32.trunc_f32_s + i32.const 65535 + i32.and i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f32_s + i32.const 65535 + i32.and i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 9 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - f32.const 1 - f32.add + i32.const 1 + i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 11 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 + i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + local.set $4 + local.get $4 if local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 15 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 10 local.get $1 - i32.trunc_f32_s + i32.const 65535 + i32.and i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 i32.const 20 local.get $1 - i32.trunc_f32_s + i32.const 65535 + i32.and i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 18 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 local.get $1 - call $~lib/map/Map#get + call $~lib/map/Map#get i32.const 20 local.get $1 - i32.trunc_f32_s + i32.const 65535 + i32.and i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 19 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - f32.const 1 - f32.add + i32.const 1 + i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#keys - local.set $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#keys + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/map/Map#values - local.set $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#values + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/map/Map#constructor - local.set $4 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 call $~lib/map/Map#constructor - local.set $5 + local.tee $6 + i32.store offset=20 i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $7 + local.set $7 + loop $for-loop|4 local.get $7 + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/array/Array#get:length + i32.lt_s + local.set $8 + local.get $8 if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 + local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/array/Array#__get + local.set $9 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 call $~lib/array/Array#__get - local.set $8 + local.set $10 local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 i32.const 20 i32.sub - f32.convert_i32_s - call $~lib/map/Map#has + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 32 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 - local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 + local.get $9 + call $~lib/map/Map#set + drop + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 i32.const 20 i32.sub - local.get $8 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 + drop + local.get $7 i32.const 1 i32.add - local.set $6 - br $for-loop|2 + local.set $7 + br $for-loop|4 end end - local.get $4 - call $~lib/map/Map#get:size + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 36 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/map/Map#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f32.const 50 - f32.lt - local.set $6 - local.get $6 + i32.const 0 + local.set $7 + loop $for-loop|6 + local.get $7 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + local.set $10 + local.get $10 if local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#get + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#get i32.const 20 - local.get $1 - i32.trunc_f32_s + local.get $7 + i32.const 65535 + i32.and i32.add i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 42 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 44 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|6 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f32.const 50 - f32.lt - local.set $6 - local.get $6 + i32.const 0 + local.set $7 + loop $for-loop|8 + local.get $7 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + local.set $9 + local.get $9 if local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 50 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 i32.const 10 - local.get $1 - i32.trunc_f32_s + local.get $7 + i32.const 65535 + i32.and i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release + call $~lib/map/Map#set + drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 52 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 - local.get $1 - call $~lib/map/Map#delete + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#delete drop local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 + call $~lib/map/Map#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 54 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|4 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|8 end end local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/map/Map#clear + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#clear local.get $0 - call $~lib/map/Map#get:size + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/map/Map#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 60 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 29 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 + (func $~lib/map/Map#has (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 1 i32.sub - i32.store offset=4 - local.get $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + i32.store local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + call $~lib/map/Map#find i32.const 0 - i32.store offset=20 - local.get $0 + i32.ne + 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/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=12 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) + i32.store local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 4 i32.const 1 + i32.eq drop - i32.const 8 i32.const 4 + i32.const 2 i32.eq drop - i32.const 8 - i32.const 8 + i32.const 4 + i32.const 4 i32.eq drop local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/map/Map#find - i32.const 0 - i32.ne + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) - (func $~lib/map/Map#rehash (param $0 i32) (param $1 i32) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19292,953 +17181,1068 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 f64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 local.set $4 i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 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=12 - i32.const 1 - i32.and + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - local.get $8 - local.set $11 - local.get $10 - f64.load - local.set $12 - local.get $11 - local.get $12 - f64.store - local.get $11 - local.get $10 - i32.load offset=8 - i32.store offset=8 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $13 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 local.get $3 - local.get $14 - i32.const 4 - i32.mul + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=12 - local.get $15 - local.get $8 - i32.store + local.set $4 local.get $8 - i32.const 16 - i32.add - local.set $8 + local.get $7 + i32.load + call $~lib/array/Array#__set end - local.get $6 - i32.const 16 + local.get $5 + i32.const 1 i32.add - local.set $6 - br $while-continue|0 + local.set $5 + br $for-loop|0 end end - local.get $0 - local.tee $11 local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=4 + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 local.get $9 - i32.store offset=8 - local.get $0 local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 + call $~lib/array/Array#set:length local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 f64) + (func $~lib/map/Map#delete (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/hash/HASH|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 - local.set $3 + local.set $2 + i32.const 0 + drop i32.const 0 drop i32.const 0 drop + i32.const 4 i32.const 1 + i32.eq drop - i32.const 8 i32.const 4 + i32.const 2 i32.eq drop - i32.const 8 - i32.const 8 + i32.const 4 + i32.const 4 i32.eq drop - local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz if i32.const 0 - drop - local.get $5 - local.get $2 - i32.store offset=8 - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__retain local.set $6 - local.get $6 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $7 - i32.const 1 - i32.add - i32.store offset=16 - local.get $7 - i32.const 16 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - f64.store - local.get $5 - local.get $2 - i32.store offset=8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $4 - local.get $0 - i32.load offset=4 - i32.and + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul i32.add - local.set $7 - local.get $5 - local.get $7 - i32.load - i32.store offset=12 - local.get $7 - local.get $5 - i32.store + global.set $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release + return end + local.get $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + i32.div_s + i32.lt_s + else + i32.const 0 end - call $~lib/map/Map#find - local.set $3 - local.get $3 - i32.eqz if - i32.const 384 - i32.const 448 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/map/Map#rehash end - local.get $3 - i32.load offset=8 - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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#constructor (param $0 i32) (param $1 i32) (result 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.get $0 - i32.eqz - if - i32.const 16 - i32.const 30 - 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 3 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 496 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.shl - local.set $2 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - 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 + call $~lib/map/Map#constructor + local.tee $0 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#__uset (param $0 i32) (param $1 i32) (param $2 f64) i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (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.set $1 + loop $for-loop|0 local.get $1 - i32.const 0 + i32.const 100 i32.lt_s + local.set $2 + local.get $2 if - i32.const 544 - i32.const 496 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/map/Map#keys (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and + call $~lib/map/Map#has + i32.eqz i32.eqz if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f64.load - call $~lib/array/Array#__set + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.const 1 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 local.get $1 - local.get $5 - i32.const 16 - i32.mul i32.add - local.set $7 - local.get $7 - i32.load offset=12 - i32.const 1 - i32.and + i32.eq i32.eqz if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load offset=8 - call $~lib/array/Array#__set + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 + local.get $1 i32.const 1 i32.add - local.set $5 + local.set $1 br $for-loop|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq i32.eqz if - i32.const 24 - i32.const 31 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - 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#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (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 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + 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|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz if + i32.const 0 i32.const 544 - i32.const 496 - i32.const 104 - i32.const 42 + i32.const 21 + 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#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=20 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 if - local.get $3 - i32.load offset=16 - local.set $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $5 - i32.const 1 - i32.and + call $~lib/array/Array#__get + local.set $7 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $7 + call $~lib/map/Map#has i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else + if i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz if - local.get $3 - return + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $7 + local.get $7 + call $~lib/map/Map#set + drop + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop local.get $5 i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + i32.add + local.set $5 + br $for-loop|2 end end - i32.const 0 - ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 f64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $4 - i32.const 24 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 24 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_s + local.set $6 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=16 - i32.const 1 - i32.and + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has i32.eqz if - local.get $8 - local.set $11 - local.get $10 - f64.load - local.set $12 - local.get $11 - local.get $12 - f64.store - local.get $11 - local.get $10 - f64.load offset=8 - f64.store offset=8 - block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $13 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.5 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=16 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 24 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $6 - i32.const 24 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 i32.add - local.set $6 - br $while-continue|0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|3 end end local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result i32) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - block $~lib/util/hash/HASH|inlined.4 (result i32) - local.get $1 - local.set $3 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + i32.const 10 + local.get $5 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 4 i32.const 1 + i32.eq drop - i32.const 8 i32.const 4 + i32.const 2 i32.eq drop - i32.const 8 - i32.const 8 + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 i32.eq drop local.get $3 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.4 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 local.get $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 - f64.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop else local.get $0 i32.load offset=16 @@ -20247,6 +18251,11 @@ i32.eq if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 i32.load offset=20 local.get $0 @@ -20267,37 +18276,42 @@ i32.const 1 i32.or end - call $~lib/map/Map#rehash + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=8 - call $~lib/rt/pure/__retain - local.set $6 - local.get $6 + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $0 i32.load offset=16 - local.tee $7 + local.tee $6 i32.const 1 i32.add - i32.store offset=16 - local.get $7 - i32.const 24 + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 i32.mul i32.add local.set $5 local.get $5 local.get $1 - f64.store + call $~lib/map/MapEntry#set:key + i32.const 0 + drop local.get $5 local.get $2 - f64.store offset=8 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/map/Map#set:entriesCount local.get $0 i32.load local.get $4 @@ -20307,163 +18321,142 @@ i32.const 4 i32.mul i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.load - i32.store offset=16 - local.get $7 + call $~lib/map/MapEntry#set:taggedNext + local.get $6 local.get $5 i32.store - local.get $6 - call $~lib/rt/pure/__release end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/map/Map#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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/map/Map#delete (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) + (func $~lib/map/Map#get (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 local.get $1 - block $~lib/util/hash/HASH|inlined.6 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop + i32.const 0 + drop + i32.const 4 i32.const 1 + i32.eq drop - i32.const 8 i32.const 4 + i32.const 2 i32.eq drop - i32.const 8 - i32.const 8 + i32.const 4 + i32.const 4 i32.eq drop local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.6 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/map/Map#find + call $~lib/map/Map#find local.set $3 local.get $3 i32.eqz if - i32.const 0 - return + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end - i32.const 0 - drop - i32.const 0 - drop - local.get $3 local.get $3 - i32.load offset=12 - i32.const 1 - i32.or - i32.store offset=12 - 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.set $4 - local.get $4 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - local.tee $5 + 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=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_u - select + i32.load offset=12 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 $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end local.get $0 - local.get $4 - call $~lib/map/Map#rehash + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ end - i32.const 1 - ) - (func $~lib/map/Map#clear (param $0 i32) - (local $1 i32) - (local $2 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + local.get $3 local.get $1 - i32.store offset=8 - local.get $0 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/map/testNumeric - (local $0 i32) - (local $1 f64) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -20471,1425 +18464,9015 @@ (local $6 i32) (local $7 i32) (local $8 i32) - i32.const 0 - call $~lib/map/Map#constructor - local.set $0 - f64.const 0 + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 loop $for-loop|0 - local.get $1 - f64.const 100 - f64.lt - local.set $2 + local.get $5 local.get $2 + i32.lt_s + local.set $6 + local.get $6 if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 local.get $1 - i32.trunc_f64_s + local.get $5 + i32.const 12 + i32.mul i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load + call $~lib/array/Array#__set end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s + local.get $5 + i32.const 1 i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 9 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 + local.set $5 br $for-loop|0 end end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 11 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 + i32.load offset=8 local.set $1 - loop $for-loop|1 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 15 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 19 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - call $~lib/map/Map#keys + i32.load offset=16 local.set $2 - local.get $0 - call $~lib/map/Map#values - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 - call $~lib/map/Map#constructor local.set $4 i32.const 0 - call $~lib/map/Map#constructor local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|2 - local.get $6 + loop $for-loop|0 + local.get $5 local.get $2 - call $~lib/array/Array#get:length i32.lt_s - local.set $7 - local.get $7 + local.set $6 + local.get $6 if - local.get $2 - local.get $6 - call $~lib/array/Array#__get - local.set $1 - local.get $3 - local.get $6 - call $~lib/array/Array#__get - local.set $8 - local.get $0 local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $8 - i32.const 20 - i32.sub - f64.convert_i32_s - call $~lib/map/Map#has + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=4 + call $~lib/array/Array#__set end - local.get $4 - local.get $1 - local.get $1 - call $~lib/map/Map#set - call $~lib/rt/pure/__release local.get $5 - local.get $8 - i32.const 20 - i32.sub - local.get $8 - i32.const 20 - i32.sub - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $6 i32.const 1 i32.add - local.set $6 - br $for-loop|2 + local.set $5 + br $for-loop|0 end end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 0 - i32.const 336 - i32.const 36 - i32.const 3 + i32.const 224 + i32.const 704 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - local.get $5 - call $~lib/map/Map#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 - f64.const 50 - f64.lt - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#get - i32.const 20 - local.get $1 - i32.trunc_f64_s - i32.add - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 44 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 - end + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 end + local.set $4 local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value i32.const 0 - i32.const 336 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt - local.set $6 - local.get $6 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 50 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 10 - local.get $1 - i32.trunc_f64_s - i32.add - call $~lib/map/Map#set - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 52 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $0 - local.get $1 - call $~lib/map/Map#delete - drop + i32.load offset=20 local.get $0 - local.get $1 - call $~lib/map/Map#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 + call $~lib/map/Map#rehash end - end - local.get $0 - call $~lib/map/Map#get:size - i32.const 50 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key i32.const 0 - i32.const 336 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/map/Map#clear - local.get $0 - call $~lib/map/Map#get:size - i32.const 0 - i32.eq - i32.eqz - if + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value i32.const 0 - i32.const 336 - i32.const 60 - i32.const 3 - call $~lib/builtins/abort - unreachable + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 + local.get $5 + local.get $6 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/map - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - call $std/map/testNumeric - ) - (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 + 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/rt/pure/decrement (param $0 i32) - (local $1 i32) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i32) (result 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 + (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 - drop - i32.const 1 - drop + i32.store local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 i32.const 0 - i32.const 96 - 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 1 - drop - i32.const 1 drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 + i32.const 0 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 + drop + i32.const 4 i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq drop - 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 - ) - (func $~start - call $start:std/map - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.6 end - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const 1 - i32.eq + call $~lib/map/Map#find + local.set $3 + local.get $3 i32.eqz if i32.const 0 - i32.const 96 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext local.get $0 - i32.const 20 + local.get $0 + i32.load offset=20 + i32.const 1 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) + call $~lib/map/Map#set:entriesCount local.get $0 - i32.load + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_u + select + i32.ge_u if (result i32) - i32.const 1 + 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 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/map/Map#__visit + if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/map/Map#rehash + 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#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - local.get $0 - i32.load + (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) + 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 + i32.const 0 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + 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|0 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + 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|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=20 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + local.set $7 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $7 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $7 + local.get $7 + call $~lib/map/Map#set + drop + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|2 + end + end + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#get + i32.const 20 + local.get $5 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|3 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + i32.const 10 + local.get $5 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + 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#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i64.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=8 + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 224 + i32.const 704 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + 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 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 24 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + 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 $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $4 + call $~lib/map/Map#rehash + 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 $std/map/testNumeric + (local $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + 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 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_s + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_s + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $7 + local.get $7 + if + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.get $1 + call $~lib/map/Map#set + drop + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|2 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#set (param $0 i32) (param $1 i64) (param $2 i32) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + 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#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i64.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=8 + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 224 + i32.const 704 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + 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 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i64) (param $2 i64) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 24 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + 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 $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $4 + call $~lib/map/Map#rehash + 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 $std/map/testNumeric + (local $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + 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 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $7 + local.get $7 + if + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + i64.extend_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.get $1 + call $~lib/map/Map#set + drop + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|2 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_u + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.wrap_i64 + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.wrap_i64 + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#set (param $0 i32) (param $1 f32) (param $2 i32) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $3 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + (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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + f32.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 12 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=4 + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 224 + i32.const 704 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + 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 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 f32) (param $2 f32) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $3 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + 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 $3 + local.get $3 + i32.load offset=8 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $4 + call $~lib/map/Map#rehash + 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 $std/map/testNumeric + (local $0 i32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + 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 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + f32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $7 + local.get $7 + if + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + f32.convert_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.get $1 + call $~lib/map/Map#set + drop + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|2 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f32_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|3 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f32_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#set (param $0 i32) (param $1 f64) (param $2 i32) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $3 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 16 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 592 + i32.const 656 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + 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#__set (param $0 i32) (param $1 i32) (param $2 f64) + (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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 704 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#keys (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + f64.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/map/Map#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 16 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=12 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load offset=8 + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 224 + i32.const 704 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + drop + 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 + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 f64) (param $2 f64) (result 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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.4 (result i32) + local.get $1 + local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $3 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.4 + end + local.set $4 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $7 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $7 + i32.const 24 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key + i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $7 + local.get $5 + local.get $7 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $7 + local.get $5 + i32.store + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/map/Map#delete (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + block $~lib/util/hash/HASH|inlined.6 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $2 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.6 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + 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 $3 + local.get $3 + i32.load offset=12 + i32.const 1 + i32.or + call $~lib/map/MapEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $5 + local.get $0 + i32.load offset=20 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $4 + call $~lib/map/Map#rehash + 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 $std/map/testNumeric + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 + i32.const 0 + call $~lib/map/Map#constructor + local.tee $0 + i32.store + f64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 9 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 11 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + local.set $2 + local.get $2 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 15 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 19 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#keys + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#values + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/map/Map#constructor + local.tee $5 + i32.store offset=20 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $7 + local.get $7 + if + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $1 + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $6 + call $~lib/array/Array#__get + local.set $8 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + f64.convert_i32_s + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 32 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.get $1 + call $~lib/map/Map#set + drop + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $8 + i32.const 20 + i32.sub + local.get $8 + i32.const 20 + i32.sub + call $~lib/map/Map#set + drop + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|2 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 36 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#get + i32.const 20 + local.get $1 + i32.trunc_f64_s + i32.add + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 50 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + i32.const 10 + local.get $1 + i32.trunc_f64_s + i32.add + call $~lib/map/Map#set + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 52 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/map/Map#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 54 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/map/Map#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 60 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 432 + i32.const 480 + i32.const 49 + 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 + local.get $2 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/map/Map#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 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 5 + 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 432 + i32.const 704 + i32.const 58 + 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 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/map/Map#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 24 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/map/Map#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 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/map/Map#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 24 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 9 + 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 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/map/Map#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 24 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/map/Map#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 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 12 + 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 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/map/Map#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 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/map/Map#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 24 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 15 + 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 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/map/Map#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 24 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/map/Map#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 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 18 + 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 432 + i32.const 704 + i32.const 58 + 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 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/map/Map#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 24 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset 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 + call $~lib/map/Map#set:entriesCount local.get $0 - i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + call $~lib/map/Map#set:entriesOffset local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - 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 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - drop - local.get $2 local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 3 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/map/Map#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - drop + i32.store local.get $0 - i32.load + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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 - call $~lib/rt/pure/__visit ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 24 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount 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 - call $~lib/array/Array#__visit ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 24 + 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 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 3 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + local.get $3 + call $~lib/array/Array#set:buffer local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + call $~lib/array/Array#set:dataStart local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/map/Map#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + call $~lib/map/Map#set:entriesOffset local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:buffer local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/array/Array#set:dataStart local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 2 + i32.shl local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/map/Map#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + call $~lib/map/Map#set:entriesOffset local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/map/Map#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 30 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:buffer local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/array/Array#set:dataStart local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 704 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 3 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#set:length_ local.get $0 - i32.load offset=8 - local.set $2 - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/map/Map#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 24 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) local.get $0 - local.get $1 - call $~lib/map/Map#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map#set:bucketsMask local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 24 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + call $~lib/map/Map#set:entriesCapacity local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount 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 - call $~lib/map/Map#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/map/Map - block $~lib/map/Map - block $~lib/map/Map - block $~lib/array/Array - block $~lib/array/Array - block $~lib/map/Map - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - 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/array/Array $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $~lib/map/Map $~lib/array/Array $~lib/map/Map $invalid - end - 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/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/map/Map~visit - return - end - unreachable ) ) diff --git a/tests/compiler/std/math.json b/tests/compiler/std/math.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/math.json +++ b/tests/compiler/std/math.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 2469d09a7e..c0505461dd 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -10,14 +10,14 @@ (type $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_none (func (param i64))) - (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) (type $f64_=>_none (func (param f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i64_i64_i64_i64_i64_=>_none (func (param i64 i64 i64 i64 i64))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) (type $f32_i32_=>_f32 (func (param f32 i32) (result f32))) @@ -64,12 +64,14 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s") (data (i32.const 1088) "n\83\f9\a2\00\00\00\00\d1W\'\fc)\15DN\99\95b\db\c0\dd4\f5\abcQ\feA\90C<:n$\b7a\c5\bb\de\ea.I\06\e0\d2MB\1c\eb\1d\fe\1c\92\d1\t\f55\82\e8>\a7)\b1&p\9c\e9\84D\bb.9\d6\919A~_\b4\8b_\84\9c\f49S\83\ff\97\f8\1f;(\f9\bd\8b\11/\ef\0f\98\05\de\cf~6m\1fm\nZf?FO\b7\t\cb\'\c7\ba\'u-\ea_\9e\f79\07={\f1\e5\eb\b1_\fbk\ea\92R\8aF0\03V\08]\8d\1f \bc\cf\f0\abk{\fca\91\e3\a9\1d6\f4\9a_\85\99e\08\1b\e6^\80\d8\ff\8d@h\a0\14W\15\06\061\'sM") (data (i32.const 1280) ")\15DNn\83\f9\a2\c0\dd4\f5\d1W\'\fcA\90C<\99\95b\dba\c5\bb\de\abcQ\fe") (data (i32.const 1326) "\f0?n\bf\88\1aO;\9b<53\fb\a9=\f6\ef?]\dc\d8\9c\13`q\bca\80w>\9a\ec\ef?\d1f\87\10z^\90\bc\85\7fn\e8\15\e3\ef?\13\f6g5R\d2\8c\be\ef?m{\83]\a6\9a\97<\0f\89\f9lX\b5\ef?\fc\ef\fd\92\1a\b5\8e<\f7Gr+\92\ac\ef?\d1\9c/p=\be><\a2\d1\d32\ec\a3\ef?\0bn\90\894\03j\bc\1b\d3\fe\aff\9b\ef?\0e\bd/*RV\95\bcQ[\12\d0\01\93\ef?U\eaN\8c\ef\80P\bc\cc1l\c0\bd\8a\ef?\16\f4\d5\b9#\c9\91\bc\e0-\a9\ae\9a\82\ef?\afU\\\e9\e3\d3\80\f7\ec\9a<\aa\b9h1\87T\ef?\9d8\86\cb\82\e7\8f\bc\1d\d9\fc\"PM\ef?\8d\c3\a6DAo\8a<\d6\8cb\88;F\ef?}\04\e4\b0\05z\80<\96\dc}\91I?\ef?\94\a8\a8\e3\fd\8e\96<8bunz8\ef?}Ht\f2\18^\87\a9\af\0c\ef?\b6\ab\b0MuM\83<\15\b71\n\fe\06\ef?Lt\ac\e2\01B\86<1\d8L\fcp\01\ef?J\f8\d3]9\dd\8f<\ff\16d\b2\08\fc\ee?\04[\8e;\80\a3\86\bc\f1\9f\92_\c5\f6\ee?hPK\cc\edJ\92\bc\cb\a9:7\a7\f1\ee?\8e-Q\1b\f8\07\99\bcf\d8\05m\ae\ec\ee?\d26\94>\e8\d1q\bc\f7\9f\e54\db\e7\ee?\15\1b\ce\b3\19\19\99\bc\e5\a8\13\c3-\e3\ee?mL*\a7H\9f\85<\"4\12L\a6\de\ee?\8ai(z`\12\93\bc\1c\80\ac\04E\da\ee?[\89\17H\8f\a7X\bc*.\f7!\n\d6\ee?\1b\9aIg\9b,|\bc\97\a8P\d9\f5\d1\ee?\11\ac\c2`\edcC<-\89a`\08\ce\ee?\efd\06;\tf\96Z~d\1fx\bct_\ec\e8u\9f\ee?\b0}\8b\c0J\ee\86\bct\81\a5H\9a\9f\ee?\8a\e6U\1e2\19\86\bc\c9gBV\eb\9f\ee?\d3\d4\t^\cb\9c\90T\'\a4\ee?47;\f1\b6i\93\bc\13\ceL\99\89\a5\ee?\1e\ff\19:\84^\80\bc\ad\c7#F\1a\a7\ee?nWr\d8P\d4\94\bc\ed\92D\9b\d9\a8\ee?\00\8a\0e[g\ad\90<\99f\8a\d9\c7\aa\ee?\b4\ea\f0\c1/\b7\8d<\db\a0*B\e5\ac\ee?\ff\e7\c5\9c`\b6e\bc\8cD\b5\162\af\ee?D_\f3Y\83\f6{<6w\15\99\ae\b1\ee?\83=\1e\a7\1f\t\93\bc\c6\ff\91\0b[\b4\ee?)\1el\8b\b8\a9]\bc\e5\c5\cd\b07\b7\ee?Y\b9\90|\f9#l\bc\0fR\c8\cbD\ba\ee?\aa\f9\f4\"CC\92\bcPN\de\9f\82\bd\ee?K\8ef\d7l\ca\85\bc\ba\07\cap\f1\c0\ee?\'\ce\91+\fc\afq<\90\f0\a3\82\91\c4\ee?\bbs\n\e15\d2m<##\e3\19c\c8\ee?c\"b\"\04\c5\87\bce\e5]{f\cc\ee?\d51\e2\e3\86\1c\8b<3-J\ec\9b\d0\ee?\15\bb\bc\d3\d1\bb\91\bc]%>\b2\03\d5\ee?\d21\ee\9c1\cc\90\b4\07!\d5\82\bc_\9b{3\97|\ef?\c9\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 3366) "\f0?t\85\15\d3\b0\d9\ef?\0f\89\f9lX\b5\ef?Q[\12\d0\01\93\ef?{Q}<\b8r\ef?\aa\b9h1\87T\ef?8bunz8\ef?\e1\de\1f\f5\9d\1e\ef?\15\b71\n\fe\06\ef?\cb\a9:7\a7\f1\ee?\"4\12L\a6\de\ee?-\89a`\08\ce\ee?\'*6\d5\da\bf\ee?\82O\9dV+\b4\ee?)TH\dd\07\ab\ee?\85U:\b0~\a4\ee?\cd;\7ff\9e\a0\ee?t_\ec\e8u\9f\ee?\87\01\ebs\14\a1\ee?\13\ceL\99\89\a5\ee?\db\a0*B\e5\ac\ee?\e5\c5\cd\b07\b7\ee?\90\f0\a3\82\91\c4\ee?]%>\b2\03\d5\ee?\ad\d3Z\99\9f\e8\ee?G^\fb\f2v\ff\ee?\9cR\85\dd\9b\19\ef?i\90\ef\dc 7\ef?\87\a4\fb\dc\18X\ef?_\9b{3\97|\ef?\da\90\a4\a2\af\a4\ef?@En[v\d0\ef?") - (data (i32.const 3628) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 3628) ",") + (data (i32.const 3640) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") (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)) @@ -7626,8 +7628,8 @@ i32.const 0 local.get $5 local.get $12 - i32.const -1064252416 - i32.sub + i32.const 1064252416 + i32.add i32.or local.get $1 local.get $0 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 5d042f41b7..534a2f1300 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -10,13 +10,13 @@ (type $none_=>_f64 (func (result f64))) (type $none_=>_none (func)) (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i64_=>_none (func (param i64))) (type $f64_=>_none (func (param f64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $f32_=>_i32 (func (param f32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_i64_i64_i64_i64_i32_=>_i32 (func (param i64 i64 i64 i64 i64 i32) (result i32))) - (type $f32_=>_i32 (func (param f32) (result i32))) (type $f32_i32_f32_f32_i32_=>_i32 (func (param f32 i32 f32 f32 i32) (result i32))) (type $f64_i32_f64_f64_i32_=>_i32 (func (param f64 i32 f64 f64 i32) (result i32))) (type $f64_i64_=>_i32 (func (param f64 i64) (result i32))) @@ -69,7 +69,7 @@ (import "Math" "tanh" (func $~lib/bindings/Math/tanh (param f64) (result f64))) (import "Math" "trunc" (func $~lib/bindings/Math/trunc (param f64) (result f64))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00s\00t\00d\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00\00\00") (data (i32.const 64) "\9f\de\e0\c3\f04\f7?\00\90\e6y\7f\cc\d7\bf\1f\e9,jx\13\f7?\00\00\0d\c2\eeo\d7\bf\a0\b5\fa\08`\f2\f6?\00\e0Q\13\e3\13\d7\bf}\8c\13\1f\a6\d1\f6?\00x(8[\b8\d6\bf\d1\b4\c5\0bI\b1\f6?\00x\80\90U]\d6\bf\ba\0c/3G\91\f6?\00\00\18v\d0\02\d6\bf#B\"\18\9fq\f6?\00\90\90\86\ca\a8\d5\bf\d9\1e\a5\99OR\f6?\00P\03VCO\d5\bf\c4$\8f\aaV3\f6?\00@k\c37\f6\d4\bf\14\dc\9dk\b3\14\f6?\00P\a8\fd\a7\9d\d4\bfL\\\c6Rd\f6\f5?\00\a8\899\92E\d4\bfO,\91\b5g\d8\f5?\00\b8\b09\f4\ed\d3\bf\de\90[\cb\bc\ba\f5?\00p\8fD\ce\96\d3\bfx\1a\d9\f2a\9d\f5?\00\a0\bd\17\1e@\d3\bf\87VF\12V\80\f5?\00\80F\ef\e2\e9\d2\bf\d3k\e7\ce\97c\f5?\00\e008\1b\94\d2\bf\93\7f\a7\e2%G\f5?\00\88\da\8c\c5>\d2\bf\83E\06B\ff*\f5?\00\90\')\e1\e9\d1\bf\df\bd\b2\db\"\0f\f5?\00\f8H+m\95\d1\bf\d7\de4G\8f\f3\f4?\00\f8\b9\9agA\d1\bf@(\de\cfC\d8\f4?\00\98\ef\94\d0\ed\d0\bf\c8\a3x\c0>\bd\f4?\00\10\db\18\a5\9a\d0\bf\8a%\e0\c3\7f\a2\f4?\00\b8cR\e6G\d0\bf4\84\d4$\05\88\f4?\00\f0\86E\"\eb\cf\bf\0b-\19\1b\cem\f4?\00\b0\17uJG\cf\bfT\189\d3\d9S\f4?\000\10=D\a4\ce\bfZ\84\b4D\':\f4?\00\b0\e9D\0d\02\ce\bf\fb\f8\15A\b5 \f4?\00\f0w)\a2`\cd\bf\b1\f4>\da\82\07\f4?\00\90\95\04\01\c0\cc\bf\8f\feW]\8f\ee\f3?\00\10\89V) \cc\bf\e9L\0b\a0\d9\d5\f3?\00\10\81\8d\17\81\cb\bf+\c1\10\c0`\bd\f3?\00\d0\d3\cc\c9\e2\ca\bf\b8\dau+$\a5\f3?\00\90\12.@E\ca\bf\02\d0\9f\cd\"\8d\f3?\00\f0\1dhw\a8\c9\bf\1cz\84\c5[u\f3?\000Him\0c\c9\bf\e26\adI\ce]\f3?\00\c0E\a6 q\c8\bf@\d4M\98yF\f3?\000\14\b4\8f\d6\c7\bf$\cb\ff\ce\\/\f3?\00pb<\b8<\c7\bfI\0d\a1uw\18\f3?\00`7\9b\9a\a3\c6\bf\909>7\c8\01\f3?\00\a0\b7T1\0b\c6\bfA\f8\95\bbN\eb\f2?\000$v}s\c5\bf\d1\a9\19\02\n\d5\f2?\000\c2\8f{\dc\c4\bf*\fd\b7\a8\f9\be\f2?\00\00\d2Q,F\c4\bf\ab\1b\0cz\1c\a9\f2?\00\00\83\bc\8a\b0\c3\bf0\b5\14`r\93\f2?\00\00Ik\99\1b\c3\bf\f5\a1WW\fa}\f2?\00@\a4\90T\87\c2\bf\bf;\1d\9b\b3h\f2?\00\a0y\f8\b9\f3\c1\bf\bd\f5\8f\83\9dS\f2?\00\a0,%\c8`\c1\bf;\08\c9\aa\b7>\f2?\00 \f7W\7f\ce\c0\bf\b6@\a9+\01*\f2?\00\a0\feI\dc<\c0\bf2A\cc\96y\15\f2?\00\80K\bc\bdW\bf\bf\9b\fc\d2\1d \01\f2?\00@@\96\087\be\bf\0bHMI\f4\ec\f1?\00@\f9>\98\17\bd\bfie\8fR\f5\d8\f1?\00\a0\d8Ng\f9\bb\bf|~W\11#\c5\f1?\00`/ y\dc\ba\bf\e9&\cbt|\b1\f1?\00\80(\e7\c3\c0\b9\bf\b6\1a,\0c\01\9e\f1?\00\c0r\b3F\a6\b8\bf\bdp\b6{\b0\8a\f1?\00\00\ac\b3\01\8d\b7\bf\b6\bc\ef%\8aw\f1?\00\008E\f1t\b6\bf\da1L5\8dd\f1?\00\80\87m\0e^\b5\bf\dd_\'\90\b9Q\f1?\00\e0\a1\de\\H\b4\bfL\d22\a4\0e?\f1?\00\a0jM\d93\b3\bf\da\f9\10r\8b,\f1?\00`\c5\f8y \b2\bf1\b5\ec(0\1a\f1?\00 b\98F\0e\b1\bf\af4\84\da\fb\07\f1?\00\00\d2jl\fa\af\bf\b3kN\0f\ee\f5\f0?\00@wJ\8d\da\ad\bf\ce\9f*]\06\e4\f0?\00\00\85\e4\ec\bc\ab\bf!\a5,cD\d2\f0?\00\c0\12@\89\a1\a9\bf\1a\98\e2|\a7\c0\f0?\00\c0\023X\88\a7\bf\d16\c6\83/\af\f0?\00\80\d6g^q\a5\bf9\13\a0\98\db\9d\f0?\00\80eI\8a\\\a3\bf\df\e7R\af\ab\8c\f0?\00@\15d\e3I\a1\bf\fb(N/\9f{\f0?\00\80\eb\82\c0r\9e\bf\19\8f5\8c\b5j\f0?\00\80RR\f1U\9a\bf,\f9\ec\a5\eeY\f0?\00\80\81\cfb=\96\bf\90,\d1\cdII\f0?\00\00\aa\8c\fb(\92\bf\a9\ad\f0\c6\c68\f0?\00\00\f9 {1\8c\bf\a92y\13e(\f0?\00\00\aa]5\19\84\bfHs\ea\'$\18\f0?\00\00\ec\c2\03\12x\bf\95\b1\14\06\04\08\f0?\00\00$y\t\04`\bf\1a\fa&\f7\1f\e0\ef?\00\00\90\84\f3\efo?t\eaa\c2\1c\a1\ef?\00\00=5A\dc\87?.\99\81\b0\10c\ef?\00\80\c2\c4\a3\ce\93?\cd\ad\ee<\f6%\ef?\00\00\89\14\c1\9f\9b?\e7\13\91\03\c8\e9\ee?\00\00\11\ce\d8\b0\a1?\ab\b1\cbx\80\ae\ee?\00\c0\01\d0[\8a\a5?\9b\0c\9d\a2\1at\ee?\00\80\d8@\83\\\a9?\b5\99\n\83\91:\ee?\00\80W\efj\'\ad?V\9a`\t\e0\01\ee?\00\c0\98\e5\98u\b0?\98\bbw\e5\01\ca\ed?\00 \0d\e3\f5S\b2?\03\91|\0b\f2\92\ed?\00\008\8b\dd.\b4?\ce\\\fbf\ac\\\ed?\00\c0W\87Y\06\b6?\9d\de^\aa,\'\ed?\00\00j5v\da\b7?\cd,k>n\f2\ec?\00`\1cNC\ab\b9?\02y\a7\a2m\be\ec?\00`\0d\bb\c7x\bb?m\087m&\8b\ec?\00 \e72\13C\bd?\04X]\bd\94X\ec?\00`\deq1\n\bf?\8c\9f\bb3\b5&\ec?\00@\91+\15g\c0??\e7\ec\ee\83\f5\eb?\00\b0\92\82\85G\c1?\c1\96\dbu\fd\c4\eb?\000\ca\cdn&\c2?(J\86\0c\1e\95\eb?\00P\c5\a6\d7\03\c3?,>\ef\c5\e2e\eb?\00\103<\c3\df\c3?\8b\88\c9gH7\eb?\00\80zk6\ba\c4?J0\1d!K\t\eb?\00\f0\d1(9\93\c5?~\ef\f2\85\e8\db\ea?\00\f0\18$\cdj\c6?\a2=`1\1d\af\ea?\00\90f\ec\f8@\c7?\a7X\d3?\e6\82\ea?\00\f0\1a\f5\c0\15\c8?\8bs\t\ef@W\ea?\00\80\f6T)\e9\c8?\'K\ab\90*,\ea?\00@\f8\026\bb\c9?\d1\f2\93\13\a0\01\ea?\00\00,\1c\ed\8b\ca?\1b<\db$\9f\d7\e9?\00\d0\01\\Q[\cb?\90\b1\c7\05%\ae\e9?\00\c0\bc\ccg)\cc?/\ce\97\f2.\85\e9?\00`H\d55\f6\cc?uK\a4\ee\ba\\\e9?\00\c0F4\bd\c1\cd?8H\e7\9d\c64\e9?\00\e0\cf\b8\01\8c\ce?\e6Rg/O\0d\e9?\00\90\17\c0\tU\cf?\9d\d7\ff\8eR\e6\e8?\00\b8\1f\12l\0e\d0?|\00\cc\9f\ce\bf\e8?\00\d0\93\0e\b8q\d0?\0e\c3\be\da\c0\99\e8?\00p\86\9ek\d4\d0?\fb\17#\aa\'t\e8?\00\d0K3\876\d1?\08\9a\b3\ac\00O\e8?\00H#g\0d\98\d1?U>e\e8I*\e8?\00\80\cc\e0\ff\f8\d1?`\02\f4\95\01\06\e8?\00hc\d7_Y\d2?)\a3\e0c%\e2\e7?\00\a8\14\t0\b9\d2?\ad\b5\dcw\b3\be\e7?\00`C\10r\18\d3?\c2%\97g\aa\9b\e7?\00\18\ecm&w\d3?W\06\17\f2\07y\e7?\000\af\fbO\d5\d3?\0c\13\d6\db\caV\e7?\00\e0/\e3\ee2\d4?") (data (i32.const 2112) "k\b6O\01\00\10\e6?<[B\91l\02~<\95\b4M\03\000\e6?A]\00H\ea\bf\8d\f6\05\eb\ff\ef\e6?S-\e2\1a\04\80~\bc\80\97\86\0e\00\10\e7?Ry\tqf\ff{<\12\e9g\fc\ff/\e7?$\87\bd&\e2\00\8c\89<\b9{F\13\000\e9?v\02\98KN\80\7f.\98\dd\ff\af\e9?7\93Z\8a\e0@\87\bcf\fbI\ed\ff\cf\e9?\00\e0\9b\c1\08\ce?O*\00\b0\ea?_?\ff<\04\fdi\bc\d1\1e\ae\d7\ff\cf\ea?\b4p\90\12\e7>\82\bcx\04Q\ee\ff\ef\ea?\a3\de\0e\e0>\06j<[\0de\db\ff\0f\eb?\b9\n\1f8\c8\06ZO\86\d0E\ff\8a<@\16\87\f9\ff\8f\eb?\f9\c3\c2\96w\fe|\f0\0f\00\f0\f4?\1cS\85\0b\89\7f\97<\d1K\dc\12\00\10\f5?6\a4fqe\04`\c9\03\00\b0\f5?\c0\0c\bf\n\08A\9f\bc\bc\19I\1d\00\d0\f5?)G%\fb*\81\98\bc\89z\b8\e7\ff\ef\f5?\04i\ed\80\b7~\94\bc") (data (i32.const 4160) "\be\f3\f8y\eca\f6?\de\aa\8c\80\f7{\d5\bf=\88\afJ\edq\f5?\dbm\c0\a7\f0\be\d2\bf\b0\10\f0\f09\95\f4?g:Q\7f\ae\1e\d0\bf\85\03\b8\b0\95\c9\f3?\e9$\82\a6\d81\cb\bf\a5d\88\0c\19\0d\f3?Xw\c0\nOW\c6\bf\a0\8e\0b{\"^\f2?\00\81\9c\c7+\aa\c1\bf?4\1aJJ\bb\f1?^\0e\8c\cevN\ba\bf\ba\e5\8a\f0X#\f1?\cc\1caZ<\97\b1\bf\a7\00\99A?\95\f0?\1e\0c\e18\f4R\a2\bf\00\00\00\00\00\00\f0?\00\00\00\00\00\00\00\00\acG\9a\fd\8c`\ee?\84Y\f2]\aa\a5\aa?\a0j\02\1f\b3\a4\ec?\b4.6\aaS^\bc?\e6\fcjW6 \eb?\08\db w\e5&\c5?-\aa\a1c\d1\c2\e9?pG\"\0d\86\c2\cb?\edAx\03\e6\86\e8?\e1~\a0\c8\8b\05\d1?bHS\f5\dcg\e7?\t\ee\b6W0\04\d4?") @@ -81,7 +81,7 @@ (data (i32.const 7968) "\8e\n\b9\12\00 \e6?\05\b6D\06\ab\04\89<\a64W\04\00`\e6?\a9\f7b\ea\9b\ffa<\c5\f2%\c3\ff\9f\e6?\ba\90<\cb\cf~\82<\04Z\b98\00\e0\e6?&\93sV\88\ff\88<\e3\94\99\e0\ff\1f\e7?\b1\82_\'@\fd\8a<\10\0eY\15\00`\e7?A\83#\b4u\fdr\bc\d5[e\12\00\a0\e7?v+$|\e6\08x<\a6\e9Y2\00\e0\e7?\b7\"\f6&\e4\08b\bc\d2\b2\b4\ed\ff\1f\e8?/\c9\a5\1eF\02\84\bc\c3\fc\fa-\00`\e8?\1f\9a\f2\a2\f4\f7m)\e0\ff\df\f2?\f9\a6\b2\da9|\9b<\82\f0\dc\f7\ff\1f\f3?TR\dcn3\f1}<`\8bZ\f0\ff_\f3?\eb1\cdLV\03\9e\bc\cc\ae\0e.\00\a0\f3?w\a4\d3K\e7\f0u<6\b2;\04\00\e0\f3?3\88\9d\14\cb}\9c<\ff\87\d1\02\00 \f4?(=-\cf\af\08~<\b1|8\0d\00`\f4?\a6\99e\857\08\82<\89\9fV\04\00\a0\f4?\d2\bcO\90\\\fa\89\bc\f3C5\04\00\e0\f4?)S\17\ed%\11x\bc\0f\7f\02\cc\ff\1f\f5?\dcTw\84\d8\83\98\e90.\90\80\91\bc") (data (i32.const 8992) "\be\f3\f8y\eca\f6?\190\96[\c6\fe\de\bf=\88\afJ\edq\f5?\a4\fc\d42h\0b\db\bf\b0\10\f0\f09\95\f4?{\b7\1f\n\8bA\d7\bf\85\03\b8\b0\95\c9\f3?{\cfm\1a\e9\9d\d3\bf\a5d\88\0c\19\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 9248) "\00\00\00\00\00\a0\f6?\00\00\00\00\00\00\00\00\00\c8\b9\f2\82,\d6\bf\80V7($\b4\fa<\00\00\00\00\00\80\f6?\00\00\00\00\00\00\00\00\00\08X\bf\bd\d1\d5\bf \f7\e0\d8\08\a5\1c\bd\00\00\00\00\00`\f6?\00\00\00\00\00\00\00\00\00XE\17wv\d5\bfmP\b6\d5\a4b#\bd\00\00\00\00\00@\f6?\00\00\00\00\00\00\00\00\00\f8-\87\ad\1a\d5\bf\d5g\b0\9e\e4\84\e6\bc\00\00\00\00\00 \f6?\00\00\00\00\00\00\00\00\00xw\95_\be\d4\bf\e0>)\93i\1b\04\bd\00\00\00\00\00\00\f6?\00\00\00\00\00\00\00\00\00`\1c\c2\8ba\d4\bf\cc\84LH/\d8\13=\00\00\00\00\00\e0\f5?\00\00\00\00\00\00\00\00\00\a8\86\860\04\d4\bf:\0b\82\ed\f3B\dc<\00\00\00\00\00\c0\f5?\00\00\00\00\00\00\00\00\00HiUL\a6\d3\bf`\94Q\86\c6\b1 =\00\00\00\00\00\a0\f5?\00\00\00\00\00\00\00\00\00\80\98\9a\ddG\d3\bf\92\80\c5\d4MY%=\00\00\00\00\00\80\f5?\00\00\00\00\00\00\00\00\00 \e1\ba\e2\e8\d2\bf\d8+\b7\99\1e{&=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00`\f5?\00\00\00\00\00\00\00\00\00\88\de\13Z\89\d2\bf?\b0\cf\b6\14\ca\15=\00\00\00\00\00@\f5?\00\00\00\00\00\00\00\00\00x\cf\fbA)\d2\bfv\daS($Z\16\bd\00\00\00\00\00 \f5?\00\00\00\00\00\00\00\00\00\98i\c1\98\c8\d1\bf\04T\e7h\bc\af\1f\bd\00\00\00\00\00\00\f5?\00\00\00\00\00\00\00\00\00\a8\ab\ab\\g\d1\bf\f0\a8\823\c6\1f\1f=\00\00\00\00\00\e0\f4?\00\00\00\00\00\00\00\00\00H\ae\f9\8b\05\d1\bffZ\05\fd\c4\a8&\bd\00\00\00\00\00\c0\f4?\00\00\00\00\00\00\00\00\00\90s\e2$\a3\d0\bf\0e\03\f4~\eek\0c\bd\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\a0\f4?\00\00\00\00\00\00\00\00\00\d0\b4\94%@\d0\bf\7f-\f4\9e\b86\f0\bc\00\00\00\00\00\80\f4?\00\00\00\00\00\00\00\00\00@^m\18\b9\cf\bf\87<\99\ab*W\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_none (func (param i32 i32))) (type $none_=>_none (func)) - (memory $0 0) + (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 $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))) + (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) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1468) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $std/new/aClass (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17860)) (export "memory" (memory $0)) (start $~start) - (func $~start + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots (local $0 i32) + global.get $std/new/aClass + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) - memory.size + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17860 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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.const 15 i32.add - i32.const -16 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 - i32.const 1068 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + i32.const 0 + i32.store + loop $for-loop|0 local.get $1 - i32.const 66603 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 17872 + 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 17872 + 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 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17860 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17860 + 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 $1 + i32.const 17860 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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.tee $0 - local.get $0 + 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 $0 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -43,36 +1222,288 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end - i32.const 1036 + local.get $1 + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - i32.const 1040 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + 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/itcms/__new (result i32) + (local $0 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 8 + i32.store offset=16 + local.get $0 + 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 $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 - i32.const 1044 + i32.store8 + local.get $0 + i32.const 4 + i32.add + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=6 + local.get $0 + i32.const 0 + i32.store8 offset=5 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=4 + local.get $0 + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/new/AClass + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/new/AClass $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + (local $0 i32) + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1476 + 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 i32.const 0 i32.store - i32.const 1048 - i32.const 3 - i32.store - i32.const 1052 - i32.const 8 + global.get $~lib/memory/__stack_pointer + call $~lib/rt/itcms/__new + local.tee $0 i32.store - i32.const 1056 + local.get $0 i32.const 1 i32.store - i32.const 1060 + local.get $0 f32.const 2 - f32.store - i32.const 1056 - i32.const 1056 + f32.store offset=4 + local.get $0 + local.get $0 i32.load i32.const 1 i32.add i32.store - i32.const 1060 + local.get $0 f32.const 3 - f32.store + f32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $std/new/aClass ) ) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index a4867f9976..fba5d1dbce 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -1,204 +1,2470 @@ (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 $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_f32_=>_none (func (param i32 f32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (memory $0 0) + (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(\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) "\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) (global $std/new/AClass.aStaticField (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $std/new/aClass (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (global $~lib/rt/__rtti_base i32 (i32.const 416)) + (global $~lib/memory/__data_end i32 (i32.const 452)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16836)) + (global $~lib/memory/__heap_base i32 (i32.const 16836)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $std/new/AClass#set:aField (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/new/AClass#set:anotherField (param $0 i32) (param $1 f32) + local.get $0 + local.get $1 + f32.store offset=4 + ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 - i32.const 15 + local.get $0 + i32.const 8 + i32.mul i32.add - i32.const 15 + 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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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.sub + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size - local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + 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 500 + 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.set $2 + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 502 + 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 - i32.gt_u + 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 - 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 + i32.const 0 + i32.const 1 + i32.gt_s + drop local.get $3 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 local.get $4 - memory.grow + 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 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add local.set $3 local.get $3 i32.const 0 - i32.store offset=4 + local.get $0 + call $~lib/memory/memory.fill local.get $3 + ) + (func $start:std/new + 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 - i32.store offset=8 - local.get $3 - local.get $1 - i32.store offset=12 - local.get $3 + f32.const 3 + call $std/new/AClass#constructor + global.set $std/new/aClass + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/new/aClass + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (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 $std/new/AClass + 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 $std/new/AClass $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:std/new + ) + (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 $std/new/AClass#constructor (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8 i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 i32.const 1 - i32.store + call $std/new/AClass#set:aField local.get $0 f32.const 2 - f32.store offset=4 + call $std/new/AClass#set:anotherField local.get $0 local.get $0 i32.load i32.const 1 i32.add - i32.store + call $std/new/AClass#set:aField local.get $0 local.get $1 - f32.store offset=4 + call $std/new/AClass#set:anotherField local.get $0 - ) - (func $start:std/new - global.get $~lib/memory/__heap_base + local.set $2 + global.get $~lib/memory/__stack_pointer 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 - f32.const 3 - call $std/new/AClass#constructor - global.set $std/new/aClass - ) - (func $~start - call $start:std/new + global.set $~lib/memory/__stack_pointer + local.get $2 ) ) diff --git a/tests/compiler/std/object.json b/tests/compiler/std/object.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/std/object.json +++ b/tests/compiler/std/object.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 0b3cd4bf69..978fcfe3e6 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -6,11 +6,17 @@ (type $f64_f64_=>_i32 (func (param f64 f64) (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\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") - (data (i32.const 1084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 1148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 1180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s") + (data (i32.const 1084) "\1c") + (data (i32.const 1096) "\01\00\00\00\02\00\00\00a") + (data (i32.const 1116) "\1c") + (data (i32.const 1128) "\01\00\00\00\02\00\00\00b") + (data (i32.const 1148) "\1c") + (data (i32.const 1160) "\01\00\00\00\04\00\00\00a\00b") + (data (i32.const 1180) "\1c") + (data (i32.const 1192) "\01") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17596)) (export "memory" (memory $0)) (start $~start) (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) @@ -62,14 +68,42 @@ i32.ne i32.eq ) + (func $~start + call $start:std/object + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1212 + i32.lt_s + if + i32.const 17616 + i32.const 17664 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -80,13 +114,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -95,6 +136,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -107,7 +154,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -127,10 +173,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -138,23 +184,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -171,12 +217,51 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) + (func $~lib/object/Object.is<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $start:std/object + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store f64.const 0 f64.const 0 call $~lib/object/Object.is @@ -555,9 +640,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 1104 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1104 - call $~lib/string/String.__eq + i32.store offset=4 + i32.const 1104 + i32.const 1104 + call $~lib/object/Object.is<~lib/string/String> i32.const 1 i32.ne if @@ -568,9 +659,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 1104 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1136 - call $~lib/string/String.__eq + i32.store offset=4 + i32.const 1104 + i32.const 1136 + call $~lib/object/Object.is<~lib/string/String> if i32.const 0 i32.const 1056 @@ -579,9 +676,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 1104 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1168 - call $~lib/string/String.__eq + i32.store offset=4 + i32.const 1104 + i32.const 1168 + call $~lib/object/Object.is<~lib/string/String> if i32.const 0 i32.const 1056 @@ -592,7 +695,7 @@ end i32.const 0 i32.const 0 - call $~lib/string/String.__eq + call $~lib/object/Object.is<~lib/string/String> i32.const 1 i32.ne if @@ -603,9 +706,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store i32.const 1200 i32.const 0 - call $~lib/string/String.__eq + call $~lib/object/Object.is<~lib/string/String> if i32.const 0 i32.const 1056 @@ -614,9 +720,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 i32.const 0 i32.const 1200 - call $~lib/string/String.__eq + call $~lib/object/Object.is<~lib/string/String> if i32.const 0 i32.const 1056 @@ -625,8 +734,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/object + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index c6c2ff46c9..02e116ff40 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -1,21 +1,23 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_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 $f32_f32_=>_i32 (func (param f32 f32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result 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\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00\00\00") - (data (i32.const 60) "\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 92) "\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 124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 156) "\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 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00o\00b\00j\00e\00c\00t\00.\00t\00s\00\00\00") + (data (i32.const 60) "\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 92) "\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 124) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") + (data (i32.const 156) "\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) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/memory/__data_end i32 (i32.const 188)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16572)) + (global $~lib/memory/__heap_base i32 (i32.const 16572)) (export "memory" (memory $0)) (start $~start) (func $~lib/object/Object.is (param $0 f64) (param $1 f64) (result i32) @@ -90,12 +92,6 @@ i32.ne i32.eq ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -110,13 +106,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -203,12 +192,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -223,33 +206,45 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 + ) + (func $~start + call $start:std/object + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16592 + i32.const 16640 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 local.get $1 i32.eq if i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 @@ -264,86 +259,139 @@ end if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 - call $~lib/string/String#get:length local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 call $~lib/string/String#get:length i32.ne if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.const 0 local.get $1 - i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 + i32.const 0 + local.get $2 call $~lib/util/string/compareImpl i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $~lib/object/Object.is<~lib/string/String> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 drop local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/string/String.__eq local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $~lib/object/Object.is<~lib/string/String|null> (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 drop local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/string/String.__eq local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $start:std/object + (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 f64.const 0 f64.const 0 call $~lib/object/Object.is @@ -833,7 +881,17 @@ unreachable end i32.const 80 + 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/object/Object.is<~lib/string/String> i32.const 1 i32.eq @@ -847,7 +905,17 @@ unreachable end i32.const 80 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 112 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/object/Object.is<~lib/string/String> i32.const 0 i32.eq @@ -861,7 +929,17 @@ unreachable end i32.const 80 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/object/Object.is<~lib/string/String> i32.const 0 i32.eq @@ -889,6 +967,11 @@ unreachable end i32.const 176 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 call $~lib/object/Object.is<~lib/string/String|null> i32.const 0 @@ -904,6 +987,11 @@ end i32.const 0 i32.const 176 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/object/Object.is<~lib/string/String|null> i32.const 0 i32.eq @@ -916,8 +1004,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/object + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/operator-overloading.json b/tests/compiler/std/operator-overloading.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/operator-overloading.json +++ b/tests/compiler/std/operator-overloading.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index acf0ffd920..89c3391190 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1,12 +1,38 @@ (module - (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_=>_i32 (func (param i32 i32) (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 $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))) (memory $0 1) - (data (i32.const 1036) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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) "L") + (data (i32.const 1448) "\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s") + (data (i32.const 1520) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1548) " \00\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/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)) @@ -73,186 +99,1884 @@ (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17956)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17956 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1520 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1524 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 - local.tee $3 - i32.const 28 + i32.const 2 + i32.shl i32.add - local.tee $1 - memory.size + 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 1392 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load local.tee $4 - i32.const 16 - i32.shl - i32.const 15 + 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 - i32.const -16 + local.get $1 + i32.load + i32.const -4 i32.and + i32.add + local.tee $5 + i32.load local.tee $2 - i32.gt_u + 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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 17968 + i32.const 0 + i32.store + i32.const 19536 + 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 17968 + 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 17968 + 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 17968 + i32.const 19540 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 17968 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17956 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 17956 + 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 $1 + i32.const 17956 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 1392 + i32.const 500 + 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 502 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 + local.get $1 + 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 $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.store8 + local.get $0 + i32.const 4 + i32.add + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=1 + local.get $0 + i32.const 0 + i32.store8 offset=2 + local.get $0 + i32.const 0 + i32.store8 offset=6 + local.get $0 + i32.const 0 + i32.store8 offset=5 + local.get $0 + i32.const 0 + i32.store8 offset=3 + local.get $0 + i32.const 0 + i32.store8 offset=4 + local.get $0 + ) + (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + i32.const 1 + local.set $2 + loop $while-continue|0 + local.get $1 + if + local.get $0 + local.get $2 + i32.mul + local.get $2 + local.get $1 + i32.const 1 + i32.and + select + local.set $2 + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + br $while-continue|0 + end + end + local.get $2 + ) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.eq + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.eq + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.ne + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.ne + else + i32.const 0 + end + ) + (func $~lib/rt/__visit_globals + (local $0 i32) + global.get $std/operator-overloading/a1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shr + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pres + local.tee $0 if - local.get $4 - local.get $1 - local.get $2 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $2 - local.get $2 - local.get $4 - i32.lt_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 + call $~lib/rt/itcms/__visit end - local.get $1 - global.set $~lib/rt/stub/offset - i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $0 - i32.store offset=12 - local.get $1 - i32.const 8 - i32.store offset=16 - local.get $3 - i32.const 16 - i32.add - ) - (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 3 - call $~lib/rt/stub/__new - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 1 - local.set $2 - loop $while-continue|0 - local.get $1 - if - local.get $0 - local.get $2 - i32.mul - local.get $2 - local.get $1 - i32.const 1 - i32.and - select - local.set $2 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|0 - end + global.get $std/operator-overloading/neg + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.eq - if (result i32) + global.get $std/operator-overloading/nres + local.tee $0 + if local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.eq - else - i32.const 0 + call $~lib/rt/itcms/__visit end - ) - (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - i32.load - i32.ne - if (result i32) + global.get $std/operator-overloading/not + local.tee $0 + if local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/res + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/excl + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/incdec + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii1 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 4 - call $~lib/rt/stub/__new - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + return + end + unreachable ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - i32.const 5 - call $~lib/rt/stub/__new - local.tee $2 - local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=4 - local.get $2 + (func $~start + call $start:std/operator-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1572 + i32.lt_s + if + i32.const 17984 + i32.const 18032 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end ) (func $start:std/operator-overloading (local $0 i32) (local $1 i32) - i32.const 1116 - global.set $~lib/rt/stub/offset + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 i32.const 2 call $std/operator-overloading/Tester#constructor @@ -261,17 +1985,23 @@ i32.const 3 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/a1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/a2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/a2 - local.tee $1 + local.get $0 i32.load i32.add - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.add call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a @@ -290,7 +2020,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -304,17 +2034,23 @@ i32.const -3 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/s1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/s2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/s2 - local.tee $1 + local.get $0 i32.load i32.sub - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.sub call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s @@ -331,7 +2067,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -345,17 +2081,23 @@ i32.const 2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/m1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/m2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/m2 - local.tee $1 + local.get $0 i32.load i32.mul - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.mul call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m @@ -374,7 +2116,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -388,17 +2130,23 @@ i32.const 10 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/d1 - local.tee $0 - i32.load - global.get $std/operator-overloading/d2 local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/d2 + local.tee $0 + i32.store offset=4 + local.get $1 i32.load - i32.div_s local.get $0 - i32.load offset=4 + i32.load + i32.div_s local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.div_s call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d @@ -417,7 +2165,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -431,17 +2179,23 @@ i32.const 10 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/f1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/f2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/f2 - local.tee $1 + local.get $0 i32.load i32.rem_s - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.rem_s call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f @@ -459,7 +2213,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 169 i32.const 1 call $~lib/builtins/abort @@ -473,17 +2227,23 @@ i32.const 5 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/p1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/p2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/p2 - local.tee $1 + local.get $0 i32.load call $~lib/math/ipow32 - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 call $~lib/math/ipow32 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p @@ -502,7 +2262,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -516,17 +2276,23 @@ i32.const 255 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/n1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/n2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/n2 - local.tee $1 + local.get $0 i32.load i32.and - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.and call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n @@ -545,7 +2311,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -559,17 +2325,23 @@ i32.const 0 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/o1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/o2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/o2 - local.tee $1 + local.get $0 i32.load i32.or - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.or call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o @@ -588,7 +2360,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -602,17 +2374,23 @@ i32.const 0 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/x1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/x2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/x2 - local.tee $1 + local.get $0 i32.load i32.xor - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.xor call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x @@ -631,7 +2409,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -645,8 +2423,16 @@ i32.const -2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq2 + local.tee $0 + i32.store offset=4 + local.get $1 + local.get $0 call $std/operator-overloading/Tester.equals global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq @@ -654,7 +2440,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -668,34 +2454,58 @@ i32.const 1 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq4 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq3 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq4 + local.tee $0 + i32.store offset=4 + local.get $1 + local.get $0 call $std/operator-overloading/Tester.equals global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq2 + local.tee $0 + i32.store offset=4 + local.get $1 + local.get $0 call $std/operator-overloading/Tester.notEquals global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq3 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/eq4 + local.tee $0 + i32.store offset=4 + local.get $1 + local.get $0 call $std/operator-overloading/Tester.notEquals global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf @@ -703,7 +2513,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 213 i32.const 1 call $~lib/builtins/abort @@ -717,18 +2527,24 @@ i32.const 0 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gt2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/gt1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gt2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/gt2 - local.tee $1 + local.get $0 i32.load i32.gt_s if (result i32) - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.gt_s else i32.const 0 @@ -739,7 +2555,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -753,18 +2569,24 @@ i32.const 2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gte2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/gte1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/gte2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/gte2 - local.tee $1 + local.get $0 i32.load i32.ge_s if (result i32) - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.ge_s else i32.const 0 @@ -775,7 +2597,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -789,18 +2611,24 @@ i32.const 6 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/le2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/le1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/le2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/le2 - local.tee $1 + local.get $0 i32.load i32.lt_s if (result i32) - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.lt_s else i32.const 0 @@ -811,7 +2639,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -825,18 +2653,24 @@ i32.const 3 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/leq2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/leq1 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/leq2 local.tee $0 + i32.store offset=4 + local.get $1 i32.load - global.get $std/operator-overloading/leq2 - local.tee $1 + local.get $0 i32.load i32.le_s if (result i32) - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.le_s else i32.const 0 @@ -847,7 +2681,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 237 i32.const 1 call $~lib/builtins/abort @@ -857,8 +2691,11 @@ i32.const 16 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shr + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/shr local.tee $0 + i32.store + local.get $0 i32.load i32.const 3 i32.shr_s @@ -883,7 +2720,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 242 i32.const 1 call $~lib/builtins/abort @@ -893,8 +2730,11 @@ i32.const -16 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shu + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/shu local.tee $0 + i32.store + local.get $0 i32.load i32.const 3 i32.shr_u @@ -919,7 +2759,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -929,8 +2769,11 @@ i32.const 2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shl + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/shl local.tee $0 + i32.store + local.get $0 i32.load i32.const 3 i32.shl @@ -955,7 +2798,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -965,8 +2808,11 @@ i32.const -2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/pos + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/pos local.tee $0 + i32.store + local.get $0 i32.load local.get $0 i32.load offset=4 @@ -989,7 +2835,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -999,9 +2845,12 @@ i32.const -2 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/neg - i32.const 0 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/neg local.tee $0 + i32.store + i32.const 0 + local.get $0 i32.load i32.sub i32.const 0 @@ -1031,7 +2880,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -1041,8 +2890,11 @@ i32.const 16 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/not + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/not local.tee $0 + i32.store + local.get $0 i32.load i32.const -1 i32.xor @@ -1073,7 +2925,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -1083,8 +2935,11 @@ i32.const 0 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/excl + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/excl local.tee $0 + i32.store + local.get $0 i32.load if (result i32) i32.const 0 @@ -1107,7 +2962,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 272 i32.const 1 call $~lib/builtins/abort @@ -1118,7 +2973,7 @@ i32.ne if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 273 i32.const 1 call $~lib/builtins/abort @@ -1128,8 +2983,11 @@ i32.const 1 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec local.tee $0 + i32.store + local.get $0 local.get $0 i32.load i32.const 1 @@ -1158,14 +3016,17 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec local.tee $0 + i32.store + local.get $0 local.get $0 i32.load i32.const 1 @@ -1192,7 +3053,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -1202,8 +3063,14 @@ i32.const 1 call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load i32.const 1 i32.add @@ -1228,7 +3095,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -1249,14 +3116,20 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load i32.const 1 i32.sub @@ -1283,7 +3156,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -1302,7 +3175,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -1312,8 +3185,14 @@ i32.const 2 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.load i32.const 1 i32.add @@ -1327,17 +3206,23 @@ i32.const 3 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/ais2 local.tee $0 + i32.store offset=8 + local.get $1 i32.load - global.get $std/operator-overloading/ais2 - local.tee $1 + local.get $0 i32.load i32.add - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais @@ -1356,7 +3241,7 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -1366,8 +3251,11 @@ i32.const 2 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii1 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 local.tee $0 + i32.store offset=8 + local.get $0 i32.load i32.const 1 i32.add @@ -1381,17 +3269,23 @@ i32.const 3 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $std/operator-overloading/aii2 local.tee $0 + i32.store offset=12 + local.get $1 i32.load - global.get $std/operator-overloading/aii2 - local.tee $1 + local.get $0 i32.load i32.add - local.get $0 - i32.load offset=4 local.get $1 i32.load offset=4 + local.get $0 + i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii @@ -1410,14 +3304,96 @@ i32.eqz if i32.const 0 - i32.const 1056 + i32.const 1456 i32.const 332 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/operator-overloading + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + 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/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index bed7f6962a..07ecfe8863 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -1,16 +1,38 @@ (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_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (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))) (memory $0 1) - (data (i32.const 12) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data (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) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\006\00\00\00s\00t\00d\00/\00o\00p\00e\00r\00a\00t\00o\00r\00-\00o\00v\00e\00r\00l\00o\00a\00d\00i\00n\00g\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 496) "\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) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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)) @@ -28,7 +50,6 @@ (global $std/operator-overloading/f (mut i32) (i32.const 0)) (global $std/operator-overloading/p1 (mut i32) (i32.const 0)) (global $std/operator-overloading/p2 (mut i32) (i32.const 0)) - (global $~lib/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)) @@ -79,1058 +100,3396 @@ (global $std/operator-overloading/aii1 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 92)) + (global $~lib/rt/__rtti_base i32 (i32.const 496)) + (global $~lib/memory/__data_end i32 (i32.const 548)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16932)) + (global $~lib/memory/__heap_base i32 (i32.const 16932)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 96 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - i32.const 0 - i32.store offset=8 + call $~lib/rt/itcms/Object#set:prev local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + call $~lib/rt/itcms/Object#set:prev ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (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 $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.eqz if - i32.const 8 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + return end local.get $0 - local.get $1 - i32.store - local.get $0 + i32.const 20 + i32.sub + local.set $2 + i32.const 0 + drop local.get $2 - i32.store offset=4 - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop + 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 $std/operator-overloading/Tester.add (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/visitStack (param $0 i32) + (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain + global.get $~lib/memory/__stack_pointer local.set $1 - i32.const 0 + 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 - local.get $1 - 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 - i32.load offset=4 local.get $1 - i32.load offset=4 - i32.add - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store ) - (func $std/operator-overloading/Tester.sub (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.sub - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - local.set $2 + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store ) - (func $std/operator-overloading/Tester.mul (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.mul - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.mul - call $std/operator-overloading/Tester#constructor - local.set $2 + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=4 ) - (func $std/operator-overloading/Tester.div (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.div_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.div_s - call $std/operator-overloading/Tester#constructor - local.set $2 + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.store offset=8 ) - (func $std/operator-overloading/Tester.mod (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load + (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 - i32.rem_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.rem_s - call $std/operator-overloading/Tester#constructor local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + i32.const 1 + drop local.get $2 - ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) i32.const 1 - local.set $2 - i32.const 0 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 273 + 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 - i32.lt_s drop - local.get $1 - i32.const 0 - i32.le_s + 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 - local.get $0 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end - local.get $1 i32.const 0 - i32.eq - local.get $0 - i32.const 1 - i32.eq - i32.or - return + i32.const 368 + i32.const 275 + 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 $1 + 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.eq + 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 288 + 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 - return - else - local.get $1 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 i32.const 2 - i32.eq + 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.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 + 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 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 end end - local.get $2 ) - (func $std/operator-overloading/Tester.pow (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + (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 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load + 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 - call $~lib/math/ipow32 - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - call $~lib/math/ipow32 - call $std/operator-overloading/Tester#constructor local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + i32.const 1 + drop local.get $2 - ) - (func $std/operator-overloading/Tester.and (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.load - i32.and - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 + i32.const 1 i32.and - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.or (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - i32.const 0 - local.get $0 + local.set $3 + local.get $3 + i32.const 4 + i32.add + local.get $3 i32.load - local.get $1 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 i32.load - i32.or - local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.or - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + 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 - ) - (func $std/operator-overloading/Tester.xor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + 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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/stub/__retain - local.set $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 - call $~lib/rt/stub/__retain - local.set $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 - i32.load + 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.xor + i32.const 1 + local.get $9 + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap local.get $0 - i32.load offset=4 - local.get $1 - i32.load offset=4 - i32.xor - call $std/operator-overloading/Tester#constructor - local.set $2 + local.set $13 + local.get $9 + local.set $12 local.get $0 - call $~lib/rt/stub/__release + 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 - call $~lib/rt/stub/__release local.get $2 - ) - (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/stub/__retain + 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 - i32.load - local.get $1 - i32.load - i32.eq - if (result i32) - local.get $0 - i32.load offset=4 + 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 - i32.load offset=4 + local.get $4 + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 388 + 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 0 + 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 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release 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 $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain + (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 - local.get $1 - call $~lib/rt/stub/__retain + memory.size local.set $1 local.get $0 - i32.load + 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.load + 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.load offset=4 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 $std/operator-overloading/Tester#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/operator-overloading/Tester#set:y (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $std/operator-overloading/Tester.add (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.add + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.add + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.sub (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.sub + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.mul (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.mul + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.mul + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.div (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.div_s + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.div_s + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.mod (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.rem_s + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.rem_s + call $std/operator-overloading/Tester#constructor + ) + (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 1 + local.set $2 + i32.const 0 + i32.const 1 + i32.lt_s + drop + local.get $1 + i32.const 0 + i32.le_s + if + local.get $0 + i32.const -1 + i32.eq + if + i32.const -1 + i32.const 1 + local.get $1 + i32.const 1 + i32.and + select + return + end + local.get $1 + i32.const 0 + i32.eq + local.get $0 + i32.const 1 + i32.eq + i32.or + return + else + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + return + else + local.get $1 + i32.const 2 + i32.eq + if + local.get $0 + local.get $0 + i32.mul + return + else + local.get $1 + i32.const 32 + i32.lt_s + if + i32.const 32 + local.get $1 + i32.clz + i32.sub + local.set $3 + block $break|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $3 + local.set $4 + local.get $4 + i32.const 5 + i32.eq + br_if $case0|0 + local.get $4 + i32.const 4 + i32.eq + br_if $case1|0 + local.get $4 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $4 + i32.const 2 + i32.eq + br_if $case3|0 + local.get $4 + i32.const 1 + i32.eq + br_if $case4|0 + br $break|0 + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + end + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + end + local.get $2 + return + end + end + end + end + loop $while-continue|1 + local.get $1 + local.set $3 + local.get $3 + if + local.get $1 + i32.const 1 + i32.and + if + local.get $2 + local.get $0 + i32.mul + local.set $2 + end + local.get $1 + i32.const 1 + i32.shr_u + local.set $1 + local.get $0 + local.get $0 + i32.mul + local.set $0 + br $while-continue|1 + end + end + local.get $2 + ) + (func $std/operator-overloading/Tester.pow (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + call $~lib/math/ipow32 + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + call $~lib/math/ipow32 + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.and (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.and + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.and + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.or (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.or + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.or + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.xor (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.load + i32.xor + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.xor + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.equals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.eq + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.eq + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.notEquals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.ne + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.ne + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.greater (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.gt_s + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.gt_s + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.greaterEquals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.ge_s + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.ge_s + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.less (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.lt_s + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.lt_s + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.lessEquals (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load + local.get $1 + i32.load + i32.le_s + if (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.load offset=4 + i32.le_s + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester.shr (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.shr_s + local.get $0 + i32.load offset=4 + local.get $1 + i32.shr_s + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.shu (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.shr_u + local.get $0 + i32.load offset=4 + local.get $1 + i32.shr_u + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.shl (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $1 + i32.shl + local.get $0 + i32.load offset=4 + local.get $1 + i32.shl + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.pos (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.neg (param $0 i32) (result i32) + i32.const 0 + i32.const 0 + local.get $0 + i32.load + i32.sub + i32.const 0 + local.get $0 + i32.load offset=4 + i32.sub + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.not (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + i32.const -1 + i32.xor + local.get $0 + i32.load offset=4 + i32.const -1 + i32.xor + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester.excl (param $0 i32) (result i32) + local.get $0 + i32.load + i32.eqz + if (result i32) + local.get $0 + i32.load offset=4 + i32.eqz + else + i32.const 0 + end + ) + (func $std/operator-overloading/Tester#inc (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:x + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/Tester#set:y + local.get $0 + ) + (func $std/operator-overloading/Tester#dec (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:x + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#set:y + local.get $0 + ) + (func $std/operator-overloading/Tester#postInc (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + i32.const 1 + i32.add + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/Tester#postDec (param $0 i32) (result i32) + i32.const 0 + local.get $0 + i32.load + i32.const 1 + i32.sub + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + call $std/operator-overloading/Tester#constructor + ) + (func $std/operator-overloading/TesterInlineStatic#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/operator-overloading/TesterInlineStatic#set:y (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $std/operator-overloading/TesterInlineInstance#set:x (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $std/operator-overloading/TesterInlineInstance#set:y (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/operator-overloading/a1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/a + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/m + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/d + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/f + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/p + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/n + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/o + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/x + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/eq4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gt2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/gte2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/le2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/leq2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shr + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/sres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shu + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ures + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/shl + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pos + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/pres + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/neg + local.tee $1 + if local.get $1 - i32.load offset=4 - i32.ne - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.greater (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.gt_s - if (result i32) + global.get $std/operator-overloading/nres + local.tee $1 + if + local.get $1 local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/not + local.tee $1 + if local.get $1 - i32.load offset=4 - i32.gt_s - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.greaterEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.ge_s - if (result i32) + global.get $std/operator-overloading/res + local.tee $1 + if + local.get $1 local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/excl + local.tee $1 + if local.get $1 - i32.load offset=4 - i32.ge_s - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.less (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.lt_s - if (result i32) + global.get $std/operator-overloading/incdec + local.tee $1 + if + local.get $1 local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/tmp + local.tee $1 + if local.get $1 - i32.load offset=4 - i32.lt_s - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.lessEquals (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.load - local.get $1 - i32.load - i32.le_s - if (result i32) + global.get $std/operator-overloading/ais1 + local.tee $1 + if + local.get $1 local.get $0 - i32.load offset=4 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/ais2 + local.tee $1 + if local.get $1 - i32.load offset=4 - i32.le_s - else - i32.const 0 + local.get $0 + call $~lib/rt/itcms/__visit end - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shr (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shr_s - local.get $0 - i32.load offset=4 - local.get $1 - i32.shr_s - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shu (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shr_u - local.get $0 - i32.load offset=4 - local.get $1 - i32.shr_u - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.shl (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $1 - i32.shl - local.get $0 - i32.load offset=4 - local.get $1 - i32.shl - call $std/operator-overloading/Tester#constructor - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $std/operator-overloading/Tester.pos (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - local.get $0 - i32.load offset=4 - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.neg (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - i32.const 0 - local.get $0 - i32.load - i32.sub - i32.const 0 - local.get $0 - i32.load offset=4 - i32.sub - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.not (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const 0 - local.get $0 - i32.load - i32.const -1 - i32.xor - local.get $0 - i32.load offset=4 - i32.const -1 - i32.xor - call $std/operator-overloading/Tester#constructor - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester.excl (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 - i32.load - i32.eqz - if (result i32) + global.get $std/operator-overloading/ais + local.tee $1 + if + local.get $1 local.get $0 - i32.load offset=4 - i32.eqz - else - i32.const 0 + call $~lib/rt/itcms/__visit end - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $std/operator-overloading/Tester#inc (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.add - i32.store - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - call $~lib/rt/stub/__retain - ) - (func $std/operator-overloading/Tester#dec (param $0 i32) (result i32) - local.get $0 - local.get $0 - i32.load - i32.const 1 - i32.sub - i32.store - 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/stub/__retain - ) - (func $std/operator-overloading/Tester#postInc (param $0 i32) (result i32) - i32.const 0 + global.get $std/operator-overloading/aii1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/operator-overloading/aii + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 local.get $0 - i32.load - i32.const 1 - i32.add + call $~lib/rt/itcms/__visit + i32.const 32 local.get $0 - i32.load offset=4 - i32.const 1 - i32.add - call $std/operator-overloading/Tester#constructor + call $~lib/rt/itcms/__visit ) - (func $std/operator-overloading/Tester#postDec (param $0 i32) (result i32) - i32.const 0 + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.load - i32.const 1 - i32.sub - local.get $0 - i32.load offset=4 - i32.const 1 - i32.sub - call $std/operator-overloading/Tester#constructor - ) - (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz + local.tee $2 if - i32.const 8 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 ) - (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.eqz + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $std/operator-overloading/TesterInlineInstance + block $std/operator-overloading/TesterInlineStatic + block $std/operator-overloading/Tester + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $std/operator-overloading/Tester $std/operator-overloading/TesterInlineStatic $std/operator-overloading/TesterInlineInstance $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 + call $start:std/operator-overloading + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 8 - i32.const 5 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + i32.const 16960 + i32.const 17008 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 ) (func $start:std/operator-overloading (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $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) - 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 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 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 i32.const 1 i32.const 2 @@ -1142,10 +3501,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/a2 global.get $std/operator-overloading/a1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/a2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.add - local.tee $0 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/a global.get $std/operator-overloading/a i32.load @@ -1162,7 +3529,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 145 i32.const 1 call $~lib/builtins/abort @@ -1179,10 +3546,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/s2 global.get $std/operator-overloading/s1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/s2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.sub - local.tee $1 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/s global.get $std/operator-overloading/s i32.load @@ -1199,7 +3574,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 151 i32.const 1 call $~lib/builtins/abort @@ -1216,10 +3591,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/m2 global.get $std/operator-overloading/m1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/m2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.mul - local.tee $2 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/m global.get $std/operator-overloading/m i32.load @@ -1236,7 +3619,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 157 i32.const 1 call $~lib/builtins/abort @@ -1253,10 +3636,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/d2 global.get $std/operator-overloading/d1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/d2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.div - local.tee $3 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/d global.get $std/operator-overloading/d i32.load @@ -1273,7 +3664,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 163 i32.const 1 call $~lib/builtins/abort @@ -1290,10 +3681,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/f2 global.get $std/operator-overloading/f1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/f2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.mod - local.tee $4 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/f global.get $std/operator-overloading/f i32.load @@ -1310,7 +3709,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 169 i32.const 1 call $~lib/builtins/abort @@ -1327,10 +3726,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/p2 global.get $std/operator-overloading/p1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/p2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.pow - local.tee $5 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/p global.get $std/operator-overloading/p i32.load @@ -1347,7 +3754,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 175 i32.const 1 call $~lib/builtins/abort @@ -1364,10 +3771,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/n2 global.get $std/operator-overloading/n1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/n2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.and - local.tee $6 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/n global.get $std/operator-overloading/n i32.load @@ -1384,7 +3799,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 181 i32.const 1 call $~lib/builtins/abort @@ -1401,10 +3816,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/o2 global.get $std/operator-overloading/o1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/o2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.or - local.tee $7 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/o global.get $std/operator-overloading/o i32.load @@ -1421,7 +3844,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 187 i32.const 1 call $~lib/builtins/abort @@ -1438,10 +3861,18 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/x2 global.get $std/operator-overloading/x1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/x2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.xor - local.tee $8 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/x global.get $std/operator-overloading/x i32.load @@ -1458,7 +3889,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 193 i32.const 1 call $~lib/builtins/abort @@ -1475,7 +3906,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq2 global.get $std/operator-overloading/eq1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/eq2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.equals global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq @@ -1484,7 +3925,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 199 i32.const 1 call $~lib/builtins/abort @@ -1501,7 +3942,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/eq4 global.get $std/operator-overloading/eq3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/eq4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.equals global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf @@ -1510,14 +3961,24 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/operator-overloading/eq1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/eq2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.notEquals global.set $std/operator-overloading/eq global.get $std/operator-overloading/eq @@ -1526,14 +3987,24 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/operator-overloading/eq3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/eq4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.notEquals global.set $std/operator-overloading/eqf global.get $std/operator-overloading/eqf @@ -1542,7 +4013,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 213 i32.const 1 call $~lib/builtins/abort @@ -1559,7 +4030,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gt2 global.get $std/operator-overloading/gt1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/gt2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.greater global.set $std/operator-overloading/gt global.get $std/operator-overloading/gt @@ -1568,7 +4049,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 219 i32.const 1 call $~lib/builtins/abort @@ -1585,7 +4066,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/gte2 global.get $std/operator-overloading/gte1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/gte2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.greaterEquals global.set $std/operator-overloading/gte global.get $std/operator-overloading/gte @@ -1594,7 +4085,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 225 i32.const 1 call $~lib/builtins/abort @@ -1611,7 +4102,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/le2 global.get $std/operator-overloading/le1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/le2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.less global.set $std/operator-overloading/le global.get $std/operator-overloading/le @@ -1620,7 +4121,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 231 i32.const 1 call $~lib/builtins/abort @@ -1637,7 +4138,17 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/leq2 global.get $std/operator-overloading/leq1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 global.get $std/operator-overloading/leq2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $std/operator-overloading/Tester.lessEquals global.set $std/operator-overloading/leq global.get $std/operator-overloading/leq @@ -1646,7 +4157,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 237 i32.const 1 call $~lib/builtins/abort @@ -1658,10 +4169,13 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shr global.get $std/operator-overloading/shr + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 3 call $std/operator-overloading/Tester.shr - local.tee $9 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/sres global.get $std/operator-overloading/sres i32.load @@ -1678,7 +4192,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 242 i32.const 1 call $~lib/builtins/abort @@ -1690,10 +4204,13 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shu global.get $std/operator-overloading/shu + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 3 call $std/operator-overloading/Tester.shu - local.tee $10 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/ures global.get $std/operator-overloading/ures i32.load @@ -1710,7 +4227,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 247 i32.const 1 call $~lib/builtins/abort @@ -1722,21 +4239,13 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/shl global.get $std/operator-overloading/shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 i32.const 3 call $std/operator-overloading/Tester.shl - local.tee $11 - local.tee $12 - global.get $std/operator-overloading/sres - local.tee $13 - i32.ne - if - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $13 - call $~lib/rt/stub/__release - end - local.get $12 global.set $std/operator-overloading/sres global.get $std/operator-overloading/sres i32.load @@ -1753,7 +4262,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 252 i32.const 1 call $~lib/builtins/abort @@ -1765,9 +4274,12 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/pos global.get $std/operator-overloading/pos + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester.pos - local.tee $12 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/pres global.get $std/operator-overloading/pres i32.load @@ -1786,7 +4298,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 257 i32.const 1 call $~lib/builtins/abort @@ -1798,9 +4310,12 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/neg global.get $std/operator-overloading/neg + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester.neg - local.tee $13 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/nres global.get $std/operator-overloading/nres i32.load @@ -1823,7 +4338,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 262 i32.const 1 call $~lib/builtins/abort @@ -1835,9 +4350,12 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/not global.get $std/operator-overloading/not + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester.not - local.tee $14 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/res global.get $std/operator-overloading/res i32.load @@ -1860,7 +4378,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 267 i32.const 1 call $~lib/builtins/abort @@ -1872,6 +4390,11 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/excl global.get $std/operator-overloading/excl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester.excl global.set $std/operator-overloading/bres global.get $std/operator-overloading/bres @@ -1889,7 +4412,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 272 i32.const 1 call $~lib/builtins/abort @@ -1901,7 +4424,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 273 i32.const 1 call $~lib/builtins/abort @@ -1913,20 +4436,12 @@ call $std/operator-overloading/Tester#constructor global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester#inc - local.tee $15 - local.tee $16 - global.get $std/operator-overloading/incdec - local.tee $17 - i32.ne - if - local.get $16 - call $~lib/rt/stub/__retain - local.set $16 - local.get $17 - call $~lib/rt/stub/__release - end - local.get $16 global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -1943,27 +4458,19 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 279 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/operator-overloading/incdec + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester#dec - local.tee $16 - local.tee $17 - global.get $std/operator-overloading/incdec - local.tee $18 - i32.ne - if - local.get $17 - call $~lib/rt/stub/__retain - local.set $17 - local.get $18 - call $~lib/rt/stub/__release - end - local.get $17 global.set $std/operator-overloading/incdec global.get $std/operator-overloading/incdec i32.load @@ -1980,7 +4487,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 282 i32.const 1 call $~lib/builtins/abort @@ -1990,30 +4497,20 @@ i32.const 0 i32.const 1 call $std/operator-overloading/Tester#constructor - local.set $18 - global.get $std/operator-overloading/incdec - call $~lib/rt/stub/__release - local.get $18 global.set $std/operator-overloading/incdec + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec - local.tee $18 + local.tee $0 + i32.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester#postInc - local.tee $17 - local.tee $19 - global.get $std/operator-overloading/incdec - local.tee $20 - i32.ne - if - local.get $19 - call $~lib/rt/stub/__retain - local.set $19 - local.get $20 - call $~lib/rt/stub/__release - end - local.get $19 global.set $std/operator-overloading/incdec - local.get $18 - call $~lib/rt/stub/__retain + local.get $0 global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp i32.load @@ -2030,7 +4527,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 287 i32.const 1 call $~lib/builtins/abort @@ -2051,42 +4548,25 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 288 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/incdec - local.tee $18 + local.tee $0 + i32.store offset=8 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $std/operator-overloading/Tester#postDec - local.tee $19 - local.tee $20 - global.get $std/operator-overloading/incdec - local.tee $21 - i32.ne - if - local.get $20 - call $~lib/rt/stub/__retain - local.set $20 - local.get $21 - call $~lib/rt/stub/__release - end - local.get $20 global.set $std/operator-overloading/incdec - local.get $18 - local.tee $21 - global.get $std/operator-overloading/tmp - local.tee $18 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - local.set $21 - local.get $18 - call $~lib/rt/stub/__release - end - local.get $21 + local.get $0 global.set $std/operator-overloading/tmp global.get $std/operator-overloading/tmp i32.load @@ -2103,7 +4583,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 291 i32.const 1 call $~lib/builtins/abort @@ -2124,7 +4604,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 292 i32.const 1 call $~lib/builtins/abort @@ -2135,68 +4615,51 @@ i32.const 2 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais1 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 - call $~lib/rt/stub/__retain - local.set $20 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.tee $0 + i32.store offset=8 i32.const 0 - local.get $20 + local.get $0 i32.load i32.const 1 i32.add - local.get $20 + local.get $0 i32.load offset=4 i32.const 1 i32.add call $std/operator-overloading/TesterInlineStatic#constructor - local.set $21 - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - local.tee $20 - local.tee $18 - global.get $std/operator-overloading/ais1 - local.tee $21 - i32.ne - if - local.get $18 - call $~lib/rt/stub/__retain - local.set $18 - local.get $21 - call $~lib/rt/stub/__release - end - local.get $18 global.set $std/operator-overloading/ais1 i32.const 0 i32.const 2 i32.const 3 call $std/operator-overloading/TesterInlineStatic#constructor global.set $std/operator-overloading/ais2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais1 - call $~lib/rt/stub/__retain - local.set $18 + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/ais2 - call $~lib/rt/stub/__retain - local.set $21 + local.tee $0 + i32.store offset=8 i32.const 0 - local.get $18 + local.get $1 i32.load - local.get $21 + local.get $0 i32.load i32.add - local.get $18 + local.get $1 i32.load offset=4 - local.get $21 + local.get $0 i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineStatic#constructor - local.set $22 - local.get $21 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $22 - local.tee $18 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/ais global.get $std/operator-overloading/ais i32.load @@ -2213,7 +4676,7 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 312 i32.const 1 call $~lib/builtins/abort @@ -2224,60 +4687,46 @@ i32.const 2 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii1 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 - local.set $22 + local.tee $0 + i32.store offset=8 i32.const 0 - local.get $22 + local.get $0 i32.load i32.const 1 i32.add - local.get $22 + local.get $0 i32.load offset=4 i32.const 1 i32.add call $std/operator-overloading/TesterInlineInstance#constructor - local.tee $22 - local.tee $21 - global.get $std/operator-overloading/aii1 - local.tee $23 - i32.ne - if - local.get $21 - call $~lib/rt/stub/__retain - local.set $21 - local.get $23 - call $~lib/rt/stub/__release - end - local.get $21 global.set $std/operator-overloading/aii1 i32.const 0 i32.const 2 i32.const 3 call $std/operator-overloading/TesterInlineInstance#constructor global.set $std/operator-overloading/aii2 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii1 - local.set $21 + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $std/operator-overloading/aii2 - call $~lib/rt/stub/__retain - local.set $23 + local.tee $1 + i32.store offset=12 i32.const 0 - local.get $21 + local.get $0 i32.load - local.get $23 + local.get $1 i32.load i32.add - local.get $21 + local.get $0 i32.load offset=4 - local.get $23 + local.get $1 i32.load offset=4 i32.add call $std/operator-overloading/TesterInlineInstance#constructor - local.set $24 - local.get $23 - call $~lib/rt/stub/__release - local.get $24 - local.tee $21 - call $~lib/rt/stub/__retain global.set $std/operator-overloading/aii global.get $std/operator-overloading/aii i32.load @@ -2294,60 +4743,117 @@ i32.eqz if i32.const 0 - i32.const 32 + i32.const 432 i32.const 332 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/operator-overloading/Tester#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 8 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - call $~lib/rt/stub/__release local.get $1 - call $~lib/rt/stub/__release + call $std/operator-overloading/Tester#set:x + local.get $0 local.get $2 - call $~lib/rt/stub/__release + call $std/operator-overloading/Tester#set:y + 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 - call $~lib/rt/stub/__release - local.get $4 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release - local.get $6 - call $~lib/rt/stub/__release - local.get $7 - call $~lib/rt/stub/__release - local.get $8 - call $~lib/rt/stub/__release - local.get $9 - call $~lib/rt/stub/__release - local.get $10 - call $~lib/rt/stub/__release - local.get $11 - call $~lib/rt/stub/__release - local.get $12 - call $~lib/rt/stub/__release - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - call $~lib/rt/stub/__release - local.get $15 - call $~lib/rt/stub/__release - local.get $16 - call $~lib/rt/stub/__release - local.get $17 - call $~lib/rt/stub/__release - local.get $18 - call $~lib/rt/stub/__release - local.get $19 - call $~lib/rt/stub/__release - local.get $20 - call $~lib/rt/stub/__release - local.get $21 - call $~lib/rt/stub/__release - local.get $22 - call $~lib/rt/stub/__release ) - (func $~start - call $start:std/operator-overloading + (func $std/operator-overloading/TesterInlineStatic#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $std/operator-overloading/TesterInlineStatic#set:x + local.get $0 + local.get $2 + call $std/operator-overloading/TesterInlineStatic#set:y + 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 + ) + (func $std/operator-overloading/TesterInlineInstance#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + local.get $1 + call $std/operator-overloading/TesterInlineInstance#set:x + local.get $0 + local.get $2 + call $std/operator-overloading/TesterInlineInstance#set:y + 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/std/pointer.json b/tests/compiler/std/pointer.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/pointer.json +++ b/tests/compiler/std/pointer.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index e2ee8259ca..df0d3d592d 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -4,7 +4,8 @@ (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\1c\00\00\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s") + (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") (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)) diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 7a26f0477a..abf2467f3a 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -1,11 +1,11 @@ (module (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_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\00s\00t\00d\00/\00p\00o\00i\00n\00t\00e\00r\00.\00t\00s\00") + (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) (global $std/pointer/one (mut i32) (i32.const 0)) (global $std/pointer/two (mut i32) (i32.const 0)) @@ -14,10 +14,20 @@ (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__release (param $0 i32) - nop + (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) @@ -1495,24 +1505,16 @@ i32.const 8 local.set $0 local.get $0 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 global.set $std/pointer/one i32.const 0 - local.set $0 - i32.const 24 - local.set $2 - local.get $2 local.set $1 + i32.const 24 + local.set $0 local.get $0 - call $~lib/rt/stub/__release - local.get $1 global.set $std/pointer/two global.get $std/pointer/one - local.set $1 - local.get $1 + local.set $0 + local.get $0 i32.const 8 i32.eq i32.eqz @@ -1525,8 +1527,8 @@ unreachable end global.get $std/pointer/two - local.set $2 - local.get $2 + local.set $1 + local.get $1 i32.const 24 i32.eq i32.eqz @@ -1547,7 +1549,7 @@ br $std/pointer/Pointer#get:value|inlined.0 end i32.const 1 - i32.store + call $std/pointer/Entry#set:key block $std/pointer/Pointer#get:value|inlined.1 (result i32) global.get $std/pointer/one local.set $1 @@ -1557,13 +1559,13 @@ br $std/pointer/Pointer#get:value|inlined.1 end i32.const 2 - i32.store offset=4 + call $std/pointer/Entry#set:val block $std/pointer/Pointer#get:value|inlined.2 (result i32) global.get $std/pointer/one - local.set $2 + local.set $0 i32.const 1 drop - local.get $2 + local.get $0 br $std/pointer/Pointer#get:value|inlined.2 end i32.load @@ -1580,10 +1582,10 @@ end block $std/pointer/Pointer#get:value|inlined.3 (result i32) global.get $std/pointer/one - local.set $0 + local.set $1 i32.const 1 drop - local.get $0 + local.get $1 br $std/pointer/Pointer#get:value|inlined.3 end i32.load offset=4 @@ -1599,11 +1601,11 @@ unreachable end global.get $std/pointer/one - local.set $2 - global.get $std/pointer/two local.set $1 - local.get $2 + 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 @@ -1621,16 +1623,16 @@ unreachable end global.get $std/pointer/two - local.set $2 + local.set $0 global.get $std/pointer/one local.set $1 - local.get $2 + local.get $0 local.get $1 i32.sub global.set $std/pointer/sub global.get $std/pointer/sub - local.set $0 - local.get $0 + local.set $1 + local.get $1 i32.const 16 i32.eq i32.eqz @@ -1643,8 +1645,8 @@ unreachable end global.get $std/pointer/one - local.set $1 - local.get $1 + local.set $0 + local.get $0 i32.const 8 i32.eq i32.eqz @@ -1657,8 +1659,8 @@ unreachable end global.get $std/pointer/one - local.set $2 - local.get $2 + local.set $1 + local.get $1 i32.const 8 i32.add global.set $std/pointer/one @@ -1705,12 +1707,6 @@ unreachable end global.get $std/pointer/two - local.set $2 - local.get $2 - i32.const 8 - i32.sub - global.set $std/pointer/two - global.get $std/pointer/two local.set $0 local.get $0 i32.const 8 @@ -1720,6 +1716,12 @@ 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 @@ -1732,10 +1734,10 @@ end block $std/pointer/Pointer#get:value|inlined.4 (result i32) global.get $std/pointer/two - local.set $2 + local.set $1 i32.const 1 drop - local.get $2 + local.get $1 br $std/pointer/Pointer#get:value|inlined.4 end i32.load @@ -1771,7 +1773,7 @@ unreachable end global.get $std/pointer/one - local.set $0 + local.set $2 block $std/pointer/Pointer#get:value|inlined.6 (result i32) global.get $std/pointer/two local.set $1 @@ -1780,22 +1782,22 @@ local.get $1 br $std/pointer/Pointer#get:value|inlined.6 end - local.set $2 + local.set $0 i32.const 1 drop i32.const 0 drop - local.get $2 + local.get $0 i32.const 0 i32.eq if - local.get $0 + local.get $2 i32.const 0 i32.const 8 call $~lib/memory/memory.fill else - local.get $0 local.get $2 + local.get $0 i32.const 8 call $~lib/memory/memory.copy end @@ -1803,8 +1805,8 @@ local.set $1 local.get $1 global.get $std/pointer/two - local.set $2 - local.get $2 + local.set $0 + local.get $0 i32.ne i32.eqz if @@ -1817,10 +1819,10 @@ end block $std/pointer/Pointer#get:value|inlined.7 (result i32) global.get $std/pointer/one - local.set $0 + local.set $2 i32.const 1 drop - local.get $0 + local.get $2 br $std/pointer/Pointer#get:value|inlined.7 end i32.load @@ -1856,22 +1858,18 @@ unreachable end i32.const 0 - local.set $0 - i32.const 0 local.set $2 - local.get $2 - local.set $1 + i32.const 0 + local.set $0 local.get $0 - call $~lib/rt/stub/__release - local.get $1 global.set $std/pointer/buf global.get $std/pointer/buf - local.set $2 + local.set $0 i32.const 0 local.set $1 f32.const 1.100000023841858 local.set $3 - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.mul @@ -1881,22 +1879,22 @@ global.get $std/pointer/buf local.set $1 i32.const 1 - local.set $0 + local.set $2 f32.const 1.2000000476837158 local.set $3 local.get $1 - local.get $0 + local.get $2 i32.const 4 i32.mul i32.add local.get $3 f32.store global.get $std/pointer/buf - local.set $0 - i32.const 0 local.set $2 - local.get $0 + i32.const 0 + local.set $0 local.get $2 + local.get $0 i32.const 4 i32.mul i32.add @@ -1913,10 +1911,10 @@ unreachable end global.get $std/pointer/buf - local.set $2 + local.set $0 i32.const 1 local.set $1 - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.mul @@ -1936,9 +1934,9 @@ global.get $std/pointer/buf local.set $1 i32.const 0 - local.set $0 + local.set $2 local.get $1 - local.get $0 + local.get $2 i32.const 4 i32.mul i32.add @@ -1955,11 +1953,11 @@ unreachable end global.get $std/pointer/buf - local.set $0 - i32.const 1 local.set $2 - local.get $0 + i32.const 1 + local.set $0 local.get $2 + local.get $0 i32.const 4 i32.mul i32.add @@ -2002,12 +2000,12 @@ unreachable end global.get $std/pointer/buf - local.set $2 + local.set $0 i32.const 2 local.set $1 f32.const 1.2999999523162842 local.set $3 - local.get $2 + local.get $0 local.get $1 i32.const 4 i32.mul @@ -2017,9 +2015,9 @@ global.get $std/pointer/buf local.set $1 i32.const 2 - local.set $0 + local.set $2 local.get $1 - local.get $0 + local.get $2 i32.const 4 i32.mul i32.add @@ -2036,11 +2034,11 @@ unreachable end global.get $std/pointer/buf - local.set $0 - i32.const 2 local.set $2 - local.get $0 + i32.const 2 + local.set $0 local.get $2 + local.get $0 i32.const 4 i32.mul i32.add @@ -2080,10 +2078,10 @@ f32.store block $std/pointer/Pointer#get:value|inlined.0 (result f32) global.get $std/pointer/buf - local.set $2 + local.set $0 i32.const 0 drop - local.get $2 + local.get $0 f32.load br $std/pointer/Pointer#get:value|inlined.0 end diff --git a/tests/compiler/std/polyfills.json b/tests/compiler/std/polyfills.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/polyfills.json +++ b/tests/compiler/std/polyfills.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/polyfills.optimized.wat b/tests/compiler/std/polyfills.optimized.wat index e69ceec17c..1053b15e80 100644 --- a/tests/compiler/std/polyfills.optimized.wat +++ b/tests/compiler/std/polyfills.optimized.wat @@ -1,5 +1,6 @@ (module (memory $0 1) - (data (i32.const 1036) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") + (data (i32.const 1036) "<") + (data (i32.const 1048) "\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s") (export "memory" (memory $0)) ) diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 311798aa13..e6ee88e0c2 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -5,8 +5,11 @@ (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 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $~lib/polyfills/bswap (param $0 i32) (result i32) diff --git a/tests/compiler/std/set.json b/tests/compiler/std/set.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/set.json +++ b/tests/compiler/std/set.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 52aa702397..71cc98a61b 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1,40 +1,272 @@ (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 $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_none (func (param 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_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (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 $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) + (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (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))) (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) ",\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 1276) "<\00\00\00\01\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 1340) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") - (data (i32.const 1388) ",\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 1436) "<\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 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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1484) "<") + (data (i32.const 1496) "\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 1548) ",") + (data (i32.const 1560) "\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s") + (data (i32.const 1596) ",") + (data (i32.const 1608) "\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1648) "\17\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1676) "H\08\00\00\00\00\00\00B\08\00\00\00\00\00\00H\00\00\00\00\00\00\00B\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\82\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\82\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\02\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\02\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\02\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\02\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\02\1a") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18220)) (export "memory" (memory $0)) (start $~start) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1456 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18220 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1648 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1652 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -48,8 +280,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 272 + i32.const 1392 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -68,8 +300,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 274 + i32.const 1392 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -111,8 +343,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 287 + i32.const 1392 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -203,8 +435,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 200 + i32.const 1392 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -217,8 +449,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 202 + i32.const 1392 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -290,8 +522,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 223 + i32.const 1392 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -345,23 +577,23 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 238 + i32.const 1392 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1392 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -408,8 +640,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 255 + i32.const 1392 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -478,8 +710,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 380 + i32.const 1392 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -506,8 +738,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 387 + i32.const 1392 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -534,8 +766,8 @@ i32.lt_u if i32.const 0 - i32.const 1184 - i32.const 400 + i32.const 1392 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -602,10 +834,10 @@ if unreachable end - i32.const 1504 + i32.const 18224 i32.const 0 i32.store - i32.const 3072 + i32.const 19792 i32.const 0 i32.store loop $for-loop|0 @@ -616,7 +848,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 1504 + i32.const 18224 i32.add i32.const 0 i32.store offset=4 @@ -634,7 +866,7 @@ i32.add i32.const 2 i32.shl - i32.const 1504 + i32.const 18224 i32.add i32.const 0 i32.store offset=96 @@ -652,81 +884,302 @@ br $for-loop|0 end end - i32.const 1504 - i32.const 3076 + i32.const 18224 + i32.const 19796 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 1504 + i32.const 18224 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 1056 - i32.const 1184 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18220 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + 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 $1 + i32.const 18220 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -741,8 +1194,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 333 + i32.const 1392 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -793,8 +1246,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 346 + i32.const 1392 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -815,89 +1268,34 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1184 - i32.const 360 - i32.const 14 + i32.const 1056 + i32.const 1392 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 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 + i32.const 12 + i32.le_u + select local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -970,8 +1368,8 @@ i32.eqz if i32.const 0 - i32.const 1184 - i32.const 498 + i32.const 1392 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -985,8 +1383,8 @@ i32.gt_u if i32.const 0 - i32.const 1184 - i32.const 500 + i32.const 1392 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -994,118 +1392,80 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (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 + i32.const 4 + i32.add + i32.const 15 + i32.and if - i32.const 1056 - i32.const 1120 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT + local.get $3 + i32.const -4 + i32.and local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + local.tee $4 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 1500 - i32.gt_u + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - local.tee $1 - i32.load offset=4 - local.tee $2 - i32.const -268435456 + local.get $1 + local.get $2 + local.get $3 + i32.const 2 i32.and + i32.or + i32.store local.get $2 - i32.const 1 + local.get $1 + i32.const 4 + i32.add i32.add - i32.const -268435456 + 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 $3 + i32.const -2 i32.and - i32.ne - if - i32.const 0 - i32.const 1120 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $1 - local.get $2 - i32.const 1 + i32.const 4 i32.add - i32.store offset=4 + local.tee $0 local.get $1 i32.load - i32.const 1 + i32.const -4 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 $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1500 - i32.gt_u - if + i32.add local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + 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/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -1265,73 +1625,193 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (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.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if - i32.const 1248 - i32.const 1296 - i32.const 49 - i32.const 43 + i32.const 1056 + i32.const 1120 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end local.get $0 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 - i32.const 4 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 i32.store offset=12 + local.get $2 local.get $0 - i32.const 0 i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 + 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 i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.eqz + if + return + end local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 290 + 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.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 + i32.const 3 + i32.and + local.tee $0 + local.set $2 local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq if - local.get $0 - i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 local.tee $2 i32.const 1 i32.and @@ -1358,22 +1838,6 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1382,24 +1846,36 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 + 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 $6 + local.tee $5 i32.const 3 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.tee $3 + i32.store offset=4 local.get $0 i32.load offset=8 local.tee $8 @@ -1408,11 +1884,11 @@ i32.const 3 i32.shl i32.add - local.set $5 + 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 @@ -1428,7 +1904,7 @@ local.tee $7 i32.store8 local.get $2 - local.get $4 + local.get $6 local.get $1 local.get $7 i32.const -2128831035 @@ -1457,177 +1933,26 @@ br $while-continue|0 end end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $8 - call $~lib/rt/pure/__release - end local.get $0 - local.get $2 - i32.store + local.get $6 + call $~lib/set/Set#set:buckets local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end local.get $0 - local.get $1 - i32.store offset=8 + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 - local.get $0 - local.get $1 - local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (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 1184 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1802,173 +2127,16 @@ 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 + (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 $7 i32) 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 1500 - 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 1056 - i32.const 1120 - 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 1500 - 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) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - local.get $0 - i32.load offset=8 - local.tee $3 + i32.load offset=8 + local.tee $5 local.get $2 i32.shr_u i32.gt_u @@ -1979,8 +2147,8 @@ i32.shr_u i32.gt_u if - i32.const 1248 - i32.const 1408 + i32.const 1456 + i32.const 1616 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -1988,21 +2156,57 @@ end local.get $0 i32.load - local.tee $4 + local.tee $6 + local.set $3 + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 + local.get $2 + i32.shl + local.tee $7 + local.tee $4 + local.get $6 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $4 + i32.store offset=16 + local.get $3 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $4 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + local.get $4 + local.get $2 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $4 + i32.gt_u + select + call $~lib/memory/memory.copy + end local.get $1 - local.get $2 - i32.shl - local.tee $2 - call $~lib/rt/pure/__renew - local.tee $1 - local.get $3 + local.get $5 i32.add - local.get $2 - local.get $3 + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill local.get $1 - local.get $4 + local.get $6 i32.ne if local.get $0 @@ -2011,52 +2215,16 @@ local.get $0 local.get $1 i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/rt/itcms/__link end local.get $0 - local.get $2 + local.get $7 i32.store offset=8 end ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 - ) (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop local.get $0 local.get $1 i32.const 0 @@ -2065,8 +2233,29 @@ local.get $1 i32.store offset=12 ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#clear (param $0 i32) + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + 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 $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2074,626 +2263,530 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 i32.load offset=8 - local.set $6 + local.tee $8 local.get $0 i32.load offset=16 - local.tee $7 + i32.const 3 + i32.shl + i32.add local.set $4 - i32.const 16 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $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 $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 local.get $3 - i32.store - local.get $0 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $4 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $6 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $2 + local.get $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $1 local.get $2 - i32.load8_s - call $~lib/array/Array#__set + local.get $8 + i32.load8_u + local.tee $7 + i32.store8 + local.get $2 + local.get $6 local.get $1 - i32.const 1 + local.get $7 + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + i32.and + i32.const 2 + i32.shl i32.add - local.set $1 + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $5 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $5 - br $for-loop|0 + local.set $8 + br $while-continue|0 end end local.get $0 - local.get $1 - call $~lib/array/Array#set:length + local.get $6 + call $~lib/set/Set#set:buckets local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - i32.load offset=4 - local.get $1 + 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 - i32.load8_s + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/hash/hash16 (param $0 i32) (result i32) local.get $0 - local.get $1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 255 + i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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.const 8 i32.shr_u - local.tee $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - 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 $2 - call $~lib/set/Set#rehash - end + i32.xor + i32.const 16777619 + i32.mul ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + local.get $2 local.get $0 - i32.const 0 - i32.store offset=20 - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s + loop $while-continue|0 + local.get $0 if local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + return end local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has + local.get $8 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $8 + i32.load16_s + local.tee $7 + i32.store16 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $2 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $2 - br $for-loop|3 + local.set $8 + br $while-continue|0 end end local.get $0 + local.get $6 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/set/Set#set:entries + local.get $0 + local.get $5 + i32.store offset=12 + local.get $0 + local.get $0 i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#values + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.store offset=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 $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + local.get $0 + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has + local.get $8 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $8 + i32.load16_u + local.tee $7 + i32.store16 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash16 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $1 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $1 - br $for-loop|8 + local.set $8 + br $while-continue|0 end end local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1360 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + local.get $6 + call $~lib/set/Set#set:buckets local.get $0 - i32.const 3 + local.get $1 i32.store offset=4 local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - i32.const 4 + local.get $5 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.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) local.get $0 - local.get $1 - local.get $1 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $6 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 local.get $0 - i32.load offset=8 - local.tee $8 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 local.get $0 i32.load offset=16 i32.const 3 i32.shl i32.add - local.set $5 + 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 @@ -2705,17 +2798,14 @@ if local.get $2 local.get $8 - i32.load8_u + i32.load local.tee $7 - i32.store8 + i32.store local.get $2 - local.get $4 - local.get $1 + local.get $6 local.get $7 - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul + call $~lib/util/hash/hash32 + local.get $1 i32.and i32.const 2 i32.shl @@ -2738,145 +2828,78 @@ br $while-continue|0 end end - local.get $4 - local.tee $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $8 - call $~lib/rt/pure/__release - end local.get $0 - local.get $2 - i32.store + local.get $6 + call $~lib/set/Set#set:buckets local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end local.get $0 - local.get $1 - i32.store offset=8 + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - local.get $6 + local.get $5 i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 i32.store offset=16 - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.tee $2 - local.set $3 + i32.const 2 + call $~lib/array/ensureSize local.get $0 local.get $1 + i32.store offset=12 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load local.get $2 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load offset=12 - i32.eq if local.get $0 - 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 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and if (result i32) - local.get $0 - i32.load offset=4 + i32.const 0 else + local.get $1 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + i32.load + i32.eq end - call $~lib/set/Set#rehash + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store end - local.get $0 - call $~lib/rt/pure/__retain + i32.const 0 ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2884,519 +2907,353 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $6 - local.get $0 - i32.load offset=16 - local.tee $7 - local.set $4 - i32.const 16 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $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 $4 - i32.const 1073741820 - i32.gt_u - if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add local.tee $2 - local.get $4 - call $~lib/memory/memory.fill - local.get $2 - local.set $3 - local.get $2 - local.get $0 - i32.load - local.tee $8 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $8 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 i32.store - local.get $0 + 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 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 i32.store offset=4 local.get $0 - local.get $4 - i32.store offset=8 + i32.load offset=8 + local.tee $8 local.get $0 - local.get $4 - i32.store offset=12 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.lt_s + i32.load offset=16 + i32.const 3 + i32.shl + i32.add + local.set $4 + local.get $3 + local.set $2 + loop $while-continue|0 + local.get $4 + local.get $8 + i32.ne if - local.get $6 - local.get $5 - i32.const 3 - i32.shl - i32.add - local.tee $2 + local.get $8 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $1 local.get $2 - i32.load8_u - call $~lib/array/Array#__set + local.get $8 + i32.load + local.tee $7 + i32.store + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash32 local.get $1 - i32.const 1 + i32.and + i32.const 2 + i32.shl i32.add - local.set $1 + local.tee $7 + i32.load + i32.store offset=4 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end - local.get $5 - i32.const 1 + local.get $8 + i32.const 8 i32.add - local.set $5 - br $for-loop|0 + local.set $8 + br $while-continue|0 end end local.get $0 - local.get $1 - call $~lib/array/Array#set:length + local.get $6 + call $~lib/set/Set#set:buckets local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - i32.load offset=4 - local.get $1 + 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 - i32.load8_u + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/util/hash/hash64 (param $0 i64) (result i32) + (local $1 i32) local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul local.get $1 + i32.const 16 + i32.shr_u i32.const 255 i32.and - i32.const -2128831035 i32.xor i32.const 16777619 i32.mul - call $~lib/set/Set#find + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 local.tee $1 - i32.eqz - if - return - end + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $1 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load + local.get $2 local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 + i32.and + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - i32.const 4 - i32.lt_u - select - i32.ge_u - if (result i32) - local.get $0 - i32.load offset=20 + i32.load + local.set $0 + loop $while-continue|0 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 $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u if local.get $0 - local.get $2 - call $~lib/set/Set#has - if + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + else + local.get $1 + local.get $0 + i64.load + i64.eq end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + return end local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1360 + local.get $2 + local.get $9 + i64.load + local.tee $5 + i64.store + local.get $2 + local.get $8 + local.get $5 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 + i32.store + local.get $2 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.add + local.set $2 end - local.get $2 - i32.const 1 + local.get $9 + i32.const 16 i32.add - local.set $2 - br $for-loop|3 + local.set $9 + br $while-continue|0 end end local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $8 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 - end - end local.get $3 - i32.load offset=20 + call $~lib/set/Set#set:entries + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 local.get $0 i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 - local.get $1 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 43 - 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 - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 - if - i32.const 0 - i32.const 1360 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + i32.const 3 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release + local.get $1 + i32.store offset=12 ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + (func $~lib/set/Set#clear (param $0 i32) + local.get $0 i32.const 16 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 3 i32.store offset=4 local.get $0 - i32.const 32 + i32.const 64 call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 i32.store offset=12 @@ -3406,24 +3263,8 @@ local.get $0 i32.const 0 i32.store offset=20 - local.get $0 - ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) local.get $0 i32.load local.get $2 @@ -3439,19 +3280,17 @@ local.get $0 if local.get $0 - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.const 1 i32.and if (result i32) i32.const 0 else - local.get $0 - i32.load16_u local.get $1 - i32.const 65535 - i32.and - i32.eq + local.get $0 + i64.load + i64.eq end if local.get $0 @@ -3466,77 +3305,76 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 local.get $1 i32.const 1 i32.add - local.tee $3 + local.tee $2 i32.const 2 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 i32.shl i32.const 3 i32.div_s local.tee $7 - i32.const 3 + i32.const 4 i32.shl call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + local.tee $3 + 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 3 + i32.const 4 i32.shl i32.add - local.set $8 + local.set $6 local.get $3 local.set $2 loop $while-continue|0 - local.get $4 - local.get $8 + local.get $6 + local.get $9 i32.ne if - local.get $4 - local.tee $6 - i32.load offset=4 + local.get $9 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $2 - local.get $6 - i32.load16_s - local.tee $4 - i32.store16 + local.get $9 + i64.load + local.tee $5 + i64.store local.get $2 + local.get $8 local.get $5 - local.get $4 - call $~lib/util/hash/hash16 + call $~lib/util/hash/hash64 local.get $1 i32.and i32.const 2 @@ -3544,57 +3382,31 @@ i32.add local.tee $4 i32.load - i32.store offset=4 + i32.store offset=8 local.get $4 local.get $2 i32.store local.get $2 - i32.const 8 + i32.const 16 i32.add local.set $2 end - local.get $6 - i32.const 8 + local.get $9 + i32.const 16 i32.add - local.set $4 + local.set $9 br $while-continue|0 end end - local.get $5 - local.tee $2 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end local.get $0 - local.get $2 - i32.store + local.get $8 + call $~lib/set/Set#set:buckets local.get $0 local.get $1 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end local.get $0 - local.get $1 - i32.store offset=8 + local.get $3 + call $~lib/set/Set#set:entries local.get $0 local.get $7 i32.store offset=12 @@ -3602,1153 +3414,938 @@ local.get $0 i32.load offset=20 i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) local.get $0 - local.get $1 - local.get $1 - i32.const 16 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 + i32.add + i32.load + local.set $0 + loop $while-continue|0 local.get $0 - i32.load offset=12 - i32.eq if local.get $0 - 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 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and if (result i32) - local.get $0 - i32.load offset=4 + i32.const 0 else + local.get $1 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + f32.load + f32.eq end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 1 - call $~lib/array/ensureSize - 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/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + i32.const 0 ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + (local $5 f32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - local.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 + global.get $~lib/memory/__stack_pointer i32.const 8 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 + 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 $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 i32.store - local.get $0 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 3 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 i32.store offset=4 local.get $0 - i32.const 0 - i32.store offset=8 + i32.load offset=8 + local.tee $9 local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 536870910 - i32.gt_u - if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 + i32.load offset=16 + i32.const 3 i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill + i32.add + local.set $6 local.get $3 local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $8 + loop $while-continue|0 + local.get $6 local.get $9 - i32.gt_s + i32.ne if - local.get $5 local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $0 - local.get $1 - local.get $3 - i32.load16_s - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 + local.get $2 + local.get $9 + f32.load + local.tee $5 + f32.store + local.get $2 + local.get $8 + local.get $5 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=4 + local.get $4 + local.get $2 + i32.store + local.get $2 + i32.const 8 + i32.add + local.set $2 end local.get $9 - i32.const 1 + i32.const 8 i32.add local.set $9 - br $for-loop|0 + br $while-continue|0 end end local.get $0 - local.get $1 - call $~lib/array/Array#set:length + local.get $8 + call $~lib/set/Set#set:buckets local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 + i32.store offset=4 local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - i32.const 42 - 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/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) + local.get $3 + call $~lib/set/Set#set:entries local.get $0 - local.get $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 + local.get $7 + i32.store offset=12 local.get $0 local.get $0 i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 local.get $0 i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $2 - i32.const 1 + i32.and + i32.const 2 + i32.shl i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - 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 $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor + i32.load local.set $0 - loop $for-loop|1 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s + loop $while-continue|0 + local.get $0 if local.get $0 - local.get $2 - call $~lib/set/Set#has - if + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable + else + local.get $1 + local.get $0 + f64.load + f64.eq end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $0 + return end local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $8 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $7 + i32.const 4 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 + i32.load offset=8 + local.tee $9 + local.get $0 + i32.load offset=16 + i32.const 4 + i32.shl + i32.add + local.set $6 + local.get $3 local.set $2 - loop $for-loop|3 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s + loop $while-continue|0 + local.get $6 + local.get $9 + i32.ne if - local.get $0 - local.get $2 - call $~lib/set/Set#has + local.get $9 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 + local.get $2 + local.get $9 + f64.load + local.tee $5 + f64.store + local.get $2 + local.get $8 + local.get $5 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store offset=8 + local.get $4 + local.get $2 + i32.store + local.get $2 i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.add + local.set $2 end - local.get $2 - i32.const 1 + local.get $9 + i32.const 16 i32.add - local.set $2 - br $for-loop|3 + local.set $9 + br $while-continue|0 end end local.get $0 + local.get $8 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/set/Set#set:entries + local.get $0 + local.get $7 + i32.store offset=12 + local.get $0 + local.get $0 i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner1 + block $folding-inner0 + 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-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $folding-inner0 $folding-inner1 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return end local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|4 - local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $0 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + i32.const 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1360 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - local.get $3 - local.get $2 - local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|4 end end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne + 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 $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 27 - i32.const 3 + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $1 - loop $for-loop|6 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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.store + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.tee $2 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $0 - local.get $1 - call $~lib/set/Set#delete local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|6 + call $~lib/set/Set#rehash end - end - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 35 + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|8 + i32.shl + i32.add + local.tee $2 local.get $1 - i32.const 16 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 43 - 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 + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne + i32.load offset=12 + i32.ge_u if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - i32.load offset=20 - if + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + 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 1360 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor i32.store + local.get $1 local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 - i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.tee $4 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - local.set $2 - loop $while-continue|0 + local.get $0 + call $~lib/memory/memory.fill + local.get $2 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + 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 + i32.store + loop $for-loop|0 + local.get $0 local.get $4 - local.get $8 - i32.ne + i32.gt_s if + local.get $5 local.get $4 - local.tee $6 + i32.const 3 + i32.shl + i32.add + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $6 - i32.load16_u - local.tee $4 - i32.store16 - local.get $2 - local.get $5 - local.get $4 - call $~lib/util/hash/hash16 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load i32.store offset=4 - local.get $4 local.get $2 - i32.store - local.get $2 - i32.const 8 + local.get $1 + local.get $3 + i32.load8_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end - local.get $6 - i32.const 8 + local.get $4 + i32.const 1 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.load - local.tee $4 - i32.ne + i32.load offset=12 + i32.ge_u if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 i32.store local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.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=8 - local.tee $2 - i32.ne + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + i32.const 1 + i32.sub + i32.store offset=20 local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) local.get $0 - i32.load offset=16 + i32.load offset=20 local.get $0 i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.get $3 + i32.store local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 local.get $2 - i32.store + call $~lib/set/Set#rehash end - local.get $0 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $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 $8 - i32.const 536870910 - i32.gt_u - if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 1 - i32.shl - local.tee $6 + 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 - call $~lib/rt/pure/__new - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $0 i32.store - local.get $0 - local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $8 - local.get $9 - i32.gt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load16_u - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - 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#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - i32.const 42 - 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_u - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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 $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - 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 $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 loop $for-loop|1 local.get $2 - i32.const 65535 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 - i32.lt_u + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -4761,13 +4358,16 @@ br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -4777,34 +4377,44 @@ local.set $2 loop $for-loop|3 local.get $2 - i32.const 65535 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 - i32.lt_u + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -4817,49 +4427,73 @@ br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $1 local.get $2 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $0 local.get $2 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $3 local.get $2 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $1 i32.const 1 i32.add @@ -4867,14 +4501,20 @@ br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -4884,32 +4524,43 @@ local.set $1 loop $for-loop|6 local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 - i32.lt_u + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -4922,13 +4573,16 @@ br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -4938,47 +4592,63 @@ local.set $1 loop $for-loop|8 local.get $1 - i32.const 65535 - i32.and + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 - i32.lt_u + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -4991,862 +4661,790 @@ br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=20 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + i32.store local.get $0 + local.get $1 + local.get $1 i32.const 255 i32.and i32.const -2128831035 i32.xor i32.const 16777619 i32.mul + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u + i32.store + local.get $1 i32.const 255 i32.and + i32.const -2128831035 i32.xor i32.const 16777619 i32.mul + local.tee $2 + local.set $3 local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.load + local.get $1 local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 local.get $0 + i32.load offset=12 + i32.eq if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and + i32.store + local.get $0 + 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 if (result i32) - i32.const 0 - else - local.get $1 local.get $0 - i32.load - i32.eq - end - if + i32.load offset=4 + else local.get $0 - return + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 + call $~lib/set/Set#rehash end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store8 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.tee $4 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - local.set $2 - loop $while-continue|0 + local.get $0 + call $~lib/memory/memory.fill + local.get $2 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $2 + local.get $3 + i32.store offset=4 + local.get $2 + local.get $0 + 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 + i32.store + loop $for-loop|0 + local.get $0 local.get $4 - local.get $8 - i32.ne + i32.gt_s if + local.get $5 local.get $4 - local.tee $6 + i32.const 3 + i32.shl + i32.add + local.tee $3 i32.load offset=4 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $6 - i32.load - local.tee $4 - i32.store - local.get $2 - local.get $5 - local.get $4 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load i32.store offset=4 - local.get $4 - local.get $2 - i32.store local.get $2 - i32.const 8 + local.get $1 + local.get $3 + i32.load8_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end - local.get $6 - i32.const 8 + local.get $4 + i32.const 1 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.load - local.tee $4 - i32.ne + i32.load offset=12 + i32.ge_u if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 i32.store local.get $0 + i32.load offset=4 local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.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=8 - local.tee $2 - i32.ne + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + call $~lib/set/Set#find + local.tee $1 + i32.eqz if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + i32.const 1 + i32.sub + i32.store offset=20 local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) local.get $0 - i32.load offset=16 + i32.load offset=20 local.get $0 i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load - i32.store offset=4 - local.get $1 - local.get $2 - i32.store + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + else + i32.const 0 end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 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 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize + i32.store local.get $0 - local.get $3 - i32.store offset=12 + local.get $2 + call $~lib/set/Set#rehash end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i32.store - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 12 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + 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 + call $~lib/set/Set#constructor + local.tee $0 i32.store + loop $for-loop|1 + local.get $2 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.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 $8 - i32.const 268435455 - i32.gt_u + i32.load offset=20 + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 - i32.const 2 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 + i32.const 50 local.set $2 - local.get $3 + loop $for-loop|3 + local.get $2 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $4 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + call $~lib/set/Set#values + local.tee $2 i32.store offset=8 - local.get $0 - local.get $7 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 i32.store offset=12 - loop $for-loop|0 - local.get $8 - local.get $9 - i32.gt_s - if - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $0 - local.get $1 - local.get $3 - i32.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - 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#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - 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/set/Set#delete (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $1 - i32.eqz - if - return - end - local.get $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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 $2 - i32.const 1 - i32.add - i32.const 4 - local.get $0 - i32.load offset=20 - local.tee $1 - local.get $1 - 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 + loop $for-loop|4 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/set/Set#rehash - end - ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 - loop $for-loop|0 + i32.store offset=4 + local.get $1 local.get $2 - i32.const 100 + i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=16 local.get $0 local.get $2 - call $~lib/set/Set#has + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 - i32.const 8 + i32.const 1568 + i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|0 + local.set $1 + br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 - i32.const 100 i32.ne if i32.const 0 - i32.const 1360 - i32.const 10 + i32.const 1568 + i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 50 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_s + i32.const 0 + local.set $1 + loop $for-loop|6 + local.get $1 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 - i32.const 14 + i32.const 1568 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 - i32.const 16 + i32.const 1568 + i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 - br $for-loop|1 + local.set $1 + br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 - i32.const 100 + i32.const 50 i32.ne if i32.const 0 - i32.const 1360 - i32.const 18 + i32.const 1568 + i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|2 + i32.const 0 + local.set $1 + loop $for-loop|8 local.get $1 - local.get $2 - i32.load offset=12 - i32.lt_s + i32.const 255 + i32.and + i32.const 50 + i32.lt_u if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $2 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 - i32.const 24 + i32.const 1568 + i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|2 - end - end - local.get $3 - i32.load offset=20 - local.get $0 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 33 - 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 - local.get $0 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i32.const 50 - i32.lt_s - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 39 + i32.const 1568 + i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - call $~lib/set/Set#delete + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -5856,273 +5454,624 @@ i32.const 1 i32.add local.set $1 - br $for-loop|4 + br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.store offset=20 + i32.store local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#add (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 14 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - 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 $8 - i32.const 268435455 - i32.gt_u - if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.const 2 + local.get $1 + i32.const 16 i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 - local.get $3 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 i32.store local.get $0 + local.get $1 local.get $3 - i32.store offset=4 - local.get $0 - local.get $6 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - loop $for-loop|0 - local.get $8 - local.get $9 - i32.gt_s + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if - local.get $5 - local.get $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=12 i32.const 3 - i32.shl - i32.add - local.tee $3 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) local.get $0 - local.get $1 - local.get $3 - i32.load - call $~lib/array/Array#__set - local.get $1 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 i32.const 1 - i32.add - local.set $1 + i32.shl + i32.const 1 + i32.or end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + call $~lib/set/Set#rehash end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - call $~lib/array/Array#set:length local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric - (local $0 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - call $~lib/set/Set#constructor - local.set $0 + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $2 - i32.const 100 - i32.lt_u + local.get $4 + local.get $8 + i32.lt_s if - local.get $0 - local.get $2 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $2 - call $~lib/set/Set#has + local.get $6 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + i32.load16_s + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 end - local.get $2 + local.get $4 i32.const 1 i32.add - local.set $2 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=20 - i32.const 100 - i32.ne + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $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 + 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 0 - i32.const 1360 - i32.const 10 - i32.const 3 + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end - i32.const 50 - local.set $2 - loop $for-loop|1 - local.get $2 - i32.const 100 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + 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 $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $2 + loop $for-loop|3 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $2 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -6132,67 +6081,97 @@ i32.const 1 i32.add local.set $2 - br $for-loop|1 + br $for-loop|3 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $3 - loop $for-loop|2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $1 local.get $2 i32.load offset=12 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $0 local.get $2 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $3 local.get $2 local.get $1 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + call $~lib/set/Set#add local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|2 + br $for-loop|4 end end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -6200,32 +6179,45 @@ end i32.const 0 local.set $1 - loop $for-loop|3 + loop $for-loop|6 local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 - i32.lt_u + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -6235,16 +6227,19 @@ i32.const 1 i32.add local.set $1 - br $for-loop|3 + br $for-loop|6 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -6252,47 +6247,65 @@ end i32.const 0 local.set $1 - loop $for-loop|4 + loop $for-loop|8 local.get $1 - i32.const 50 - i32.lt_u + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -6302,185 +6315,177 @@ i32.const 1 i32.add local.set $1 - br $for-loop|4 + br $for-loop|8 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=20 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) + i32.store local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.tee $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 + i32.const 65535 i32.and - i32.xor - i32.const 16777619 - i32.mul + call $~lib/util/hash/hash16 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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 16 - i32.shr_u - i32.const 255 + i32.const 65535 i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + call $~lib/util/hash/hash16 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.get $2 + i32.store local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 local.get $0 + i32.load offset=12 + i32.eq if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and + i32.store + local.get $0 + 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 if (result i32) - i32.const 0 - else - local.get $1 local.get $0 - i64.load - i64.eq - end - if + i32.load offset=4 + else local.get $0 - return + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 + call $~lib/set/Set#rehash end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store16 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - i32.const 0 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6488,1320 +6493,1622 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 - local.tee $4 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - i32.const 4 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 536870910 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 i32.shl - i32.add - local.set $8 + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - local.set $2 - loop $while-continue|0 + local.get $5 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 local.get $4 local.get $8 - i32.ne + i32.lt_s if + local.get $6 local.get $4 - local.tee $6 - i32.load offset=8 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $2 - local.get $6 - i64.load - local.tee $9 - i64.store - local.get $2 - local.get $5 - local.get $9 - call $~lib/util/hash/hash64 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=8 - local.get $4 local.get $2 - i32.store - local.get $2 - i32.const 16 + i32.load16_u + call $~lib/array/Array#__set + local.get $1 + i32.const 1 i32.add - local.set $2 + local.set $1 end - local.get $6 - i32.const 16 + local.get $4 + i32.const 1 i32.add local.set $4 - br $while-continue|0 + br $for-loop|0 end end - local.get $5 - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end + i32.store offset=4 local.get $0 - local.get $2 - i32.store + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne + i32.load offset=12 + i32.ge_u if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 + i32.store local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 - call $~lib/util/hash/hash64 - local.tee $3 - call $~lib/set/Set#find + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + call $~lib/set/Set#find + local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + 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 $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + i32.const 4 + i32.lt_u + select + i32.ge_u + if (result i32) local.get $0 - i32.load offset=16 + i32.load offset=20 local.get $0 i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 + i32.const 3 + i32.mul i32.const 4 - i32.shl - i32.add - local.tee $2 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=8 - local.get $3 - local.get $2 - i32.store + i32.div_s + i32.lt_s + else + i32.const 0 end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 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 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize + i32.store local.get $0 - local.get $3 - i32.store offset=12 + local.get $2 + call $~lib/set/Set#rehash end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i64.store + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=12 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 16 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + 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 + call $~lib/set/Set#constructor + local.tee $0 i32.store + loop $for-loop|1 + local.get $2 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.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 $8 - i32.const 134217727 - i32.gt_u + i32.load offset=20 + i32.const 100 + i32.ne if - i32.const 1248 - i32.const 1408 - i32.const 57 - i32.const 60 + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $7 - i32.const 3 - i32.shl - local.tee $6 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 + i32.const 50 local.set $2 - local.get $3 + loop $for-loop|3 + local.get $2 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.tee $4 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 i32.ne if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $3 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 + call $~lib/set/Set#values + local.tee $2 i32.store offset=8 - local.get $0 - local.get $7 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 i32.store offset=12 - loop $for-loop|0 - local.get $8 - local.get $9 - i32.gt_s + loop $for-loop|4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load offset=12 + i32.lt_s if - local.get $5 - local.get $9 - i32.const 4 - i32.shl - i32.add - local.tee $3 - i32.load offset=8 - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if - local.get $0 - local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $9 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $1 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $1 + br $for-loop|4 end end - local.get $0 - local.get $1 - call $~lib/array/Array#set:length - local.get $0 - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1456 - i32.const 1408 - i32.const 104 - 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 - ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash64 - call $~lib/set/Set#find - local.tee $2 - i32.eqz - if - return - end - local.get $2 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 - local.get $0 - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.tee $3 - i32.const 1 - i32.add - i32.const 4 + i32.store offset=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 + i32.ne if - local.get $0 - local.get $3 - call $~lib/set/Set#rehash + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.store offset=8 - 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/set/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor local.set $1 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_s + loop $for-loop|6 + local.get $1 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz if i32.const 0 - i32.const 1360 - i32.const 6 + i32.const 1568 + i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 - i32.const 8 + i32.const 1568 + i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|6 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 - i32.const 100 + i32.const 50 i32.ne if i32.const 0 - i32.const 1360 - i32.const 10 + i32.const 1568 + i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 50 - local.set $0 - loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_s + i32.const 0 + local.set $1 + loop $for-loop|8 + local.get $1 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 - i32.const 14 + i32.const 1568 + i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|1 - end - end - local.get $1 - i32.load offset=20 - i32.const 100 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 - loop $for-loop|2 - local.get $3 - local.get $2 - i32.load offset=12 - i32.lt_s - if - local.get $1 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $4 - i32.load offset=20 - local.get $1 - i32.load offset=20 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_s - if local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 - local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz if i32.const 0 - i32.const 1360 - i32.const 33 + i32.const 1568 + i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|3 - end - end - local.get $1 - i32.load offset=20 - i32.const 50 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $0 - loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_s - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 - local.get $0 - call $~lib/set/Set#has + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $for-loop|4 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|8 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/set/Set#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 17 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.store offset=20 + i32.store local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#add (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.get $0 - i32.load offset=8 - local.set $5 - local.get $0 - i32.load offset=16 - local.tee $8 - local.set $7 - i32.const 16 - i32.const 18 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + call $~lib/util/hash/hash32 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.store offset=4 - local.get $0 - i32.const 0 - i32.store offset=8 + i32.store local.get $0 - i32.const 0 - i32.store offset=12 - local.get $8 - i32.const 134217727 - i32.gt_u + local.get $1 + local.get $3 + call $~lib/set/Set#find + i32.eqz if - i32.const 1248 - i32.const 1408 - i32.const 57 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $7 - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 i32.shl - local.tee $6 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $6 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/set/Set#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $6 + local.get $5 i32.store offset=8 local.get $0 - local.get $7 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 + local.get $4 local.get $8 - local.get $9 - i32.gt_s + i32.lt_s if - local.get $5 - local.get $9 - i32.const 4 + local.get $6 + local.get $4 + i32.const 3 i32.shl i32.add - local.tee $3 - i32.load offset=8 + local.tee $2 + i32.load offset=4 i32.const 1 i32.and i32.eqz if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - local.get $3 - i64.load - call $~lib/array/Array#__set + local.get $2 + i32.load + call $~lib/array/Array#__set local.get $1 i32.const 1 i32.add local.set $1 end - local.get $9 + local.get $4 i32.const 1 i32.add - local.set $9 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $std/set/testNumeric - (local $0 i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 - loop $for-loop|0 - local.get $0 - i64.const 100 - i64.lt_u - if - local.get $1 - local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 - local.get $0 - call $~lib/set/Set#has - i32.eqz + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + local.tee $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + 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 $2 + i32.const 1 + i32.add + i32.const 4 + local.get $0 + i32.load offset=20 + local.tee $1 + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $2 + i32.const 100 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 - i32.const 8 + i32.const 1568 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i64.add - local.set $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 50 - local.set $0 + i32.const 50 + local.set $2 loop $for-loop|1 - local.get $0 - i64.const 100 - i64.lt_u + local.get $2 + i32.const 100 + i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#has + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i64.add - local.set $0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 loop $for-loop|2 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $1 local.get $2 i32.load offset=12 i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + i32.store offset=16 + local.get $0 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $3 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|2 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.load offset=20 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $0 + i32.const 0 + local.set $1 loop $for-loop|3 - local.get $0 - i64.const 50 - i64.lt_u + local.get $1 + i32.const 50 + i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz - if + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i64.add - local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 - local.set $0 + i32.const 0 + local.set $1 loop $for-loop|4 - local.get $0 - i64.const 50 - i64.lt_u + local.get $1 + i32.const 50 + i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 1 - i64.add - local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/set/Set#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 19 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 32 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=16 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.store offset=20 + i32.store local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + call $~lib/util/hash/hash32 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - local.get $2 + i32.store local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + i32.eqz + if local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq if + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 1 - i32.and + i32.store + local.get $0 + 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 if (result i32) - i32.const 0 - else - local.get $1 local.get $0 - f32.load - f32.eq - end - if + i32.load offset=4 + else local.get $0 - return + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 + call $~lib/set/Set#rehash end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - call $~lib/set/Set#find - i32.const 0 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -7809,239 +8116,41 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f32) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 3 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 - i32.const 3 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - local.tee $6 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $6 - f32.load - local.tee $9 - f32.store - local.get $2 - local.get $5 - local.get $9 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=4 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 8 - i32.add - local.set $2 - end - local.get $6 - i32.const 8 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $2 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/set/Set#find - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $2 - local.get $1 - f32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store offset=4 - local.get $3 - local.get $2 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - local.tee $9 - local.set $8 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 - i32.const 20 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.const 14 + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -8049,160 +8158,160 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $9 + local.get $2 i32.const 268435455 i32.gt_u if - i32.const 1248 - i32.const 1408 - i32.const 57 + i32.const 1456 + i32.const 1616 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 2 i32.shl - local.tee $7 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/set/Set#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $7 + local.get $5 i32.store offset=8 local.get $0 - local.get $8 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $9 - local.get $10 - i32.gt_s + local.get $4 + local.get $8 + i32.lt_s if local.get $6 - local.get $10 + local.get $4 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load offset=4 i32.const 1 i32.and i32.eqz if - local.get $3 - f32.load - local.set $4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end + i32.store offset=4 local.get $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $4 - f32.store + local.get $2 + i32.load + call $~lib/array/Array#__set local.get $1 i32.const 1 i32.add local.set $1 end - local.get $10 + local.get $4 i32.const 1 i32.add - local.set $10 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~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 1456 - i32.const 1408 - i32.const 104 + i32.const 1248 + i32.const 1616 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 i32.const 2 i32.shl i32.add - f32.load + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $1 local.get $1 - i32.reinterpret_f32 call $~lib/util/hash/hash32 - call $~lib/set/Set#find - local.tee $2 + call $~lib/set/Set#find + local.tee $1 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.load offset=4 i32.const 1 i32.or @@ -8217,14 +8326,14 @@ i32.load offset=4 i32.const 1 i32.shr_u - local.tee $3 + local.tee $2 i32.const 1 i32.add i32.const 4 local.get $0 i32.load offset=20 - local.tee $2 - local.get $2 + local.tee $1 + local.get $1 i32.const 4 i32.lt_u select @@ -8243,533 +8352,463 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - call $~lib/set/Set#rehash + i32.store + local.get $0 + local.get $2 + call $~lib/set/Set#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric - (local $0 f32) + (func $std/set/testNumeric + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 + 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store loop $for-loop|0 - local.get $0 - f32.const 100 - f32.lt + local.get $2 + i32.const 100 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#has + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - f32.add - local.set $0 + local.get $2 + i32.const 1 + i32.add + local.set $2 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 50 - local.set $0 + i32.const 50 + local.set $2 loop $for-loop|1 - local.get $0 - f32.const 100 - f32.lt + local.get $2 + i32.const 100 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $1 + i32.store offset=4 local.get $0 - call $~lib/set/Set#has + local.get $2 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - f32.add - local.set $0 + 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 + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 loop $for-loop|2 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $1 local.get $2 i32.load offset=12 i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + i32.store offset=16 + local.get $0 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $3 + local.get $2 + local.get $1 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $1 i32.const 1 i32.add - local.set $3 + local.set $1 br $for-loop|2 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.load offset=20 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $0 + i32.const 0 + local.set $1 loop $for-loop|3 - local.get $0 - f32.const 50 - f32.lt + local.get $1 + i32.const 50 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - f32.add - local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 - local.set $0 + i32.const 0 + local.set $1 loop $for-loop|4 - local.get $0 - f32.const 50 - f32.lt + local.get $1 + i32.const 50 + i32.lt_u if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - if - i32.const 0 - i32.const 1360 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f32.const 1 - f32.add - local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/set/Set#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (result i32) - (local $0 i32) - i32.const 24 - i32.const 21 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 64 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 - local.get $0 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=20 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - local.get $0 - i32.load - local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - f64.load - f64.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + i32.store local.get $0 local.get $1 local.get $1 - i64.reinterpret_f64 call $~lib/util/hash/hash64 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.const 0 i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $3 - i32.const 3 - i32.shl - i32.const 3 - i32.div_s - local.tee $7 - i32.const 4 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $0 - i32.load offset=8 - local.tee $4 - local.get $0 - i32.load offset=16 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.shl - i32.add - local.set $8 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $4 - local.get $8 - i32.ne - if - local.get $4 - local.tee $6 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $6 - f64.load - local.tee $9 - f64.store - local.get $2 - local.get $5 - local.get $9 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $2 - i32.store - local.get $2 - i32.const 16 - i32.add - local.set $2 - end - local.get $6 - i32.const 16 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $5 - local.tee $2 - local.get $0 - i32.load - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 + 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.store offset=4 - local.get $3 - local.tee $1 + call $~lib/util/hash/hash64 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $2 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__release - end + i32.store local.get $0 local.get $1 - i32.store offset=8 - local.get $0 - local.get $7 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $5 - call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - local.get $1 - local.get $1 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - local.tee $3 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.eqz if local.get $0 @@ -8778,6 +8817,9 @@ i32.load offset=12 i32.eq if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.load offset=20 @@ -8799,7 +8841,7 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 @@ -8816,7 +8858,7 @@ i32.add local.tee $2 local.get $1 - f64.store + i64.store local.get $0 local.get $0 i32.load offset=20 @@ -8833,43 +8875,115 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $0 i32.load i32.store offset=8 - local.get $3 + local.get $0 local.get $2 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $~lib/set/Set#values (param $0 i32) (result 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) (local $8 i32) - (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=16 - local.tee $9 - local.set $8 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 - i32.const 22 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain + i32.const 16 + call $~lib/rt/itcms/__new local.tee $0 - i32.const 0 i32.store local.get $0 i32.const 0 + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 0 i32.store offset=4 local.get $0 i32.const 0 @@ -8877,156 +8991,158 @@ local.get $0 i32.const 0 i32.store offset=12 - local.get $9 + local.get $2 i32.const 134217727 i32.gt_u if - i32.const 1248 - i32.const 1408 - i32.const 57 + i32.const 1456 + i32.const 1616 + i32.const 58 i32.const 60 call $~lib/builtins/abort unreachable end - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 3 i32.shl - local.tee $7 + local.tee $5 i32.const 0 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 - local.get $7 - call $~lib/memory/memory.fill - local.get $3 - local.set $2 + i32.store offset=4 local.get $3 + local.get $5 + call $~lib/memory/memory.fill local.get $0 - i32.load - local.tee $5 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $5 - call $~lib/rt/pure/__release - end - local.get $0 - local.get $2 - i32.store + local.get $3 + call $~lib/set/Set#set:buckets local.get $0 local.get $3 i32.store offset=4 local.get $0 - local.get $7 + local.get $5 i32.store offset=8 local.get $0 - local.get $8 + local.get $2 i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store loop $for-loop|0 - local.get $9 - local.get $10 - i32.gt_s + local.get $4 + local.get $8 + i32.lt_s if local.get $6 - local.get $10 + local.get $4 i32.const 4 i32.shl i32.add - local.tee $3 + local.tee $2 i32.load offset=8 i32.const 1 i32.and i32.eqz if - local.get $3 - f64.load - local.set $4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 1456 - i32.const 1408 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $3 - i32.store offset=12 - end + i32.store offset=4 local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store + local.get $2 + i64.load + call $~lib/array/Array#__set local.get $1 i32.const 1 i32.add local.set $1 end - local.get $10 + local.get $4 i32.const 1 i32.add - local.set $10 + local.set $4 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 local.get $1 call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1456 - i32.const 1408 - i32.const 104 + i32.const 1248 + i32.const 1616 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=4 local.get $1 i32.const 3 i32.shl i32.add - f64.load + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (local $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.store local.get $0 local.get $1 local.get $1 - i64.reinterpret_f64 call $~lib/util/hash/hash64 - call $~lib/set/Set#find + call $~lib/set/Set#find local.tee $2 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end local.get $2 @@ -9071,430 +9187,3325 @@ i32.const 0 end if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $3 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/set/testNumeric - (local $0 f64) - (local $1 i32) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i64) (local $2 i32) (local $3 i32) (local $4 i32) - call $~lib/set/Set#constructor - local.set $1 + 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store loop $for-loop|0 - local.get $0 - f64.const 100 - f64.lt + local.get $1 + i64.const 100 + i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - f64.add - local.set $0 + local.get $1 + i64.const 1 + i64.add + local.set $1 br $for-loop|0 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - f64.const 50 - local.set $0 + i64.const 50 + local.set $1 loop $for-loop|1 - local.get $0 - f64.const 100 - f64.lt + local.get $1 + i64.const 100 + i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has - i32.eqz - if + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - f64.add - local.set $0 + local.get $1 + i64.const 1 + i64.add + local.set $1 br $for-loop|1 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 100 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/set/Set#values - local.set $2 - call $~lib/set/Set#constructor - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 loop $for-loop|2 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $4 local.get $2 i32.load offset=12 i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + i32.store offset=16 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|2 end end - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.load offset=20 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - f64.const 0 - local.set $0 + i64.const 0 + local.set $1 loop $for-loop|3 - local.get $0 - f64.const 50 - f64.lt + local.get $1 + i64.const 50 + i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - f64.add - local.set $0 + local.get $1 + i64.const 1 + i64.add + local.set $1 br $for-loop|3 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - f64.const 0 - local.set $0 + i64.const 0 + local.set $1 loop $for-loop|4 - local.get $0 - f64.const 50 - f64.lt + local.get $1 + i64.const 50 + i64.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#add - call $~lib/rt/pure/__release local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/set/Set#delete local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#has + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - f64.const 1 - f64.add - local.set $0 + local.get $1 + i64.const 1 + i64.add + local.set $1 br $for-loop|4 end end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 i32.const 50 i32.ne if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 call $~lib/set/Set#clear - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.load offset=20 if i32.const 0 - i32.const 1360 + i32.const 1568 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 local.get $1 - call $~lib/rt/pure/__release + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + call $~lib/util/hash/hash64 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $2 - i32.const 268435455 - i32.and - local.set $1 + i32.store 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 + local.get $3 + call $~lib/set/Set#find + i32.eqz if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner2 - 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 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $folding-inner1 $folding-inner2 $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=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit + i32.load offset=4 + else local.get $0 - i32.load offset=28 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or end - local.get $0 - i32.load offset=20 - 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 + call $~lib/set/Set#rehash end - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock - 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 + i32.load offset=8 + local.get $0 local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 local.get $1 + i64.store + local.get $0 + local.get $0 + i32.load offset=20 i32.const 1 - i32.sub + i32.add + i32.store offset=20 local.get $2 - i32.const -268435456 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 i32.and - i32.or - i32.store offset=4 + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + local.get $2 + i64.load + call $~lib/array/Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/rt/pure/__visit (param $0 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.const 1500 - i32.lt_u + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + local.tee $2 + i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer return end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 local.get $0 - i32.const 20 + local.get $0 + i32.load offset=20 + i32.const 1 i32.sub - call $~lib/rt/pure/decrement + i32.store offset=20 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.tee $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 i64) + (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 + 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $4 + local.get $2 + i32.load offset=12 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f32) + (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.reinterpret_f32 + call $~lib/util/hash/hash32 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + local.get $1 + f32.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=4 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 268435455 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $2 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + f32.load + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $2 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $9 + f32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.store + local.get $0 + local.get $1 + local.get $1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.or + i32.store offset=4 + 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 $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $4 + local.get $2 + i32.load offset=12 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f32.const 1 + f32.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#add (param $0 i32) (param $1 f64) + (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 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/set/Set#find + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 + local.get $1 + f64.store + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=16 + local.tee $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.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 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/set/Set#set:buckets + 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 $2 + i32.const 134217727 + i32.gt_u + if + i32.const 1456 + i32.const 1616 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + local.tee $5 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $5 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + local.get $5 + i32.store offset=8 + local.get $0 + local.get $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + loop $for-loop|0 + local.get $4 + local.get $8 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 4 + i32.shl + i32.add + local.tee $2 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + f64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1248 + i32.const 1616 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 3 + call $~lib/array/ensureSize + local.get $0 + local.get $2 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array#set:length + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1248 + i32.const 1616 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + call $~lib/set/Set#find + local.tee $2 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $2 + local.get $2 + i32.load offset=8 + i32.const 1 + i32.or + i32.store offset=8 + 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 $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + call $~lib/set/Set#rehash + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/set/testNumeric + (local $0 i32) + (local $1 f64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 8 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 16 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $4 + local.get $2 + i32.load offset=12 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $0 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $3 + local.get $2 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 + end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#add + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#delete + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/set/Set#has + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/set/Set#clear + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#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.const 1073741820 + i32.gt_u + if + i32.const 1456 + i32.const 1504 + i32.const 49 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 32 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/set/Set#constructor (result i32) + (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 24 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 64 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/std/set.ts b/tests/compiler/std/set.ts index 2da500232d..59700ce6b1 100644 --- a/tests/compiler/std/set.ts +++ b/tests/compiler/std/set.ts @@ -59,3 +59,5 @@ testNumeric(); testNumeric(); testNumeric(); testNumeric(); + +__collect(); diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 14d3bdf10c..0993ec9ffd 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -13,174 +13,513 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_f32_=>_none (func (param i32 f32))) + (type $i32_f64_=>_none (func (param i32 f64))) + (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result 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) ",\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 252) "<\00\00\00\01\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 316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 364) ",\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 412) "<\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 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\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\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/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00\00\00\00\00\00\00") + (data (i32.const 524) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00s\00e\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 572) ",\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 624) "\17\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\08\00\00\00\00\00\00B\08\00\00\00\00\00\00H\00\00\00\00\00\00\00B\00\00\00\00\00\00\00\88\08\00\00\00\00\00\00\82\08\00\00\00\00\00\00\88\00\00\00\00\00\00\00\82\00\00\00\00\00\00\00\08\t\00\00\00\00\00\00\02\t\00\00\00\00\00\00\08\01\00\00\00\00\00\00\02\01\00\00\00\00\00\00\08\n\00\00\00\00\00\00\02\n\00\00\00\00\00\00\08\02\00\00\00\00\00\00\02\02\00\00\00\00\00\00\08\19\00\00\00\00\00\00\02\19\00\00\00\00\00\00\08\1a\00\00\00\00\00\00\02\1a\00\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 476)) + (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)) + (global $~lib/memory/__heap_base i32 (i32.const 17196)) (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 $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.load - local.set $2 - i32.const 1 - drop - local.get $2 - i32.const 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 - i32.eqz - if - i32.const 0 - i32.const 160 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end - local.get $2 + ) + (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/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.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 160 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 256 - i32.lt_u + 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 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 + 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 $4 - i32.const 23 - i32.lt_u - if (result i32) - local.get $5 - i32.const 16 - i32.lt_u - else - i32.const 0 - end + local.get $2 i32.eqz if i32.const 0 - i32.const 160 - i32.const 287 - i32.const 14 + i32.const 96 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 - i32.load offset=4 - local.set $6 + local.get $2 + call $~lib/rt/itcms/Object#set:prev + local.get $2 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 + 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 - local.get $7 - local.get $6 - i32.store offset=4 + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable 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 + local.get $0 + i32.const 8 + i32.mul i32.add - i32.load offset=96 + 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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 @@ -248,7 +587,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -272,8 +611,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 200 + i32.const 368 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -289,8 +628,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 202 + i32.const 368 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -343,7 +682,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -384,8 +723,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 223 + i32.const 368 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -418,7 +757,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -427,7 +766,7 @@ 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 @@ -449,8 +788,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 238 + i32.const 368 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -467,8 +806,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 239 + i32.const 368 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -526,8 +865,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 255 + i32.const 368 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -551,15 +890,15 @@ 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 @@ -587,7 +926,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -631,8 +970,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 380 + i32.const 368 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -674,8 +1013,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 387 + i32.const 368 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -707,8 +1046,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 400 + i32.const 368 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -745,13 +1084,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 @@ -762,7 +1101,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 @@ -789,6 +1128,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 @@ -831,7 +1172,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 @@ -919,10 +1260,338 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -945,8 +1614,8 @@ i32.ge_u if i32.const 32 - i32.const 160 - i32.const 461 + i32.const 368 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1029,8 +1698,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 333 + i32.const 368 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1094,8 +1763,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 346 + i32.const 368 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1245,8 +1914,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 360 + i32.const 368 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1271,7 +1940,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 @@ -1284,7 +1953,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 @@ -1295,7 +1964,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 @@ -1325,7 +1994,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) @@ -1354,8 +2023,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 498 + i32.const 368 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1374,8 +2043,8 @@ i32.eqz if i32.const 0 - i32.const 160 - i32.const 500 + i32.const 368 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1403,118 +2072,15 @@ 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 32 - i32.const 96 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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 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.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 - end - local.get $0 - ) - (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 + i32.store offset=16 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1729,74 +2295,163 @@ end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + local.get $0 + i32.const 1073741804 + i32.ge_u if - i32.const 224 - i32.const 272 - i32.const 49 - i32.const 43 + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new + 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 - i32.const 0 local.get $1 - call $~lib/memory/memory.fill + 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 - call $~lib/rt/pure/__retain + i32.const 20 + i32.add local.set $3 + local.get $3 + i32.const 0 local.get $0 - call $~lib/rt/pure/__release + call $~lib/memory/memory.fill local.get $3 ) - (func $~lib/set/Set#constructor (param $0 i32) (result 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.get $1 + i32.eqz + if + return + end + i32.const 1 + drop local.get $0 i32.eqz if - i32.const 24 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.const 96 + i32.const 290 + 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/set/Set#set:buckets (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 - local.get $0 ) (func $~lib/util/hash/hash8 (param $0 i32) (result i32) i32.const -2128831035 @@ -1859,34 +2514,15 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.store8 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 ) (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) @@ -1902,28 +2538,40 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.tee $5 + i32.store offset=4 local.get $0 i32.load offset=8 local.set $6 @@ -1958,7 +2606,7 @@ local.set $12 local.get $11 local.get $12 - i32.store8 + call $~lib/set/SetEntry#set:key block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 @@ -1988,7 +2636,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -2005,281 +2653,53 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/set/Set#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/set/Set#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (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 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 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 0 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end local.get $1 i32.const 0 - 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 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - local.get $3 + local.get $1 i32.store offset=4 - local.get $0 - local.get $2 - i32.store offset=8 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 - local.get $0 + i32.store offset=8 ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 4 - i32.sub - local.set $1 + (func $~lib/array/Array#set:length_ (param $0 i32) (param $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 - 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 160 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $1 + i32.store offset=12 ) (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -3534,197 +3954,52 @@ 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) + (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 - 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 + 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 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/memory/__heap_base - i32.ge_u + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - drop - local.get $0 + local.get $2 local.get $1 - call $~lib/rt/tlsf/freeBlock + 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/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 32 - i32.const 96 - 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) + (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -3744,8 +4019,8 @@ i32.shr_u i32.gt_u if - i32.const 224 - i32.const 384 + i32.const 432 + i32.const 592 i32.const 14 i32.const 48 call $~lib/builtins/abort @@ -3760,7 +4035,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/pure/__renew + call $~lib/rt/itcms/__renew local.set $6 local.get $6 local.get $3 @@ -3780,6 +4055,10 @@ local.get $0 local.get $6 i32.store offset=4 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link end local.get $0 local.get $5 @@ -3787,8 +4066,6 @@ end ) (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -3797,120 +4074,17 @@ i32.add local.get $2 i32.store8 - ) - (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 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 i32.const 0 drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.const 0 call $~lib/array/ensureSize local.get $0 local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + call $~lib/array/Array#set:length_ ) (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 @@ -3925,557 +4099,438 @@ i32.add i32.load8_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + (func $~lib/set/Set#clear (param $0 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) - (func $~lib/set/Set#delete (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 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $2 i32.const 0 i32.const 4 i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (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/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 local.get $3 + local.set $4 + local.get $4 if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + local.get $3 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + else i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - 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 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store8 + ) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#values - local.set $1 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end local.get $4 - call $~lib/set/Set#get:size + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store offset=4 local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $7 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + 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 $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz + local.get $6 + local.set $10 + local.get $10 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i32.load8_u + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.2 + end + 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/set/SetEntry#set:taggedNext + local.get $14 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 8 i32.add - local.set $5 - br $for-loop|6 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end + local.get $3 + call $~lib/set/Set#set:buckets local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/set/Set#set:bucketsMask local.get $0 - call $~lib/set/Set#clear + local.get $5 + call $~lib/set/Set#set:entries local.get $0 - call $~lib/set/Set#get:size + local.get $4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + 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 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release + local.get $1 + i32.store offset=8 ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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 0 + i32.shl + i32.add + local.get $2 + i32.store8 + i32.const 0 + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 0 + call $~lib/array/ensureSize + 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#__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/set/Set#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 i32.const 0 i32.const 4 i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (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/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 local.get $0 + local.get $1 i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=20 + ) + (func $~lib/util/hash/hash16 (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 local.get $0 + i32.const 8 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4504,10 +4559,12 @@ i32.eqz if (result i32) local.get $3 - i32.load8_u + i32.load16_s local.get $1 - i32.const 255 - i32.and + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.eq else i32.const 0 @@ -4527,34 +4584,17 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.store16 ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4568,29 +4608,41 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 + local.tee $5 + i32.store offset=4 + local.get $0 i32.load offset=8 local.set $6 local.get $6 @@ -4620,12 +4672,12 @@ local.get $8 local.set $11 local.get $10 - i32.load8_u + i32.load16_s local.set $12 local.get $11 local.get $12 - i32.store8 - block $~lib/util/hash/HASH|inlined.2 (result i32) + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -4634,13 +4686,17 @@ drop i32.const 0 drop + i32.const 2 i32.const 1 - i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 i32.eq drop local.get $13 - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -4654,7 +4710,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -4671,945 +4727,891 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/set/Set#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store8 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (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 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 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 - i32.const 0 + local.get $1 i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=12 local.get $1 - i32.const 1073741820 - i32.const 0 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + 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 0 + i32.const 1 i32.shl - local.set $2 + i32.add local.get $2 + i32.store16 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 + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) local.get $0 - local.get $2 - i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize local.get $0 local.get $1 - i32.store offset=12 + 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop + (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.const 1 i32.shl i32.add - local.get $2 - i32.store8 + i32.load16_s ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $~lib/set/Set#clear (param $0 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 0 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - local.set $2 + local.get $1 + i32.store + local.get $0 + local.get $1 i32.const 0 - drop + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 local.get $0 local.get $1 i32.const 0 - call $~lib/array/ensureSize + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 + i32.load local.get $2 - call $~lib/array/Array#constructor + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 + local.get $3 i32.load offset=4 + local.set $5 + local.get $5 i32.const 1 i32.and i32.eqz + if (result i32) + local.get $3 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + else + i32.const 0 + end if local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load8_u - call $~lib/array/Array#__set + return end local.get $5 i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 + i32.const 0 ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 0 - i32.shl - i32.add - i32.load8_u + i32.store16 ) - (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 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.store offset=4 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - i32.const 1 - i32.eq - drop - local.get $2 - i32.const 255 - i32.and - call $~lib/util/hash/hash8 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 i32.const 1 - i32.or + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 8 + 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=20 - i32.const 1 - i32.sub - i32.store offset=20 - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 - local.get $4 - i32.const 1 + i32.load offset=16 + i32.const 8 + i32.mul i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 - local.get $2 + local.set $7 local.get $5 - i32.gt_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 $4 - call $~lib/set/Set#rehash + 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=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $11 + local.get $10 + i32.load16_u + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.2 + end + 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/set/SetEntry#set:taggedNext + local.get $14 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 + end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $while-continue|0 + end end + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + call $~lib/set/Set#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/set/Set#set:entries + local.get $0 + local.get $4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + 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/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 + i32.shl + i32.add + local.get $2 + i32.store16 + i32.const 0 + drop ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 1 + call $~lib/array/ensureSize + 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#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/set/Set#clear (param $0 i32) local.get $0 - local.tee $1 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $2 i32.const 0 i32.const 4 i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (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/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/set/testNumeric - (local $0 i32) + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - 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 - end local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 255 - i32.and - i32.const 100 - i32.lt_u + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 local.set $4 local.get $4 if - local.get $0 - local.get $1 - call $~lib/set/Set#has + local.get $3 + i32.load offset=4 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#values - local.set $1 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end local.get $4 - call $~lib/set/Set#get:size + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store offset=4 local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $7 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 8 + 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 $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz + local.get $6 + local.set $10 + local.get $10 + i32.load offset=4 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i32.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + 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/set/SetEntry#set:taggedNext + local.get $14 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 8 i32.add - local.set $5 - br $for-loop|6 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + call $~lib/set/Set#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/set/Set#set:entries + local.get $0 + local.get $4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + 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 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 255 - i32.and - i32.const 50 - i32.lt_u - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#clear + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size + 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 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.const 2 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=12 + ) + (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/set/Set#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 i32.const 0 i32.const 4 i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 - local.get $0 + call $~lib/set/Set#set:entriesCount ) - (func $~lib/util/hash/hash16 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 + (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - i32.const 8 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + i32.store offset=4 ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -5638,12 +5640,8 @@ i32.eqz if (result i32) local.get $3 - i32.load16_s + i32.load local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s i32.eq else i32.const 0 @@ -5663,40 +5661,17 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne + i32.store ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -5710,28 +5685,40 @@ (local $12 i32) (local $13 i32) (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + local.tee $5 + i32.store offset=4 local.get $0 i32.load offset=8 local.set $6 @@ -5762,12 +5749,12 @@ local.get $8 local.set $11 local.get $10 - i32.load16_s + i32.load local.set $12 local.get $11 local.get $12 - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -5776,17 +5763,21 @@ drop i32.const 0 drop - i32.const 2 + i32.const 4 i32.const 1 i32.eq drop + i32.const 4 i32.const 2 - i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 i32.eq drop local.get $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and @@ -5800,7 +5791,7 @@ local.get $11 local.get $14 i32.load - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $14 local.get $8 i32.store @@ -5817,943 +5808,597 @@ end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/set/Set#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 + (func $~lib/set/Set#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 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end + i32.store local.get $0 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + i32.store offset=4 ) - (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) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 16 - i32.const 8 - 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 1 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end local.get $1 - i32.const 1 - 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 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 - local.get $0 ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - 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 1 + i32.const 2 i32.shl i32.add local.get $2 - i32.store16 + i32.store + i32.const 0 + drop ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + 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 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 + i32.load offset=4 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#clear (param $0 i32) local.get $0 - i32.load offset=12 - local.set $2 i32.const 0 - drop + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - local.get $1 + i32.const 4 i32.const 1 - call $~lib/array/ensureSize + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries local.get $0 - i32.load offset=8 - local.set $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $0 - i32.load offset=16 - local.set $2 i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/set/Set#set:entriesOffset + local.get $0 i32.const 0 - local.set $4 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_s - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 + local.get $1 + i32.store offset=4 ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.store offset=20 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/hash/hash64 (param $0 i64) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 + i32.wrap_i64 + local.set $1 + local.get $0 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $2 + i32.const -2128831035 + local.set $3 + local.get $3 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul local.set $3 local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop + local.get $1 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 local.get $3 + local.get $1 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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 + local.get $1 + i32.const 24 i32.shr_u - local.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 - local.get $0 - i32.load offset=20 - local.tee $5 + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release + local.set $3 + local.get $3 local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + local.set $3 + local.get $3 local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - 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 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 + local.get $2 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $3 + local.get $3 ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $3 + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 local.get $3 + local.set $4 + local.get $4 if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + i64.load + local.get $1 + i64.eq + else i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i64) local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 100 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - 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 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i64.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#values - local.set $1 + local.get $1 + i32.store offset=8 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 + local.get $4 + i32.const 16 + 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 16 + 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 $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has + local.get $6 + local.set $10 + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + i64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $13 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 + local.get $6 + i32.const 16 i32.add - local.set $5 - br $for-loop|4 + local.set $6 + br $while-continue|0 end end + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + call $~lib/set/Set#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/set/Set#set:entries + local.get $0 local.get $4 - call $~lib/set/Set#get:size + call $~lib/set/Set#set:entriesCapacity local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + 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 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|6 - end - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 50 - i32.lt_s - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#clear + local.get $1 + i32.store offset=12 + ) + (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) local.get $0 - call $~lib/set/Set#get:size + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + i64.store i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.const 3 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/set/Set#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 i32.const 0 i32.const 4 - i32.const 8 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (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/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -6774,7 +6419,7 @@ local.get $4 if local.get $3 - i32.load offset=4 + i32.load offset=8 local.set $5 local.get $5 i32.const 1 @@ -6782,11 +6427,9 @@ i32.eqz if (result i32) local.get $3 - i32.load16_u + i64.load local.get $1 - i32.const 65535 - i32.and - i32.eq + i64.eq else i32.const 0 end @@ -6805,38 +6448,17 @@ end i32.const 0 ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 i64) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne + i64.store ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -6847,38 +6469,51 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) + (local $12 i64) + (local $13 i64) (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 i32.const 1 i32.add local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 + 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 8 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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 8 + i32.const 16 i32.mul i32.add local.set $7 @@ -6894,7 +6529,7 @@ local.get $6 local.set $10 local.get $10 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz @@ -6902,12 +6537,12 @@ local.get $8 local.set $11 local.get $10 - i32.load16_u + i64.load local.set $12 local.get $11 local.get $12 - i32.store16 - block $~lib/util/hash/HASH|inlined.2 (result i32) + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $12 local.set $13 i32.const 0 @@ -6916,1921 +6551,7177 @@ drop i32.const 0 drop - i32.const 2 + i32.const 8 i32.const 1 i32.eq drop + i32.const 8 i32.const 2 - 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 $13 - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $13 + local.set $14 local.get $3 - local.get $13 + local.get $14 i32.const 4 i32.mul i32.add - local.set $14 + local.set $15 local.get $11 - local.get $14 + local.get $15 i32.load - i32.store offset=4 - local.get $14 + call $~lib/set/SetEntry#set:taggedNext + local.get $15 local.get $8 i32.store local.get $8 - i32.const 8 + i32.const 16 i32.add local.set $8 end local.get $6 - i32.const 8 + i32.const 16 i32.add local.set $6 br $while-continue|0 end end local.get $0 - local.tee $11 local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store + call $~lib/set/Set#set:buckets local.get $0 local.get $1 - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $13 local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 local.get $4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 local.get $0 i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store16 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 ) - (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 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/array/Array#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 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 - i32.const 0 + local.get $1 i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=12 local.get $1 - i32.const 1073741820 - i32.const 1 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + 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 1 + i32.const 3 i32.shl - local.set $2 + i32.add local.get $2 + i64.store 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 + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) 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 $1 + i32.const 3 + call $~lib/array/ensureSize local.get $0 local.get $1 - i32.store offset=12 + 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 i32.load offset=4 local.get $1 - i32.const 1 + i32.const 3 i32.shl i32.add - local.get $2 - i32.store16 + i64.load ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/set/Set#clear (param $0 i32) + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + i32.store local.get $0 - i32.load offset=12 - i32.ge_u - if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 1 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + i32.store offset=4 ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop + local.get $1 + i32.store offset=8 local.get $0 local.get $1 - i32.const 1 - call $~lib/array/ensureSize + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store offset=12 ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $0 - i32.load offset=8 - local.set $1 - local.get $0 - i32.load offset=16 - local.set $2 - i32.const 0 + i32.load local.get $2 - call $~lib/array/Array#constructor + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 + local.get $3 i32.load offset=4 + local.set $5 + local.get $5 i32.const 1 i32.and i32.eqz + if (result i32) + local.get $3 + f32.load + local.get $1 + f32.eq + else + i32.const 0 + end if local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load16_u - call $~lib/array/Array#__set + return end local.get $5 i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 + i32.const 0 ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 f32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + f32.store ) - (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 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.store offset=4 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 f32) + (local $13 f32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 2 - i32.const 1 - i32.eq - drop - i32.const 2 - i32.const 2 - i32.eq - drop - local.get $2 - i32.const 65535 - i32.and - call $~lib/util/hash/hash16 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end - i32.const 0 - drop - local.get $3 - local.get $3 - i32.load offset=4 i32.const 1 - i32.or + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 8 + 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=20 - i32.const 1 - i32.sub - i32.store offset=20 + i32.load offset=16 + i32.const 8 + 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=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $8 + local.set $11 + local.get $10 + f32.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $13 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 8 + i32.add + local.set $8 + end + local.get $6 + i32.const 8 + i32.add + local.set $6 + br $while-continue|0 + end + end + local.get $0 + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + call $~lib/set/Set#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/set/Set#set:entries local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u - local.set $4 local.get $4 - i32.const 1 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 4 - local.tee $2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) local.get $0 i32.load offset=20 - local.tee $5 + ) + (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#__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 - local.get $5 - i32.gt_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 $4 - call $~lib/set/Set#rehash - end - i32.const 1 + f32.store + i32.const 0 + drop ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.const 2 + call $~lib/array/ensureSize + 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#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/set/Set#clear (param $0 i32) local.get $0 - local.tee $1 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $2 i32.const 0 i32.const 4 i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + ) + (func $~lib/set/Set#set:buckets (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/set/Set#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/set/Set#set:entries (param $0 i32) (param $1 i32) + local.get $0 local.get $1 i32.store offset=8 local.get $0 - i32.const 4 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/set/Set#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 i32.store offset=12 + ) + (func $~lib/set/Set#set:entriesOffset (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=16 + ) + (func $~lib/set/Set#set:entriesCount (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store offset=20 ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u - local.set $3 - local.get $3 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - 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 - end local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|3 - local.get $1 - i32.const 65535 - i32.and - i32.const 100 - i32.lt_u + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 local.set $4 local.get $4 if - local.get $0 - local.get $1 - call $~lib/set/Set#has + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and i32.eqz - if + if (result i32) + local.get $3 + f64.load + local.get $1 + f64.eq + else i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $3 + return end - local.get $1 + local.get $5 i32.const 1 - i32.add - local.set $1 - br $for-loop|3 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 end end + i32.const 0 + ) + (func $~lib/set/SetEntry#set:key (param $0 i32) (param $1 f64) local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + f64.store + ) + (func $~lib/set/SetEntry#set:taggedNext (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#values - local.set $1 + local.get $1 + i32.store offset=8 + ) + (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 f64) + (local $13 f64) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.set $5 - loop $for-loop|4 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $1 - local.get $5 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|4 - end - end local.get $4 - call $~lib/set/Set#get:size + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $5 + i32.store offset=4 local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $5 - loop $for-loop|6 - local.get $5 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $7 + i32.load offset=8 + local.set $6 + local.get $6 + local.get $0 + i32.load offset=16 + i32.const 16 + 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 $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz + local.get $6 + local.set $10 + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and i32.eqz if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.set $11 + local.get $10 + f64.load + local.set $12 + local.get $11 + local.get $12 + call $~lib/set/SetEntry#set:key + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 8 + i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 + i32.eq + drop + local.get $13 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.2 + end + local.get $1 + i32.and + local.set $14 + local.get $3 + local.get $14 + i32.const 4 + i32.mul + i32.add + local.set $15 + local.get $11 + local.get $15 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $15 + local.get $8 + i32.store + local.get $8 + i32.const 16 + i32.add + local.set $8 end - local.get $5 - i32.const 1 + local.get $6 + i32.const 16 i32.add - local.set $5 - br $for-loop|6 + local.set $6 + br $while-continue|0 end end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + call $~lib/set/Set#set:buckets + local.get $0 + local.get $1 + call $~lib/set/Set#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/set/Set#set:entries + local.get $0 + local.get $4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/set/Set#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#get:size (param $0 i32) (result i32) + 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 - local.set $5 - loop $for-loop|8 - local.get $5 - i32.const 65535 - i32.and - i32.const 50 - i32.lt_u - local.set $8 - local.get $8 - if - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $5 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|8 - end - end + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#clear + local.get $1 + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $0 i32) (param $1 i32) local.get $0 - call $~lib/set/Set#get:size + 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 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop + ) + (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.const 3 + call $~lib/array/ensureSize local.get $0 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#set:length_ ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/set/Set#clear (param $0 i32) local.get $0 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 i32.const 0 i32.const 4 - i32.const 8 + i32.const 16 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 - local.get $0 + call $~lib/set/Set#set:entriesCount ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + (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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $start:std/set + 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 $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $std/set/testNumeric + call $~lib/rt/itcms/__collect + ) + (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - i32.const -2128831035 - local.set $1 + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 432 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 + i32.load offset=8 + local.set $2 + i32.const 0 + drop + local.get $2 local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 + 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 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 i32.load - local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end + i32.load offset=8 + local.set $2 i32.const 0 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.ne + drop + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set#__visit (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 + i32.load local.get $1 - i32.const 1 - i32.add + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 local.set $2 i32.const 0 + drop local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + drop local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 + 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.load offset=16 - i32.const 8 - 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=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - i32.load - local.set $12 - local.get $11 - local.get $12 - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - 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 - i32.store offset=4 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 - i32.store - local.get $0 local.get $1 - i32.store offset=4 + call $~lib/rt/itcms/__visit local.get $0 - local.tee $13 - local.get $5 - local.tee $14 - local.get $13 i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 + local.set $2 + i32.const 0 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 - local.get $4 - i32.store offset=12 + local.get $1 + call $~lib/set/Set#__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 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - local.set $3 local.get $0 + i32.load local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $2 - i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 8 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i32.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $2 - local.get $4 - local.get $2 - i32.load - i32.store offset=4 - local.get $2 - local.get $4 - i32.store - end + call $~lib/rt/itcms/__visit local.get $0 - call $~lib/rt/pure/__retain + i32.load offset=8 + local.set $2 + i32.const 0 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=20 + local.get $1 + call $~lib/set/Set#__visit ) - (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 12 - 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 + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.store offset=8 + drop local.get $0 - i32.const 0 - i32.store offset=12 + i32.load local.get $1 - i32.const 1073741820 - i32.const 2 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 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 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (local $2 i32) 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 $1 + call $~lib/rt/itcms/__visit local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + drop local.get $2 - i32.store offset=8 - local.get $0 local.get $1 - i32.store offset=12 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + call $~lib/set/Set#__visit ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 drop local.get $0 - i32.load offset=4 + i32.load local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store + call $~lib/rt/itcms/__visit ) - (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 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 - end + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - call $~lib/array/Array#__uset + call $~lib/array/Array#__visit ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - i32.load offset=12 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 local.set $2 + i32.const 0 + drop + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 drop local.get $0 + i32.load local.get $1 - i32.const 2 - call $~lib/array/ensureSize + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.store offset=12 + call $~lib/array/Array#__visit ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/set/Set#__visit (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 $0 - i32.load offset=8 - local.set $1 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - i32.load offset=16 + i32.load offset=8 local.set $2 i32.const 0 + drop local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 8 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - i32.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 + local.get $1 + call $~lib/set/Set#__visit ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + i32.const 0 + drop 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) (result i32) - (local $2 i32) local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 + i32.load local.get $1 - call $~lib/array/Array#__uget + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 local.set $2 i32.const 0 drop local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - return - end + call $~lib/set/Set#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 drop - local.get $3 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.or - i32.store offset=4 - 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.set $4 - local.get $4 - i32.const 1 - i32.add - i32.const 4 - local.tee $2 + 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.load offset=20 - local.tee $5 - local.get $2 - local.get $5 - i32.gt_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 $4 - call $~lib/set/Set#rehash - end - i32.const 1 + local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) + (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) (local $2 i32) local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 + local.get $1 + call $~lib/rt/itcms/__visit local.get $0 - local.tee $2 + i32.load offset=8 + local.set $2 i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 + drop local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release local.get $1 - i32.store offset=8 - local.get $0 - i32.const 4 - i32.store offset=12 - local.get $0 - i32.const 0 - i32.store offset=16 + call $~lib/rt/itcms/__visit + ) + (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.store offset=20 + local.get $1 + call $~lib/set/Set#__visit ) - (func $std/set/testNumeric - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - 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 - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 100 - i32.lt_s - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - 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 - end + drop local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - 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 - call $~lib/set/Set#values - local.set $1 - i32.const 0 - call $~lib/set/Set#constructor - local.set $2 - i32.const 0 - local.set $3 - loop $for-loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/array/Array + block $~lib/set/Set + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/set/Set~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/set + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17216 + i32.const 17264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load8_s + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|4 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|6 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|6 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|8 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $8 + local.get $8 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|8 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 0 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load8_u + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + i32.const 1 + i32.eq + drop + local.get $2 + i32.const 255 + i32.and + call $~lib/util/hash/hash8 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + local.set $3 + local.get $3 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 255 + i32.and + i32.const 100 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|4 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|6 + local.get $5 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|6 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|8 + local.get $5 + i32.const 255 + i32.and + i32.const 50 + i32.lt_u + local.set $8 + local.get $8 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|8 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load16_s + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $3 + local.get $3 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 100 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|4 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|6 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|6 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|8 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 50 + i32.lt_s + local.set $8 + local.get $8 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|8 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 1 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load16_u + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 2 + i32.const 1 + i32.eq + drop + i32.const 2 + i32.const 2 + i32.eq + drop + local.get $2 + i32.const 65535 + i32.and + call $~lib/util/hash/hash16 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + local.set $3 + local.get $3 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|3 + local.get $1 + i32.const 65535 + i32.and + i32.const 100 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $4 + i32.store offset=12 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/array/Array#get:length + i32.lt_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=16 + local.get $9 + local.get $5 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|4 + end + end + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|6 + local.get $5 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|6 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $5 + loop $for-loop|8 + local.get $5 + i32.const 65535 + i32.and + i32.const 50 + i32.lt_u + local.set $8 + local.get $8 + if + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#add + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $5 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|8 + end + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#clear + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + local.set $2 + local.get $2 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + local.set $2 + local.get $2 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 + end + end + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|3 + end + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#add + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $3 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|4 + end + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#clear + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + 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/set/Set#add (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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + local.set $3 + local.get $0 + 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/set/Set#find + local.set $4 + local.get $4 + i32.eqz + if + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $2 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset + local.get $2 + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $2 + local.get $4 + local.get $2 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $2 + local.get $4 + i32.store + end + local.get $0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 224 + i32.const 592 + i32.const 108 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.const 2 + call $~lib/array/ensureSize + local.get $0 + local.get $1 + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#values (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 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.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.load offset=8 + local.set $1 + local.get $0 + i32.load offset=16 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + i32.const 0 + local.set $4 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + local.set $6 + local.get $6 + if + local.get $1 + local.get $5 + i32.const 8 + i32.mul + i32.add + local.set $7 + local.get $7 + i32.load offset=4 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + local.tee $8 + i32.const 1 + i32.add + local.set $4 + local.get $8 + local.get $7 + i32.load + call $~lib/array/Array#__set + end + 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 + local.get $9 + i32.store offset=4 + local.get $9 + local.get $4 + call $~lib/array/Array#set:length + local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 224 + i32.const 592 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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/set/Set#delete (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/set/Set#find + local.set $3 + local.get $3 + 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 $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.or + call $~lib/set/SetEntry#set:taggedNext + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.sub + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shr_u + local.set $4 + local.get $4 + i32.const 1 + i32.add + i32.const 4 + local.tee $2 + local.get $0 + i32.load offset=20 + local.tee $5 + local.get $2 + local.get $5 + i32.gt_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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $4 + call $~lib/set/Set#rehash + 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 $std/set/testNumeric + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 6 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 8 + 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 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 14 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 16 + 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 + end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#values + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length i32.lt_s local.set $4 local.get $4 if local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop local.get $3 i32.const 1 i32.add @@ -8839,14 +13730,24 @@ end end local.get $2 - call $~lib/set/Set#get:size + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size local.get $0 - call $~lib/set/Set#get:size + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -8857,34 +13758,49 @@ loop $for-loop|3 local.get $3 i32.const 50 - i32.lt_s + i32.lt_u local.set $4 local.get $4 if local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#delete + call $~lib/set/Set#delete drop local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 33 i32.const 5 call $~lib/builtins/abort @@ -8898,13 +13814,18 @@ end end local.get $0 - call $~lib/set/Set#get:size + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 35 i32.const 3 call $~lib/builtins/abort @@ -8915,51 +13836,76 @@ loop $for-loop|4 local.get $3 i32.const 50 - i32.lt_s + i32.lt_u local.set $4 local.get $4 if local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#delete + call $~lib/set/Set#delete drop local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 local.get $3 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 43 i32.const 5 call $~lib/builtins/abort @@ -8973,135 +13919,72 @@ end end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#clear + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/set/Set#get:size i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 i32.const 0 @@ -9110,204 +13993,51 @@ drop i32.const 0 drop - i32.const 4 + i32.const 8 i32.const 1 i32.eq drop - i32.const 4 + i32.const 8 i32.const 2 i32.eq drop + i32.const 8 i32.const 4 - i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 i32.eq drop local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end - call $~lib/set/Set#find + call $~lib/set/Set#find i32.const 0 i32.ne + 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/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - 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=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - i32.load - local.set $12 - local.get $11 - local.get $12 - i32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - 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 - i32.store offset=4 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $12 i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 - local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 i32.const 0 @@ -9316,27 +14046,36 @@ drop i32.const 0 drop - i32.const 4 + i32.const 8 i32.const 1 i32.eq drop - i32.const 4 + i32.const 8 i32.const 2 i32.eq drop + i32.const 8 i32.const 4 - i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 i32.eq drop local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $3 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 local.get $3 - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $4 local.get $4 i32.eqz @@ -9348,6 +14087,11 @@ i32.eq if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $0 i32.load offset=20 local.get $0 @@ -9368,31 +14112,33 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 local.get $0 local.get $0 i32.load offset=16 - local.tee $2 + local.tee $5 i32.const 1 i32.add - i32.store offset=16 - local.get $2 - i32.const 8 + call $~lib/set/Set#set:entriesOffset + local.get $5 + i32.const 16 i32.mul i32.add local.set $4 local.get $4 local.get $1 - i32.store + call $~lib/set/SetEntry#set:key + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load local.get $3 @@ -9402,115 +14148,33 @@ i32.const 4 i32.mul i32.add - local.set $2 + local.set $5 local.get $4 - local.get $2 + local.get $5 i32.load - i32.store offset=4 - local.get $2 + call $~lib/set/SetEntry#set:taggedNext + local.get $5 local.get $4 i32.store end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 14 - 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 224 - i32.const 384 - 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#__uset (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop - 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#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 local.get $0 i32.load offset=12 @@ -9520,9 +14184,9 @@ i32.const 0 i32.lt_s if - i32.const 432 - i32.const 384 - i32.const 120 + i32.const 224 + i32.const 592 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -9531,35 +14195,29 @@ local.get $1 i32.const 1 i32.add - i32.const 2 + i32.const 3 call $~lib/array/ensureSize local.get $0 local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -9568,16 +14226,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -9591,17 +14260,22 @@ if local.get $1 local.get $5 - i32.const 8 + i32.const 16 i32.mul i32.add local.set $7 local.get $7 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -9609,8 +14283,8 @@ local.set $4 local.get $8 local.get $7 - i32.load - call $~lib/array/Array#__set + i64.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -9620,53 +14294,87 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (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 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 432 - i32.const 384 - i32.const 104 + i32.const 224 + i32.const 592 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 drop 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 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 @@ -9675,44 +14383,52 @@ drop i32.const 0 drop - i32.const 4 + i32.const 8 i32.const 1 i32.eq drop - i32.const 4 + i32.const 8 i32.const 2 i32.eq drop + i32.const 8 i32.const 4 - i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 i32.eq drop local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $3 local.get $3 i32.eqz if i32.const 0 + 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 - i32.const 0 - drop local.get $3 local.get $3 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.or - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -9722,12 +14438,12 @@ i32.const 1 i32.add i32.const 4 - local.tee $2 + local.tee $5 local.get $0 i32.load offset=20 - local.tee $5 - local.get $2 + local.tee $6 local.get $5 + local.get $6 i32.gt_u select i32.ge_u @@ -9746,790 +14462,590 @@ end if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $4 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) - (local $1 i32) + (local $1 i64) (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 + 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 - call $~lib/set/Set#constructor - local.set $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + i64.const 0 local.set $1 loop $for-loop|0 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_s local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 br $for-loop|0 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 50 + i64.const 50 local.set $1 loop $for-loop|1 local.get $1 - i32.const 100 - i32.lt_u + i64.const 100 + i64.lt_s local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.add + i64.const 1 + i64.add local.set $1 br $for-loop|1 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values - local.set $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor - local.set $2 + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 i32.const 0 - local.set $3 + local.set $4 loop $for-loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $2 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|3 - local.get $3 - i32.const 50 - i32.lt_u - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $3 - loop $for-loop|4 - local.get $3 - i32.const 50 - i32.lt_u - local.set $4 local.get $4 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + local.set $5 + local.get $5 if local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $3 - call $~lib/set/Set#has + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 41 + i32.const 544 + i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 local.get $3 - call $~lib/set/Set#delete + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add drop - local.get $0 - local.get $3 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 - br $for-loop|4 + local.set $4 + br $for-loop|2 end end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 49 + i32.const 544 + i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 15 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/util/hash/hash64 (param $0 i64) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - i32.wrap_i64 + i64.const 0 local.set $1 - local.get $0 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $2 - i32.const -2128831035 - local.set $3 - local.get $3 - local.get $1 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $1 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - local.get $2 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $3 - local.get $3 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_s local.set $4 local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and + if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else + if i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz if - local.get $3 - return + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 end end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 local.get $0 - i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - 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 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_s + local.set $4 + local.get $4 if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz i32.eqz if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=8 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 16 - i32.add + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 local.set $6 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 end end local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $14 - i32.store local.get $0 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 + local.get $6 + call $~lib/set/Set#clear local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) + (local $2 i64) + (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=20 - i32.store offset=16 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + 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 $2 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result 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 + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 i32.const 0 @@ -10556,13 +15072,18 @@ drop local.get $2 call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + br $~lib/util/hash/HASH|inlined.1 end local.set $3 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 local.get $3 - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $4 local.get $4 i32.eqz @@ -10574,6 +15095,11 @@ i32.eq if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $0 i32.load offset=20 local.get $0 @@ -10594,7 +15120,7 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 @@ -10604,7 +15130,7 @@ local.tee $5 i32.const 1 i32.add - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $5 i32.const 16 i32.mul @@ -10612,13 +15138,15 @@ local.set $4 local.get $4 local.get $1 - i64.store + call $~lib/set/SetEntry#set:key + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load local.get $3 @@ -10629,114 +15157,32 @@ i32.mul i32.add local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (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 16 - 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 3 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - 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#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop + local.get $4 + local.get $5 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $5 + local.get $4 + i32.store + end local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i64.store + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 local.get $0 i32.load offset=12 @@ -10746,9 +15192,9 @@ i32.const 0 i32.lt_s if - i32.const 432 - i32.const 384 - i32.const 120 + i32.const 224 + i32.const 592 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -10763,29 +15209,23 @@ local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -10794,16 +15234,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -10828,6 +15279,11 @@ i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -10836,7 +15292,7 @@ local.get $8 local.get $7 i64.load - call $~lib/array/Array#__set + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -10846,54 +15302,87 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i64.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 432 - i32.const 384 - i32.const 104 + i32.const 224 + i32.const 592 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 drop 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 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) (local $2 i64) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 @@ -10920,30 +15409,34 @@ drop local.get $2 call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $3 local.get $3 i32.eqz if i32.const 0 + 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 - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 i32.const 1 i32.or - i32.store offset=8 + call $~lib/set/SetEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -10977,98 +15470,97 @@ end if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $4 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) (local $1 i64) (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 + 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 - call $~lib/set/Set#constructor - local.set $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store i64.const 0 local.set $1 loop $for-loop|0 local.get $1 i64.const 100 - i64.lt_s + i64.lt_u local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 8 i32.const 5 call $~lib/builtins/abort @@ -11082,13 +15574,18 @@ end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 10 i32.const 3 call $~lib/builtins/abort @@ -11099,33 +15596,48 @@ loop $for-loop|1 local.get $1 i64.const 100 - i64.lt_s + i64.lt_u local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 16 i32.const 5 call $~lib/builtins/abort @@ -11139,54 +15651,93 @@ end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values - local.set $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor - local.set $3 + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|2 local.get $4 local.get $2 - call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length i32.lt_s local.set $5 local.get $5 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop local.get $4 i32.const 1 i32.add @@ -11195,14 +15746,24 @@ end end local.get $3 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 27 i32.const 3 call $~lib/builtins/abort @@ -11213,500 +15774,302 @@ loop $for-loop|3 local.get $1 i64.const 50 - i64.lt_s + i64.lt_u local.set $4 local.get $4 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|3 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - i64.const 50 - i64.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 1 - i64.add - local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 17 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and + call $~lib/set/Set#has + i32.eqz i32.eqz - if (result i32) - local.get $3 - i64.load - local.get $1 - i64.eq - else - i32.const 0 - end if - local.get $3 - return + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|3 end end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i64) - (local $13 i64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 local.get $0 - i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $0 - i32.load offset=16 - i32.const 16 - 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 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + local.set $4 + local.get $4 if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz i32.eqz if - local.get $8 - local.set $11 - local.get $10 - i64.load - local.set $12 - local.get $11 - local.get $12 - i64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - 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 $13 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=8 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 16 - i32.add + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#add + drop + local.get $0 local.set $6 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i64.const 1 + i64.add + local.set $1 + br $for-loop|4 end end local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $14 - i32.store local.get $0 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 + local.get $6 + call $~lib/set/Set#clear local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 0 + i32.eq + i32.eqz if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) + (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=20 - i32.store offset=16 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.0 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) (local $3 i32) (local $4 i32) (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result 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 + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop - i32.const 0 - 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.const 4 i32.eq drop local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 end local.set $3 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 local.get $3 - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $4 local.get $4 i32.eqz @@ -11718,169 +16081,94 @@ i32.eq if local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/set/Set#rehash - end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - i64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store - end - local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (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 18 - 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 3 - i32.shr_u - i32.gt_u - if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/set/Set#rehash + end + local.get $0 + i32.load offset=8 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $5 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesOffset local.get $5 - call $~lib/rt/pure/__retain + i32.const 8 + i32.mul + i32.add + local.set $4 + local.get $4 + local.get $1 + call $~lib/set/SetEntry#set:key + i32.const 0 + drop + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/set/Set#set:entriesCount + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add local.set $5 - local.get $6 - call $~lib/rt/pure/__release + local.get $4 + local.get $5 + i32.load + call $~lib/set/SetEntry#set:taggedNext + local.get $5 + local.get $4 + i32.store 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#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i64.store + global.set $~lib/memory/__stack_pointer + local.get $6 ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + (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 @@ -11890,9 +16178,9 @@ i32.const 0 i32.lt_s if - i32.const 432 - i32.const 384 - i32.const 120 + i32.const 224 + i32.const 592 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -11901,35 +16189,29 @@ local.get $1 i32.const 1 i32.add - i32.const 3 + i32.const 2 call $~lib/array/ensureSize local.get $0 local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -11938,16 +16220,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -11961,17 +16254,22 @@ if local.get $1 local.get $5 - i32.const 16 + i32.const 8 i32.mul i32.add local.set $7 local.get $7 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -11979,8 +16277,8 @@ local.set $4 local.get $8 local.get $7 - i64.load - call $~lib/array/Array#__set + f32.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -11990,104 +16288,130 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i64.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) + (local $2 f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 432 - i32.const 384 - i32.const 104 + i32.const 224 + i32.const 592 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 drop 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 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 i64) (result i32) - (local $2 i64) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (result i32) + (local $2 f32) (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 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 drop i32.const 0 drop - i32.const 0 - 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.const 4 i32.eq drop local.get $2 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + i32.reinterpret_f32 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $3 local.get $3 i32.eqz if i32.const 0 + 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 - i32.const 0 - drop local.get $3 local.get $3 - i32.load offset=8 + i32.load offset=4 i32.const 1 i32.or - i32.store offset=8 + call $~lib/set/SetEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -12121,216 +16445,274 @@ end if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $4 - call $~lib/set/Set#rehash - end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 + call $~lib/set/Set#rehash + end i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) - (local $1 i64) + (local $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + f32.const 0 local.set $1 loop $for-loop|0 local.get $1 - i64.const 100 - i64.lt_u + f32.const 100 + f32.lt local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $for-loop|0 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 50 + f32.const 50 local.set $1 loop $for-loop|1 local.get $1 - i64.const 100 - i64.lt_u + f32.const 100 + f32.lt local.set $2 local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $for-loop|1 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/set/Set#values - local.set $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/set/Set#constructor - local.set $3 + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|2 local.get $4 local.get $2 - call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length i32.lt_s local.set $5 local.get $5 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 24 i32.const 5 call $~lib/builtins/abort unreachable end local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop local.get $4 i32.const 1 i32.add @@ -12339,269 +16721,261 @@ end end local.get $3 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 + f32.const 0 local.set $1 loop $for-loop|3 local.get $1 - i64.const 50 - i64.lt_u + f32.const 50 + f32.lt local.set $4 local.get $4 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 31 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 33 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $for-loop|3 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 35 i32.const 3 call $~lib/builtins/abort unreachable end - i64.const 0 + f32.const 0 local.set $1 loop $for-loop|4 local.get $1 - i64.const 50 - i64.lt_u + f32.const 50 + f32.lt local.set $4 local.get $4 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 39 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release + call $~lib/set/Set#add + drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 41 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#delete drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 43 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i64.const 1 - i64.add + f32.const 1 + f32.add local.set $1 br $for-loop|4 end end local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 50 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/set/Set#clear + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#clear local.get $0 - call $~lib/set/Set#get:size + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 + i32.const 544 i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 19 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 + (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 1 i32.sub - i32.store offset=4 - local.get $0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 + i32.store local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f32.load - local.get $1 - f32.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 i32.const 0 @@ -12610,192 +16984,44 @@ drop i32.const 1 drop + i32.const 8 i32.const 4 - i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 i32.eq drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 - end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f32) - (local $13 f32) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 - local.get $0 - i32.load offset=8 - local.set $6 - local.get $6 - local.get $0 - i32.load offset=16 - i32.const 8 - 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=4 - i32.const 1 - i32.and - i32.eqz - if - local.get $8 - local.set $11 - local.get $10 - f32.load - local.set $12 - local.get $11 - local.get $12 - f32.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=4 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 8 - i32.add - local.set $8 - end - local.get $6 - i32.const 8 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne - if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $14 - i32.store - local.get $0 - local.get $1 - i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.0 end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 + call $~lib/set/Set#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) (local $3 i32) (local $4 i32) (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result 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 + block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 i32.const 0 @@ -12804,20 +17030,29 @@ drop i32.const 1 drop - i32.const 4 + i32.const 8 i32.const 4 i32.eq drop + i32.const 8 + i32.const 8 + i32.eq + drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.1 end local.set $3 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $1 local.get $3 - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $4 local.get $4 i32.eqz @@ -12829,6 +17064,11 @@ i32.eq if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 local.get $0 i32.load offset=20 local.get $0 @@ -12849,7 +17089,7 @@ i32.const 1 i32.or end - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end local.get $0 i32.load offset=8 @@ -12859,21 +17099,23 @@ local.tee $5 i32.const 1 i32.add - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $5 - i32.const 8 + i32.const 16 i32.mul i32.add local.set $4 local.get $4 local.get $1 - f32.store + call $~lib/set/SetEntry#set:key + i32.const 0 + drop local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.add - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load local.get $3 @@ -12887,111 +17129,29 @@ local.get $4 local.get $5 i32.load - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $5 local.get $4 i32.store end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 + 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#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - i32.eqz - if - i32.const 16 - i32.const 20 - 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 224 - i32.const 384 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer 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#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store - ) - (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=12 @@ -13001,9 +17161,9 @@ i32.const 0 i32.lt_s if - i32.const 432 - i32.const 384 - i32.const 120 + i32.const 224 + i32.const 592 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -13012,35 +17172,29 @@ local.get $1 i32.const 1 i32.add - i32.const 2 + i32.const 3 call $~lib/array/ensureSize local.get $0 local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 - i32.const 0 - drop - local.get $0 - local.get $1 - i32.const 2 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.store offset=12 + call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/set/Set#values (param $0 i32) (result i32) + (func $~lib/set/Set#values (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13049,16 +17203,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=8 local.set $1 local.get $0 i32.load offset=16 local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $2 - call $~lib/array/Array#constructor - local.set $3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store i32.const 0 local.set $4 i32.const 0 @@ -13072,17 +17237,22 @@ if local.get $1 local.get $5 - i32.const 8 + i32.const 16 i32.mul i32.add local.set $7 local.get $7 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 local.tee $8 i32.const 1 @@ -13090,8 +17260,8 @@ local.set $4 local.get $8 local.get $7 - f32.load - call $~lib/array/Array#__set + f64.load + call $~lib/array/Array#__set end local.get $5 i32.const 1 @@ -13101,54 +17271,87 @@ end end local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 local.get $4 - call $~lib/array/Array#set:length + call $~lib/array/Array#set:length local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - f32.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 432 - i32.const 384 - i32.const 104 + i32.const 224 + i32.const 592 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/array/Array#__uget + call $~lib/array/Array#__uget local.set $2 i32.const 0 drop 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 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f32) (result i32) - (local $2 f32) + (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (result i32) + (local $2 f64) (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 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) + block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 i32.const 0 @@ -13157,37 +17360,45 @@ drop i32.const 1 drop + i32.const 8 i32.const 4 - i32.const 4 + i32.eq + drop + i32.const 8 + i32.const 8 i32.eq drop local.get $2 - i32.reinterpret_f32 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 + i64.reinterpret_f64 + call $~lib/util/hash/hash64 + br $~lib/util/hash/HASH|inlined.3 end - call $~lib/set/Set#find + call $~lib/set/Set#find local.set $3 local.get $3 i32.eqz if i32.const 0 + 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 - i32.const 0 - drop local.get $3 local.get $3 - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.or - i32.store offset=4 + call $~lib/set/SetEntry#set:taggedNext local.get $0 local.get $0 i32.load offset=20 i32.const 1 i32.sub - i32.store offset=20 + call $~lib/set/Set#set:entriesCount local.get $0 i32.load offset=4 i32.const 1 @@ -13221,2137 +17432,1926 @@ end if local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $4 - call $~lib/set/Set#rehash + call $~lib/set/Set#rehash end i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - local.tee $1 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - local.tee $2 - i32.const 0 - i32.const 4 - i32.const 8 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 - local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer 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 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $std/set/testNumeric + (func $std/set/testNumeric (local $0 i32) - (local $1 f32) + (local $1 f64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - f32.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f32.const 100 - f32.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 1 - f32.add - local.set $1 - br $for-loop|1 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#values - local.set $2 - i32.const 0 - call $~lib/set/Set#constructor - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size - local.get $0 - call $~lib/set/Set#get:size - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f32.const 0 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + i32.const 0 + call $~lib/set/Set#constructor + local.tee $0 + i32.store + f64.const 0 local.set $1 - loop $for-loop|3 + loop $for-loop|0 local.get $1 - f32.const 50 - f32.lt - local.set $4 - local.get $4 + f64.const 100 + f64.lt + local.set $2 + local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 31 + i32.const 544 + i32.const 6 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#add drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has - i32.eqz + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 33 + i32.const 544 + i32.const 8 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - f32.const 1 - f32.add + f64.const 1 + f64.add local.set $1 - br $for-loop|3 + br $for-loop|0 end end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 100 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 35 + i32.const 544 + i32.const 10 i32.const 3 call $~lib/builtins/abort unreachable end - f32.const 0 + f64.const 50 local.set $1 - loop $for-loop|4 + loop $for-loop|1 local.get $1 - f32.const 50 - f32.lt - local.set $4 - local.get $4 + f64.const 100 + f64.lt + local.set $2 + local.get $2 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 41 + i32.const 544 + i32.const 14 i32.const 5 call $~lib/builtins/abort unreachable end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#delete + call $~lib/set/Set#add drop local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/set/Set#has - i32.eqz + call $~lib/set/Set#has i32.eqz if i32.const 0 - i32.const 336 - i32.const 43 + i32.const 544 + i32.const 16 i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - f32.const 1 - f32.add + f64.const 1 + f64.add local.set $1 - br $for-loop|4 - end - end - local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/set/Set#clear - local.get $0 - call $~lib/set/Set#get:size - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 21 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/set/Set#find (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 - local.set $4 - local.get $4 - if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - f64.load - local.get $1 - f64.eq - else - i32.const 0 - end - if - local.get $3 - return - end - local.get $5 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 - end - end - i32.const 0 - ) - (func $~lib/set/Set#has (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.0 + br $for-loop|1 + end end - call $~lib/set/Set#find - i32.const 0 - i32.ne - ) - (func $~lib/set/Set#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f64) - (local $13 f64) - (local $14 i32) - (local $15 i32) - local.get $1 - i32.const 1 - i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 - i32.const 0 - local.get $4 - i32.const 16 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 local.get $0 - i32.load offset=8 local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=16 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $5 - local.set $8 - loop $while-continue|0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#values + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/set/Set#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $7 - i32.ne - local.set $9 - local.get $9 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + local.set $5 + local.get $5 if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.set $10 - local.get $10 - i32.load offset=8 - i32.const 1 - i32.and + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#has i32.eqz if - local.get $8 - local.set $11 - local.get $10 - f64.load - local.set $12 - local.get $11 - local.get $12 - f64.store - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $13 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.2 - end - local.get $1 - i32.and - local.set $14 - local.get $3 - local.get $14 - i32.const 4 - i32.mul - i32.add - local.set $15 - local.get $11 - local.get $15 - i32.load - i32.store offset=8 - local.get $15 - local.get $8 - i32.store - local.get $8 - i32.const 16 - i32.add - local.set $8 + i32.const 0 + i32.const 544 + i32.const 24 + i32.const 5 + call $~lib/builtins/abort + unreachable end + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 16 - i32.add + i32.store offset=4 + local.get $6 + local.get $2 local.set $6 - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=16 + local.get $6 + local.get $4 + call $~lib/array/Array#__get + call $~lib/set/Set#add + drop + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|2 end end - local.get $0 - local.tee $11 local.get $3 - local.tee $14 - local.get $11 - i32.load - local.tee $9 - i32.ne + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.eq + i32.eqz if - local.get $14 - call $~lib/rt/pure/__retain - local.set $14 - local.get $9 - call $~lib/rt/pure/__release + i32.const 0 + i32.const 544 + i32.const 27 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + local.set $4 + local.get $4 + if + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 31 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 33 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|3 + end end - local.get $14 - i32.store local.get $0 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 - local.get $0 - local.tee $15 - local.get $5 - local.tee $9 - local.get $15 - i32.load offset=8 - local.tee $11 - i32.ne + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq + i32.eqz if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $11 - call $~lib/rt/pure/__release - end - local.get $9 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/set/Set#add (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop i32.const 0 - drop - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.1 + i32.const 544 + i32.const 35 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $0 - local.get $1 - local.get $3 - call $~lib/set/Set#find - local.set $4 - local.get $4 - i32.eqz - if - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + local.set $4 + local.get $4 if local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 39 + i32.const 5 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.load offset=20 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#add + drop local.get $0 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 41 + i32.const 5 + call $~lib/builtins/abort + unreachable end - call $~lib/set/Set#rehash + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#delete + drop + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + call $~lib/set/Set#has + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + f64.const 1 + f64.add + local.set $1 + br $for-loop|4 end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $5 - i32.const 1 - i32.add - i32.store offset=16 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $4 - local.get $4 - local.get $1 - f64.store - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $5 - local.get $4 - local.get $5 - i32.load - i32.store offset=8 - local.get $5 - local.get $4 - i32.store end local.get $0 - call $~lib/rt/pure/__retain - ) - (func $~lib/set/Set#get:size (param $0 i32) (result i32) - local.get $0 - i32.load offset=20 - ) - (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size + i32.const 50 + i32.eq i32.eqz if - i32.const 16 - i32.const 22 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.const 544 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $0 - i32.const 0 - i32.store - local.get $0 - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 + local.get $6 + call $~lib/set/Set#clear local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/set/Set#get:size i32.const 0 - i32.store offset=8 - local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 offset=12 + i32.store local.get $1 i32.const 1073741820 - i32.const 3 - i32.shr_u i32.gt_u if - i32.const 224 - i32.const 384 - i32.const 57 - i32.const 60 + i32.const 432 + i32.const 480 + i32.const 49 + i32.const 43 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - 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 + call $~lib/rt/itcms/__new + local.tee $2 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#__uset (param $0 i32) (param $1 i32) (param $2 f64) i32.const 0 - drop - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add + call $~lib/memory/memory.fill local.get $2 - f64.store + 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#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 + (func $~lib/set/Set#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.load offset=12 - i32.ge_u + i32.eqz if - local.get $1 - i32.const 0 - i32.lt_s - if - i32.const 432 - i32.const 384 - i32.const 120 - i32.const 22 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.const 3 - call $~lib/array/ensureSize - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - local.get $1 - local.get $2 - call $~lib/array/Array#__uset - ) - (func $~lib/array/Array#set:length (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=12 - local.set $2 i32.const 0 - drop + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - local.get $1 - i32.const 3 - call $~lib/array/ensureSize + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $0 - local.get $1 - i32.store offset=12 - ) - (func $~lib/set/Set#values (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries local.get $0 - i32.load offset=8 - local.set $1 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $0 - i32.load offset=16 - local.set $2 i32.const 0 - local.get $2 - call $~lib/array/Array#constructor - local.set $3 - i32.const 0 - local.set $4 - i32.const 0 - local.set $5 - loop $for-loop|0 - local.get $5 - local.get $2 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $1 - local.get $5 - i32.const 16 - i32.mul - i32.add - local.set $7 - local.get $7 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $3 - local.get $4 - local.tee $8 - i32.const 1 - i32.add - local.set $4 - local.get $8 - local.get $7 - f64.load - call $~lib/array/Array#__set - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $3 - local.get $4 - call $~lib/array/Array#set:length - local.get $3 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + call $~lib/set/Set#set:entriesOffset local.get $0 - i32.load offset=12 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + i32.const 0 + call $~lib/set/Set#set:entriesCount local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f64.load - ) - (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 432 - i32.const 384 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 ) - (func $~lib/set/Set#delete (param $0 i32) (param $1 f64) (result i32) - (local $2 f64) + (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 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 8 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.const 4 - i32.eq - drop - i32.const 8 - i32.const 8 - i32.eq - drop - local.get $2 - i64.reinterpret_f64 - call $~lib/util/hash/hash64 - br $~lib/util/hash/HASH|inlined.3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - call $~lib/set/Set#find - local.set $3 - local.get $3 - i32.eqz + 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 0 + i32.shr_u + i32.gt_u if - i32.const 0 - return + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end + local.get $1 i32.const 0 - drop + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 local.get $3 - i32.load offset=8 - i32.const 1 - i32.or - i32.store offset=8 + call $~lib/array/Array#set:buffer local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart local.get $0 - i32.load offset=20 - i32.const 1 - i32.sub - i32.store offset=20 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ local.get $0 - i32.load offset=4 - i32.const 1 - i32.shr_u local.set $4 - local.get $4 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/set/Set#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - local.tee $5 + 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=20 - local.tee $6 - local.get $5 - local.get $6 - i32.gt_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 + i32.eqz if - local.get $0 - local.get $4 - call $~lib/set/Set#rehash + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 1 - ) - (func $~lib/set/Set#clear (param $0 i32) - (local $1 i32) - (local $2 i32) local.get $0 - local.tee $1 i32.const 0 i32.const 4 i32.const 4 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $2 - local.get $1 - i32.load - call $~lib/rt/pure/__release - local.get $2 - i32.store + call $~lib/set/Set#set:buckets local.get $0 i32.const 4 i32.const 1 i32.sub - i32.store offset=4 + call $~lib/set/Set#set:bucketsMask local.get $0 - local.tee $2 i32.const 0 i32.const 4 - i32.const 16 + i32.const 8 i32.mul call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $2 - i32.load offset=8 - call $~lib/rt/pure/__release - local.get $1 - i32.store offset=8 + call $~lib/set/Set#set:entries local.get $0 i32.const 4 - i32.store offset=12 + call $~lib/set/Set#set:entriesCapacity local.get $0 i32.const 0 - i32.store offset=16 + call $~lib/set/Set#set:entriesOffset local.get $0 i32.const 0 - i32.store offset=20 + call $~lib/set/Set#set:entriesCount + 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 $std/set/testNumeric - (local $0 i32) - (local $1 f64) + (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) - i32.const 0 - call $~lib/set/Set#constructor - local.set $0 - f64.const 0 - local.set $1 - loop $for-loop|0 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 6 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 8 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|0 - end - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 10 - i32.const 3 + 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 + 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 0 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end - f64.const 50 - local.set $1 - loop $for-loop|1 - local.get $1 - f64.const 100 - f64.lt - local.set $2 - local.get $2 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 14 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 16 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|1 - end - end + local.get $1 + i32.const 0 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/set/Set#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 - call $~lib/set/Set#get:size - i32.const 100 - i32.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $~lib/set/Set#values - local.set $2 i32.const 0 - call $~lib/set/Set#constructor - local.set $3 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 i32.const 0 - local.set $4 - loop $for-loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - local.set $5 - local.get $5 - if - local.get $0 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 24 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - local.get $2 - local.get $4 - call $~lib/array/Array#__get - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|2 - end - end - local.get $3 - call $~lib/set/Set#get:size + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - call $~lib/set/Set#get:size - i32.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - f64.const 0 - local.set $1 - loop $for-loop|3 - local.get $1 - f64.const 50 - f64.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 31 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|3 - end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq - i32.eqz + 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 1 + i32.shr_u + i32.gt_u if - i32.const 0 - i32.const 336 - i32.const 35 - i32.const 3 + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end - f64.const 0 - local.set $1 - loop $for-loop|4 - local.get $1 - f64.const 50 - f64.lt - local.set $4 - local.get $4 - if - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#add - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 41 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/set/Set#delete - drop - local.get $0 - local.get $1 - call $~lib/set/Set#has - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f64.const 1 - f64.add - local.set $1 - br $for-loop|4 - end - end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/set/Set#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 - call $~lib/set/Set#get:size - i32.const 50 - i32.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end local.get $0 - call $~lib/set/Set#clear + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $0 - call $~lib/set/Set#get:size i32.const 0 - i32.eq + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 - i32.const 0 - i32.const 336 - i32.const 49 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 10 + 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 1 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 1 + i32.shl + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $start:std/set - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - call $std/set/testNumeric - ) - (func $~lib/rt/pure/finalize (param $0 i32) i32.const 0 - drop - global.get $~lib/rt/tlsf/ROOT + local.get $2 + call $~lib/memory/memory.fill local.get $0 - call $~lib/rt/tlsf/freeBlock + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/rt/pure/decrement (param $0 i32) + (func $~lib/set/Set#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 24 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end 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 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - i32.load + i32.const 4 i32.const 1 - i32.and - i32.eqz + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + 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#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 - i32.const 0 - i32.const 96 - i32.const 122 - i32.const 14 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 12 + 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 432 + i32.const 592 + i32.const 58 + 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 1 - i32.eq - if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - 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 - 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 - ) - (func $~start - call $start:std/set + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 + local.get $1 + call $~lib/array/Array#set:length_ + 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/rt/pure/__visit (param $0 i32) (param $1 i32) + (func $~lib/set/Set#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 - global.get $~lib/memory/__heap_base - i32.lt_u + i32.eqz if - return + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 i32.const 1 - drop - i32.const 1 - drop + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount + 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 - i32.const 1 - i32.eq + ) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + 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 - i32.const 0 - i32.const 96 - i32.const 69 + global.get $~lib/memory/__stack_pointer i32.const 16 - call $~lib/builtins/abort - unreachable + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store 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) + i32.const 0 + call $~lib/array/Array#set:buffer local.get $0 - i32.load - local.tee $2 + 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 - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable end - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 2 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/set/Set#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/set/Set#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/set/Set#set:entriesCount 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 - call $~lib/array/Array#__visit ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 + 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 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.const 0 - drop + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 local.get $2 + call $~lib/array/Array#set:byteLength + local.get $0 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/array/Array#set:length_ + 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/set/Set~visit (param $0 i32) (param $1 i32) + (func $~lib/set/Set#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 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/set/Set#set:entriesOffset local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/set/Set#set:entriesCount 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 - call $~lib/array/Array#__visit ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:buffer local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/array/Array#set:dataStart local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 3 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/set/Set#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/set/Set#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 8 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/set/Set#set:entriesOffset local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/set/Set#set:entriesCount 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 - call $~lib/array/Array#__visit ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:buffer local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/array/Array#set:dataStart local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 2 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill + local.get $0 + local.get $3 + call $~lib/array/Array#set:buffer + local.get $0 + local.get $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/set/Set#__visit + call $~lib/array/Array#set:length_ + 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/array/Array#__visit (param $0 i32) (param $1 i32) + (func $~lib/set/Set#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 - drop + i32.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:buckets local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.const 4 + i32.const 1 + i32.sub + call $~lib/set/Set#set:bucketsMask local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + i32.const 4 + i32.const 16 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/set/Set#set:entries + local.get $0 + i32.const 4 + call $~lib/set/Set#set:entriesCapacity local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/set/Set#set:entriesOffset local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/set/Set#set:entriesCount 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 - call $~lib/array/Array#__visit ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) + (func $~lib/array/Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end local.get $0 - i32.load offset=8 - local.set $2 i32.const 0 - drop - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/array/Array#set:buffer local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - drop + call $~lib/array/Array#set:dataStart local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + i32.const 0 + call $~lib/array/Array#set:byteLength local.get $0 + i32.const 0 + call $~lib/array/Array#set:length_ local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/set/Set#__visit (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $0 - i32.load + i32.const 1073741820 + i32.const 3 + i32.shr_u + i32.gt_u + if + i32.const 432 + i32.const 592 + i32.const 58 + i32.const 60 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/rt/pure/__visit - local.get $0 - i32.load offset=8 + i32.const 3 + i32.shl local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 i32.const 0 - drop local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/set/Set~visit (param $0 i32) (param $1 i32) + call $~lib/memory/memory.fill local.get $0 - local.get $1 - call $~lib/set/Set#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop + local.get $3 + call $~lib/array/Array#set:buffer 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 $3 + call $~lib/array/Array#set:dataStart + local.get $0 + local.get $2 + call $~lib/array/Array#set:byteLength local.get $0 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/array/Array - block $~lib/set/Set - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $~lib/set/Set $~lib/array/Array $invalid - end - 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/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/set/Set~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - unreachable + call $~lib/array/Array#set:length_ + 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 ) ) diff --git a/tests/compiler/std/simd.json b/tests/compiler/std/simd.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/simd.json +++ b/tests/compiler/std/simd.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/std/simd.untouched.wat index fa8c8cf7e4..2e99c944be 100644 --- a/tests/compiler/std/simd.untouched.wat +++ b/tests/compiler/std/simd.untouched.wat @@ -3,6 +3,9 @@ (memory $0 0) (table $0 1 funcref) (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)) (export "memory" (memory $0)) (start $~start) (func $start:std/simd diff --git a/tests/compiler/std/static-array.json b/tests/compiler/std/static-array.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/std/static-array.json +++ b/tests/compiler/std/static-array.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index abf1307d30..5c5d04678f 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1,388 +1,1482 @@ (module - (type $none_=>_none (func)) (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_i32_=>_none (func (param i32 i32 i32))) - (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_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01") + (data (i32.const 1036) "\1c") (data (i32.const 1052) "\08\00\00\00\01\00\00\00\02") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\08\00\00\00\02") - (data (i32.const 1116) ",\00\00\00\01") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\03\00\00\00\10\00\00\00 \04\00\00 \04\00\00\08\00\00\00\02") + (data (i32.const 1116) ",") (data (i32.const 1132) "\10\00\00\00\03\00\00\00\00\00\00\00\04") - (data (i32.const 1164) ",\00\00\00\01\00\00\00\00\00\00\00\04\00\00\00\10\00\00\00p\04\00\00p\04\00\00\10\00\00\00\02") - (data (i32.const 1212) "\1c\00\00\00\01") + (data (i32.const 1164) ",") + (data (i32.const 1176) "\04\00\00\00\10\00\00\00p\04\00\00p\04\00\00\10\00\00\00\02") + (data (i32.const 1212) "\1c") (data (i32.const 1228) "\08\00\00\00\00\00\c0?\00\00 @") - (data (i32.const 1244) ",\00\00\00\01\00\00\00\00\00\00\00\05\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\08\00\00\00\02") - (data (i32.const 1292) ",\00\00\00\01") + (data (i32.const 1244) ",") + (data (i32.const 1256) "\05\00\00\00\10\00\00\00\d0\04\00\00\d0\04\00\00\08\00\00\00\02") + (data (i32.const 1292) ",") (data (i32.const 1308) "\10") (data (i32.const 1318) "\f4?\00\00\00\00\00\00\02@") - (data (i32.const 1340) ",\00\00\00\01\00\00\00\00\00\00\00\06\00\00\00\10\00\00\00 \05\00\00 \05\00\00\10\00\00\00\02") - (data (i32.const 1388) "<\00\00\00\01\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") - (data (i32.const 1452) "<\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 1516) ",\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 1564) ",\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 1612) "<\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") - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (data (i32.const 1340) ",") + (data (i32.const 1352) "\06\00\00\00\10\00\00\00 \05\00\00 \05\00\00\10\00\00\00\02") + (data (i32.const 1388) "<") + (data (i32.const 1400) "\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") + (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\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data (i32.const 1564) ",") + (data (i32.const 1576) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1612) "<") + (data (i32.const 1624) "\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 1676) "<") + (data (i32.const 1688) "\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 1804) ",") + (data (i32.const 1816) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1884) "<") + (data (i32.const 1896) "\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 1952) "\07\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1980) "\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") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 18396)) (export "memory" (memory $0)) (start $~start) - (func $~lib/array/Array#__get (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1100 - i32.load - i32.ge_u - if - i32.const 1472 - i32.const 1536 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1184 + call $~lib/rt/itcms/__visit + i32.const 1264 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1472 + call $~lib/rt/itcms/__visit + i32.const 1584 + call $~lib/rt/itcms/__visit + i32.const 1632 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end end - i32.const 1092 - i32.load + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) local.get $0 - i32.const 19 - i32.add - i32.const -16 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 i32.and - i32.const 4 - i32.sub + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/Object#makeGray (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 + global.get $~lib/rt/itcms/iter + i32.eq if - local.get $2 local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.sub - i32.const 65535 - i32.add - i32.const -65536 + 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 - 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 + i32.eqz if - local.get $1 - memory.grow i32.const 0 - i32.lt_s + local.get $0 + i32.const 18396 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz if + i32.const 0 + i32.const 1696 + 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 1696 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1952 + i32.load + i32.gt_u + if + i32.const 1472 + i32.const 1824 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable end + local.get $1 + i32.const 3 + i32.shl + i32.const 1956 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return end + global.get $~lib/rt/itcms/white local.get $0 - global.set $~lib/rt/stub/offset + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 273 + 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 1904 + i32.const 275 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if local.get $2 - local.set $4 - local.get $0 - local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 + 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 1904 + i32.const 288 + 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 $1 - i32.lt_u + 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 $1 - i32.const 7 - i32.and local.get $0 - i32.const 7 + 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 - i32.eq + local.set $1 + local.get $4 + local.get $1 + i32.store offset=4 + local.get $1 + i32.eqz 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 + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store end - loop $while-continue|2 - local.get $4 + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1904 + i32.const 224 + 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 1904 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1904 + i32.const 240 + 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 1904 + i32.const 256 + 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 1904 + i32.const 381 + 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 1904 + i32.const 388 + 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 1904 + i32.const 401 + 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 18400 + i32.const 0 + i32.store + i32.const 19968 + 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 18400 + 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.tee $2 - i32.const 1 - i32.add - local.set $0 local.get $1 - local.tee $3 - i32.const 1 + i32.const 4 + i32.shl i32.add - local.set $1 - local.get $2 - local.get $3 - i32.load8_u - i32.store8 - local.get $4 + i32.const 2 + i32.shl + i32.const 18400 + i32.add + i32.const 0 + i32.store offset=96 + local.get $0 i32.const 1 - i32.sub - local.set $4 - br $while-continue|2 + i32.add + local.set $0 + br $for-loop|1 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 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 18400 + i32.const 19972 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18400 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 local.get $0 - local.get $4 - i32.add - i32.const 7 - i32.and + global.get $~lib/rt/itcms/toSpace + i32.ne 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 + global.set $~lib/rt/itcms/iter local.get $1 - local.get $4 - i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 end 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 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 local.get $0 - i32.add - local.get $1 - local.get $4 - i32.add - i64.load - i64.store - br $while-continue|4 + i32.const 18396 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state end + br $folding-inner0 end - loop $while-continue|5 - local.get $4 + 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 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne if - local.get $4 - i32.const 1 - i32.sub - local.tee $4 + i32.const 0 + i32.const 1696 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18396 + 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 - local.get $1 - local.get $4 + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 i32.add - i32.load8_u - i32.store8 - br $while-continue|5 + local.tee $1 + i32.const 18396 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1904 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end end + i32.const 10 + return end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end + i32.const 0 + return end + global.get $~lib/rt/itcms/visitCount ) - (func $~lib/rt/stub/__realloc (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.const 15 - i32.and - i32.eqz + 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 $0 + local.get $2 + i32.const 23 + i32.lt_u select i32.eqz if i32.const 0 - i32.const 1632 - i32.const 55 - i32.const 3 + i32.const 1904 + i32.const 334 + i32.const 14 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 $3 - i32.load - local.tee $4 + local.get $2 + i32.const 2 + i32.shl i32.add - i32.eq - local.set $5 - local.get $1 - call $~lib/rt/stub/computeSize - local.set $2 + i32.load offset=4 + i32.const -1 local.get $1 - local.get $4 - i32.gt_u - if - local.get $5 - if + 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.const 1073741820 - i32.gt_u + 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 1904 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort unreachable end local.get $0 local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $3 - local.get $2 - i32.store - else - local.get $2 - local.get $4 - i32.const 1 + i32.const 2 i32.shl - local.tee $1 - local.get $1 - local.get $2 - i32.lt_u - select - local.tee $2 - i32.const 1073741820 - i32.gt_u + 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.ge_u + if + i32.const 1632 + i32.const 1904 + i32.const 462 + i32.const 30 + 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 $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 - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset - i32.const 4 - i32.add - local.tee $1 - local.get $2 - call $~lib/rt/stub/computeSize - local.tee $2 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $2 - i32.store - local.get $1 - local.get $0 - local.get $4 - call $~lib/memory/memory.copy - local.get $1 - local.set $0 end - else - local.get $5 + 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 - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/stub/offset - local.get $3 - local.get $2 - i32.store + i32.const 0 + i32.const 1904 + i32.const 500 + 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 1904 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1904 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $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 $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 $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 + local.get $1 ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) @@ -542,14 +1636,285 @@ end end ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1632 + i32.const 1696 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/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/array/ensureSize (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=8 - local.tee $4 + local.tee $5 local.get $1 i32.shr_u i32.const 1 @@ -570,56 +1935,217 @@ end local.get $0 i32.load - local.tee $5 - i32.const 1 - local.get $1 - i32.shl - local.tee $1 + local.tee $6 local.set $2 - local.get $1 - i32.const 1073741804 - i32.gt_u - if - unreachable + block $__inlined_func$~lib/rt/itcms/__renew + i32.const 1 + local.get $1 + i32.shl + local.tee $7 + local.tee $3 + local.get $6 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $2 + local.get $2 + local.get $3 + i32.gt_u + select + call $~lib/memory/memory.copy end - i32.const 16 - i32.sub - local.get $2 - i32.const 16 - i32.add - call $~lib/rt/stub/__realloc - local.tee $3 - i32.const 4 - i32.sub - local.get $2 - i32.store offset=16 - local.get $4 - local.get $3 - i32.const 16 - i32.add - local.tee $2 - i32.add local.get $1 - local.get $4 + local.get $5 + i32.add + local.get $7 + local.get $5 i32.sub call $~lib/memory/memory.fill - local.get $2 - local.get $5 + local.get $1 + local.get $6 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 $1 + if + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 290 + 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 $2 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $3 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + end end local.get $0 - local.get $1 + local.get $7 i32.store offset=8 end ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + ) + (func $~start + call $start:std/static-array + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2012 + i32.lt_s + if + i32.const 18416 + i32.const 18464 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array#__get (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1100 + i32.load + i32.ge_u + if + i32.const 1472 + i32.const 1536 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + i32.const 1092 + i32.load + local.get $0 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $~lib/array/Array#__get (param $0 i32) (result i64) + (local $1 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 1196 i32.load @@ -627,11 +2153,14 @@ if i32.const 1472 i32.const 1536 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store i32.const 1188 i32.load local.get $0 @@ -639,8 +2168,21 @@ i32.shl i32.add i64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__get (param $0 i32) (result f32) + (local $1 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 1276 i32.load @@ -648,11 +2190,14 @@ if i32.const 1472 i32.const 1536 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store i32.const 1268 i32.load local.get $0 @@ -660,8 +2205,21 @@ i32.shl i32.add f32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__get (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 i32.const 1372 i32.load @@ -669,11 +2227,14 @@ if i32.const 1472 i32.const 1536 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store i32.const 1364 i32.load local.get $0 @@ -681,8 +2242,23 @@ i32.shl i32.add f64.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:std/static-array + global.get $~lib/memory/__stack_pointer + i32.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 1088 + i32.store i32.const 1100 i32.load i32.const 2 @@ -695,6 +2271,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 0 call $~lib/array/Array#__get i32.const 1 @@ -707,6 +2286,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1 call $~lib/array/Array#__get i32.const 2 @@ -719,8 +2301,26 @@ call $~lib/builtins/abort unreachable end - i32.const 1676 - global.set $~lib/rt/stub/offset + i32.const 1744 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1776 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1856 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 1100 i32.load i32.eqz @@ -732,10 +2332,20 @@ i32.const 1 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 1092 i32.load i32.const 2 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store i32.const 0 call $~lib/array/Array#__get i32.const 2 @@ -748,6 +2358,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store i32.const 1196 i32.load i32.const 2 @@ -760,6 +2373,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store i32.const 0 call $~lib/array/Array#__get i64.const 3 @@ -772,6 +2388,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store i32.const 1 call $~lib/array/Array#__get i64.const 4 @@ -784,6 +2403,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 1196 i32.load i32.eqz @@ -795,10 +2425,20 @@ i32.const 1 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store i32.const 1188 i32.load i64.const 4 i64.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 1184 + i32.store i32.const 0 call $~lib/array/Array#__get i64.const 4 @@ -811,6 +2451,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store i32.const 1276 i32.load i32.const 2 @@ -823,6 +2466,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store i32.const 0 call $~lib/array/Array#__get f32.const 1.5 @@ -835,6 +2481,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store i32.const 1 call $~lib/array/Array#__get f32.const 2.5 @@ -847,6 +2496,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 1276 i32.load i32.eqz @@ -858,10 +2518,20 @@ i32.const 1 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store i32.const 1268 i32.load f32.const 2.5 f32.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 1264 + i32.store i32.const 0 call $~lib/array/Array#__get f32.const 2.5 @@ -874,6 +2544,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store i32.const 1372 i32.load i32.const 2 @@ -886,6 +2559,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store i32.const 0 call $~lib/array/Array#__get f64.const 1.25 @@ -898,6 +2574,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store i32.const 1 call $~lib/array/Array#__get f64.const 2.25 @@ -910,6 +2589,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 1372 i32.load i32.eqz @@ -921,10 +2611,20 @@ i32.const 1 i32.store end + global.get $~lib/memory/__stack_pointer + i32.const 1360 + i32.store i32.const 1364 i32.load f64.const 2.25 f64.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 1360 + i32.store i32.const 0 call $~lib/array/Array#__get f64.const 2.25 @@ -937,8 +2637,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/static-array + 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.untouched.wat b/tests/compiler/std/static-array.untouched.wat index d0551de71d..a2348e24b4 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -1,6 +1,8 @@ (module - (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 $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_i64_=>_none (func (param i32 i32 i64))) @@ -9,32 +11,52 @@ (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))) - (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 (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 12) "\1c\00\00\00\01\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\01\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\01\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\01\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\01\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\01\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\01\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\01\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\01\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\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 492) ",\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 540) ",\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 588) "<\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 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) (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/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 652)) + (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)) (export "memory" (memory $0)) (start $~start) (func $~lib/array/Array#get:length (param $0 i32) (result i32) @@ -50,177 +72,2343 @@ i32.add i32.load ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (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 - i32.load offset=12 - i32.ge_u - if - i32.const 448 - i32.const 512 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + 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 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.store offset=8 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 672 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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/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 + (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) - 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 + i32.const 672 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else 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 + global.set $~lib/rt/itcms/iter end local.get $0 - i32.const 3 - i32.and + 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 - loop $while-continue|1 - local.get $2 - i32.const 16 - i32.ge_u + 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 273 + 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 880 + i32.const 275 + 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 880 + i32.const 288 + 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 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 $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 880 + i32.const 224 + 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 880 + i32.const 239 + 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 880 + i32.const 240 + 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 880 + i32.const 256 + 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 880 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 608 + i32.const 880 + i32.const 462 + 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 880 + i32.const 334 + 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 347 + 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 361 + 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 500 + 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 502 + 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 + 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/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 256 + 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 @@ -1407,358 +3595,134 @@ 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 608 - 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 + 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 - local.get $0 ) - (func $~lib/rt/stub/__renew (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__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 $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.const 16 + i32.const 20 i32.sub - i32.const 16 - local.get $1 - i32.add - call $~lib/rt/stub/__realloc local.set $2 + local.get $1 local.get $2 - i32.const 4 + 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 - i32.store offset=16 local.get $2 - i32.const 16 - i32.add + 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/memory/memory.fill (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) - (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 + local.get $1 + i32.eqz + if + return + end + i32.const 1 + drop + local.get $0 + i32.eqz + if 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 + i32.const 672 + i32.const 290 + 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 $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 @@ -1799,7 +3763,7 @@ local.set $5 local.get $4 local.get $5 - call $~lib/rt/stub/__renew + call $~lib/rt/itcms/__renew local.set $6 local.get $6 local.get $3 @@ -1819,15 +3783,82 @@ local.get $0 local.get $6 i32.store offset=4 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link end local.get $0 local.get $5 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#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (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#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (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 @@ -1835,9 +3866,257 @@ i32.shl i32.add local.get $2 - i32.store + f32.store + i32.const 0 + drop + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (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/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 $~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 448 + i32.const 512 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array#__uget + local.set $2 + i32.const 0 + 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#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 local.get $0 i32.load offset=12 @@ -1849,7 +4128,7 @@ if i32.const 448 i32.const 512 - i32.const 120 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -1864,28 +4143,34 @@ local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 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#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i64.load + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i64) (local $2 i64) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -1893,32 +4178,40 @@ if i32.const 448 i32.const 512 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - i64.store + global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $1 local.get $0 i32.load offset=12 @@ -1930,7 +4223,7 @@ if i32.const 448 i32.const 512 - i32.const 120 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -1945,28 +4238,34 @@ local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 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#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f32.load + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f32) (local $2 f32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -1974,32 +4273,40 @@ if i32.const 448 i32.const 512 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - f32.store + global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + (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 @@ -2011,7 +4318,7 @@ if i32.const 448 i32.const 512 - i32.const 120 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -2026,28 +4333,34 @@ local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 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#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - f64.load + global.set $~lib/memory/__stack_pointer ) (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result f64) (local $2 f64) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 @@ -2055,32 +4368,40 @@ if i32.const 448 i32.const 512 - i32.const 104 + i32.const 92 i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 call $~lib/array/Array#__uget local.set $2 i32.const 0 drop local.get $2 - ) - (func $~lib/array/Array#__uset (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $2 - f64.store + global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + (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 @@ -2092,7 +4413,7 @@ if i32.const 448 i32.const 512 - i32.const 120 + i32.const 108 i32.const 22 call $~lib/builtins/abort unreachable @@ -2107,17 +4428,40 @@ local.get $1 i32.const 1 i32.add - i32.store offset=12 + call $~lib/array/Array#set:length_ end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 local.get $2 call $~lib/array/Array#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (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 @@ -2131,6 +4475,11 @@ 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 @@ -2145,6 +4494,11 @@ 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 @@ -2158,25 +4512,30 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 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 @@ -2191,6 +4550,11 @@ 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 @@ -2204,6 +4568,11 @@ 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 @@ -2218,6 +4587,11 @@ 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 @@ -2232,10 +4606,20 @@ 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 @@ -2250,6 +4634,11 @@ 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 @@ -2263,6 +4652,11 @@ 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 @@ -2277,6 +4671,11 @@ 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 @@ -2291,10 +4690,20 @@ 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 @@ -2309,6 +4718,11 @@ 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 @@ -2322,6 +4736,11 @@ 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 @@ -2336,6 +4755,11 @@ 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 @@ -2350,10 +4774,20 @@ 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 @@ -2367,8 +4801,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:std/static-array + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/staticarray.json b/tests/compiler/std/staticarray.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/staticarray.json +++ b/tests/compiler/std/staticarray.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index c437653170..c8fbb6a6ea 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1,72 +1,275 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $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_=>_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) "\1c\00\00\00\01\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\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 1132) "<\00\00\00\01\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\01\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\01\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\01\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\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 1388) "<\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 1452) "<\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 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 1664) "\06\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1692) "$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18100)) (export "memory" (memory $0)) (start $~start) - (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u - i32.ge_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1280 + call $~lib/rt/itcms/__visit + global.get $std/staticarray/arr3 + local.tee $0 if - i32.const 1088 - i32.const 1152 - i32.const 95 - i32.const 41 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 ) - (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/Object#set:next (param $0 i32) (param $1 i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 2 - i32.shr_u + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1408 + i32.const 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 18100 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1408 + 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 1408 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 i32.const 1 i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1664 + i32.load + i32.gt_u + if + i32.const 1088 + i32.const 1536 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1668 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz if - i32.const 1088 - i32.const 1152 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable + return end + global.get $~lib/rt/itcms/white local.get $0 - local.get $1 - i32.store offset=4 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -81,8 +284,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 272 + i32.const 1616 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -101,8 +304,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 274 + i32.const 1616 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -144,8 +347,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 287 + i32.const 1616 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -236,8 +439,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 200 + i32.const 1616 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -250,8 +453,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 202 + i32.const 1616 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -323,8 +526,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 223 + i32.const 1616 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -378,23 +581,23 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 238 + i32.const 1616 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1472 - i32.const 239 + i32.const 1616 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -441,8 +644,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 255 + i32.const 1616 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -511,8 +714,8 @@ i32.gt_u if i32.const 0 - i32.const 1472 - i32.const 380 + i32.const 1616 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -539,8 +742,8 @@ i32.lt_u if i32.const 0 - i32.const 1472 - i32.const 387 + i32.const 1616 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -567,8 +770,8 @@ i32.lt_u if i32.const 0 - i32.const 1472 - i32.const 400 + i32.const 1616 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -615,63 +818,388 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - i32.const 31 - local.get $1 - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + (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 - 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 + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 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 1472 - i32.const 333 + unreachable + end + i32.const 18112 + i32.const 0 + i32.store + i32.const 19680 + 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 18112 + 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 18112 + 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 18112 + i32.const 19684 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18112 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18100 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1408 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18100 + 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 $1 + i32.const 18100 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1616 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1616 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -722,8 +1250,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 346 + i32.const 1616 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -753,8 +1281,8 @@ i32.ge_u if i32.const 1344 - i32.const 1472 - i32.const 461 + i32.const 1616 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -844,8 +1372,8 @@ i32.eqz if i32.const 0 - i32.const 1472 - i32.const 498 + i32.const 1616 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -859,8 +1387,8 @@ i32.gt_u if i32.const 0 - i32.const 1472 - i32.const 500 + i32.const 1616 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -878,8 +1406,8 @@ i32.and if i32.const 0 - i32.const 1472 - i32.const 360 + i32.const 1616 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -943,124 +1471,259 @@ end local.get $1 ) - (func $~lib/rt/pure/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 1344 - i32.const 1408 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - memory.size - local.tee $3 - i32.const 1 - i32.lt_s - if (result i32) - i32.const 1 - local.get $3 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else - i32.const 0 - end - if - unreachable - end - i32.const 1520 + 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.store - i32.const 3088 + 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 - loop $for-loop|0 - local.get $2 - i32.const 23 - i32.lt_u + 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 $2 - i32.const 2 - i32.shl - i32.const 1520 + 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 - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $3 - loop $for-loop|1 - local.get $3 - i32.const 16 - i32.lt_u - if - local.get $3 - local.get $2 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl - i32.const 1520 - i32.add - i32.const 0 - i32.store offset=96 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|1 - end - end + local.set $0 + br $while-continue|0 + end + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1344 + i32.const 1408 + i32.const 256 + 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-continue|0 local.get $2 - i32.const 1 - i32.add + call $~lib/rt/itcms/step + i32.sub local.set $2 - br $for-loop|0 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - i32.const 1520 - i32.const 3092 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1520 - global.set $~lib/rt/tlsf/ROOT end - global.get $~lib/rt/tlsf/ROOT local.get $0 i32.const 16 i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 ) (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -1238,7 +1901,7 @@ (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.set $1 local.get $2 if @@ -1249,68 +1912,243 @@ end local.get $1 ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 - i32.const 1516 - i32.gt_u + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $2 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 + i32.eqz if i32.const 0 i32.const 1408 - i32.const 109 - i32.const 3 + i32.const 290 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/rt/itcms/white local.get $2 - i32.const 1 - i32.add - i32.store offset=4 - local.get $1 - i32.load - i32.const 1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 i32.and + i32.eq if - i32.const 0 - i32.const 1408 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $2 + local.set $3 + local.get $2 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $3 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end end end - local.get $0 ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1516 - i32.gt_u - if + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + block $invalid + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + local.get $0 local.get $0 i32.const 20 i32.sub - call $~lib/rt/pure/decrement + i32.load offset=16 + i32.add + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + call $~lib/rt/itcms/__visit + end + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + return end + unreachable + ) + (func $~start + call $start:std/staticarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1716 + i32.lt_s + if + i32.const 18128 + i32.const 18176 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/staticarray/StaticArray#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 100 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 2 + i32.shr_u + i32.const 1 + i32.le_u + if + i32.const 1088 + i32.const 1152 + i32.const 115 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:std/staticarray (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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.const 1 call $~lib/staticarray/StaticArray#__get @@ -1324,6 +2162,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1052 i32.load i32.const 2 @@ -1338,9 +2179,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.const 4 call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.const 1 call $~lib/staticarray/StaticArray#__get @@ -1366,6 +2213,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1280 i32.const 1 call $~lib/staticarray/StaticArray#__get @@ -1379,6 +2229,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1276 i32.load i32.const 2 @@ -1393,9 +2246,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1280 i32.const 4 call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 1280 + i32.store i32.const 1280 i32.const 1 call $~lib/staticarray/StaticArray#__get @@ -1409,13 +2268,25 @@ call $~lib/builtins/abort unreachable end + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1488 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1568 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 12 i32.const 3 i32.const 1312 call $~lib/rt/__newBuffer - call $~lib/rt/pure/__retain global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -1428,7 +2299,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -1441,7 +2316,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -1454,7 +2333,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -1470,10 +2353,18 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 8 call $~lib/staticarray/StaticArray#__set + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -1490,11 +2381,12 @@ i32.const 3 i32.const 1312 call $~lib/rt/__newBuffer - call $~lib/rt/pure/__retain - global.get $std/staticarray/arr3 - call $~lib/rt/pure/__release global.set $std/staticarray/arr3 + global.get $~lib/memory/__stack_pointer global.get $std/staticarray/arr3 + local.tee $0 + i32.store + local.get $0 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -1507,176 +2399,87 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 5 i32.const 0 call $~lib/rt/__newBuffer - call $~lib/rt/pure/__retain local.tee $0 - i32.const 0 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store + i32.store offset=4 local.get $0 i32.const 0 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - i32.store offset=4 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset + local.get $0 + i32.const 1 + call $std/staticarray/Ref#constructor + call $~lib/staticarray/StaticArray#__uset local.get $0 global.set $std/staticarray/arr4 - global.get $std/staticarray/arr3 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end i32.const 0 global.set $std/staticarray/arr3 - global.get $std/staticarray/arr4 - local.tee $0 - if - local.get $0 - call $~lib/rt/pure/__release - end i32.const 0 global.set $std/staticarray/arr4 - ) - (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 1408 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - i32.eq + i32.const 18100 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s if - block $__inlined_func$~lib/rt/__visit_members - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - local.get $0 - i32.const 20 - i32.add - local.tee $1 - i32.const 8 - i32.sub - 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 $__inlined_func$~lib/rt/__visit_members $~lib/staticarray/StaticArray $invalid - end - local.get $1 - i32.load - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $1 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - 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 $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - br $__inlined_func$~lib/rt/__visit_members + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1408 - 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 + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state if - i32.const 0 - i32.const 1408 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/step + drop + br $while-continue|1 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 + 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.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/staticarray - ) - (func $~lib/rt/pure/__visit (param $0 i32) - local.get $0 - i32.const 1516 - i32.lt_u - if - return - end - local.get $0 - i32.const 20 + (func $std/staticarray/Ref#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - call $~lib/rt/pure/decrement + 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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/std/staticarray.ts b/tests/compiler/std/staticarray.ts index 719e87bf77..2b3dda6ba5 100644 --- a/tests/compiler/std/staticarray.ts +++ b/tests/compiler/std/staticarray.ts @@ -35,3 +35,6 @@ var arr4: StaticArray = [ new Ref(), new Ref() ]; arr3 = changetype>(0); // unleak arr4 = changetype>(0); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index c6b80a8b6e..bbd9858fd5 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -2,32 +2,49 @@ (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_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\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\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 108) "<\00\00\00\01\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 172) "<\00\00\00\01\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\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\03\00\00\00\0c\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00") - (data (i32.const 268) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\0c\00\00\00\05\00\00\00\06\00\00\00\07\00\00\00") - (data (i32.const 300) "<\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 364) "<\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 428) "<\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 12) "\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\00\00\00") + (data (i32.const 44) "<\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 108) "<\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 172) "<\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 236) "\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\00\00\00") + (data (i32.const 268) "\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\00\00\00") + (data (i32.const 300) "<\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 364) "<\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 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 464) "\00\00\00\00\00\00\00\00\00\00\00\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\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 544) "\00\00\00\00\00\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\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 640) "\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$\t\00\00\00\00\00\00 \00\00\00\00\00\00\00\04A\00\00\00\00\00\00") (table $0 1 funcref) (global $std/staticarray/arr1 i32 (i32.const 32)) (global $std/staticarray/arr2 i32 (i32.const 256)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $std/staticarray/arr3 (mut i32) (i32.const 0)) (global $std/staticarray/arr4 (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 492)) + (global $~lib/rt/__rtti_base i32 (i32.const 640)) + (global $~lib/memory/__data_end i32 (i32.const 692)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17076)) + (global $~lib/memory/__heap_base i32 (i32.const 17076)) (export "memory" (memory $0)) (start $~start) (func $~lib/staticarray/StaticArray#get:length (param $0 i32) (result i32) @@ -46,31 +63,7 @@ i32.add i32.load ) - (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 64 - i32.const 128 - i32.const 95 - i32.const 41 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__uget - local.set $2 - i32.const 0 - drop - local.get $2 - ) (func $~lib/staticarray/StaticArray#__uset (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 local.get $1 i32.const 2 @@ -78,153 +71,455 @@ 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) + (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 - call $~lib/staticarray/StaticArray#get:length - i32.ge_u - if - i32.const 64 - i32.const 128 - i32.const 110 - i32.const 41 - call $~lib/builtins/abort - unreachable + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end end + ) + (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/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 - local.get $2 - call $~lib/staticarray/StaticArray#__uset + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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 384 + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 448 - i32.const 272 - i32.const 14 + i32.const 384 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 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 + 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 0 - i32.const 448 - i32.const 274 - i32.const 14 + i32.const 64 + i32.const 512 + i32.const 22 + i32.const 28 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 448 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 + ) + (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 $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.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 384 + 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 592 + i32.const 273 + 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 592 + i32.const 275 + 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 592 + i32.const 288 + 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 @@ -308,7 +603,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -332,8 +627,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 200 + i32.const 592 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -349,8 +644,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 202 + i32.const 592 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -403,7 +698,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -444,8 +739,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 223 + i32.const 592 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -478,7 +773,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -487,7 +782,7 @@ 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 @@ -509,8 +804,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 238 + i32.const 592 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -527,8 +822,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 239 + i32.const 592 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -586,8 +881,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 255 + i32.const 592 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -611,15 +906,15 @@ 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 @@ -647,7 +942,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -691,8 +986,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 380 + i32.const 592 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -734,8 +1029,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 387 + i32.const 592 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -767,8 +1062,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 400 + i32.const 592 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -805,13 +1100,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 @@ -822,7 +1117,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 @@ -849,6 +1144,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 @@ -891,7 +1188,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 @@ -979,18 +1276,346 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne if (result i32) - i32.const 12 - else local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add + 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 592 + i32.const 565 + 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 + 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 + 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 384 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1005,8 +1630,8 @@ i32.ge_u if i32.const 320 - i32.const 448 - i32.const 461 + i32.const 592 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1089,8 +1714,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 333 + i32.const 592 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1154,8 +1779,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 346 + i32.const 592 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1305,8 +1930,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 360 + i32.const 592 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1331,7 +1956,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 @@ -1344,7 +1969,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 @@ -1355,7 +1980,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 @@ -1385,7 +2010,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) @@ -1414,8 +2039,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 498 + i32.const 592 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1434,8 +2059,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 500 + i32.const 592 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1463,55 +2088,291 @@ 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 320 - i32.const 384 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 + local.get $1 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) + (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) - loop $while-continue|0 + (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 - if (result i32) - local.get $1 - i32.const 3 + 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/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 256 + 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 @@ -2759,7 +3620,7 @@ (local $3 i32) local.get $0 local.get $1 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.set $3 local.get $2 if @@ -2770,104 +3631,399 @@ end local.get $3 ) - (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 + (func $std/staticarray/test (result i32) + (local $0 i32) + i32.const 12 + i32.const 3 + i32.const 288 + call $~lib/rt/__newBuffer + ) + (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.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq i32.eqz if - i32.const 0 - i32.const 384 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable + return 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 384 - i32.const 112 + i32.const 290 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 + 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 - call $~lib/rt/pure/increment - end + 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/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 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $std/staticarray/test (result i32) + (func $~lib/rt/itcms/__collect (local $0 i32) - i32.const 12 - i32.const 3 - i32.const 288 - call $~lib/rt/__newBuffer - call $~lib/rt/pure/__retain + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/staticarray/arr1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/staticarray/arr4 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - global.get $~lib/memory/__heap_base - i32.gt_u + i32.load + local.tee $2 if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/staticarray/StaticArray#__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 + local.set $2 + local.get $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + 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 + ) + (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/staticarray/StaticArray#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + 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 $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + return + end local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + local.get $1 + call $~lib/staticarray/StaticArray~visit + return end + unreachable ) - (func $std/staticarray/Ref#constructor (param $0 i32) (result i32) + (func $~start + call $start:std/staticarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17104 + i32.const 17152 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/staticarray/StaticArray#__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.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u if - i32.const 0 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + i32.const 64 + i32.const 128 + i32.const 100 + i32.const 41 + call $~lib/builtins/abort + unreachable end local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/staticarray/StaticArray#__uget + local.set $2 + i32.const 0 + 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/staticarray/StaticArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/staticarray/StaticArray#get:length + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 115 + i32.const 41 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.get $2 + call $~lib/staticarray/StaticArray#__uset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:std/staticarray (local $0 i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $std/staticarray/arr1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -2882,6 +4038,11 @@ unreachable end global.get $std/staticarray/arr1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/staticarray/StaticArray#get:length i32.const 3 i32.eq @@ -2895,10 +4056,20 @@ unreachable end global.get $std/staticarray/arr1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 i32.const 4 call $~lib/staticarray/StaticArray#__set global.get $std/staticarray/arr1 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -2928,6 +4099,11 @@ unreachable end global.get $std/staticarray/arr2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 2 @@ -2942,6 +4118,11 @@ unreachable end global.get $std/staticarray/arr2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/staticarray/StaticArray#get:length i32.const 3 i32.eq @@ -2955,10 +4136,20 @@ unreachable end global.get $std/staticarray/arr2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 i32.const 4 call $~lib/staticarray/StaticArray#__set global.get $std/staticarray/arr2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 4 @@ -2972,9 +4163,23 @@ call $~lib/builtins/abort unreachable end + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 464 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 544 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $std/staticarray/test global.set $std/staticarray/arr3 global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 call $~lib/staticarray/StaticArray#__get i32.const 5 @@ -2989,6 +4194,11 @@ unreachable end global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -3003,6 +4213,11 @@ unreachable end global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 2 call $~lib/staticarray/StaticArray#__get i32.const 7 @@ -3017,6 +4232,11 @@ unreachable end global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/staticarray/StaticArray#get:length i32.const 3 i32.eq @@ -3030,10 +4250,20 @@ unreachable end global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 i32.const 8 call $~lib/staticarray/StaticArray#__set global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 8 @@ -3048,12 +4278,13 @@ unreachable end call $std/staticarray/test - local.set $0 - global.get $std/staticarray/arr3 - call $~lib/rt/pure/__release - local.get $0 global.set $std/staticarray/arr3 global.get $std/staticarray/arr3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 1 call $~lib/staticarray/StaticArray#__get i32.const 6 @@ -3067,306 +4298,63 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 5 i32.const 0 call $~lib/rt/__newBuffer - call $~lib/rt/pure/__retain - local.set $0 + local.tee $0 + i32.store offset=4 local.get $0 i32.const 0 + i32.const 0 call $std/staticarray/Ref#constructor - i32.store + call $~lib/staticarray/StaticArray#__uset local.get $0 + i32.const 1 i32.const 0 call $std/staticarray/Ref#constructor - i32.store offset=4 + call $~lib/staticarray/StaticArray#__uset local.get $0 global.set $std/staticarray/arr4 i32.const 0 - local.tee $0 - global.get $std/staticarray/arr3 - 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 - end - local.get $0 global.set $std/staticarray/arr3 i32.const 0 - local.tee $1 - global.get $std/staticarray/arr4 - local.tee $0 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - end - local.get $1 global.set $std/staticarray/arr4 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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/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) + (func $std/staticarray/Ref#constructor (param $0 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 384 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 384 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:std/staticarray - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + i32.store 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 i32.eqz if + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 384 - 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 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - ) - (func $~lib/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray#__visit - ) - (func $std/staticarray/Ref~visit (param $0 i32) (param $1 i32) - nop - ) - (func $~lib/staticarray/StaticArray#__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 - local.set $2 - local.get $2 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 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 - ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) - local.get $0 + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/staticarray/StaticArray#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - 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 $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/staticarray/StaticArray~visit - return - end - local.get $0 - local.get $1 - call $std/staticarray/Ref~visit - return - end - local.get $0 - local.get $1 - call $~lib/staticarray/StaticArray~visit - return - end - unreachable ) ) diff --git a/tests/compiler/std/string-casemapping.json b/tests/compiler/std/string-casemapping.json index 11b43d4296..73d40f91f2 100644 --- a/tests/compiler/std/string-casemapping.json +++ b/tests/compiler/std/string-casemapping.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime half" ] } \ No newline at end of file diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 4a7b8ba53e..d380d73588 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1,353 +1,695 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param 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_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1068) "<\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 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/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 1260) "L\03\00\00\01\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 2108) "\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 2731) "$++++++++\01\00TVVVVVVVV") - (data (i32.const 2770) "\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 3279) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") - (data (i32.const 3365) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") - (data (i32.const 3524) "\0cl\00\00\00\00\00\06") - (data (i32.const 3570) "\06%\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 4021) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") - (data (i32.const 4086) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") - (data (i32.const 4199) "H") - (data (i32.const 4209) "*++++++++++++++++++++++++++") - (data (i32.const 4269) "++++++++\07\00HVVVVVVVV\02") - (data (i32.const 4344) "+++++++++++++UVVVVVVVVVVVV\0e") - (data (i32.const 4402) "$+++++++++++\07\00VVVVVVVVVVVV") - (data (i32.const 4472) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") - (data (i32.const 4569) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4623) "*++++++++++VVVVVVVVVV\0e") - (data (i32.const 4688) "+++++++++++UVVVVVVVVVV\0e") - (data (i32.const 4777) "\08\00\00V\01\00\009") - (data (i32.const 4792) "\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 5749) "\06\'Qow") - (data (i32.const 5764) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") - (data (i32.const 5792) "\b4\c4") - (data (i32.const 5914) "\c6\c9\00\00\00\db") - (data (i32.const 6003) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") - (data (i32.const 6028) "\e7") - (data (i32.const 6114) "\ea") - (data (i32.const 6237) "\ed") - (data (i32.const 6260) "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 6668) "L\00\00\00\01\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 6748) "\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 7292) "\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 7378) "\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 7436) "\f8\03") - (data (i32.const 7463) "\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 7510) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") - (data (i32.const 7536) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") - (data (i32.const 7574) "\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 7746) "\f2\07\c0\7f") - (data (i32.const 7762) "\f2\1f@?") - (data (i32.const 7775) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") - (data (i32.const 7809) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") - (data (i32.const 7835) "\10") - (data (i32.const 7847) "\e0") - (data (i32.const 7870) "\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 7936) "\87\01\04\0e") - (data (i32.const 7966) "\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 8054) "\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 8115) "\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 8171) "0") - (data (i32.const 8185) "\80\03") - (data (i32.const 8201) "\80\00\80") - (data (i32.const 8216) "\ff\ff\ff\ff\00\00\00\00\00\80") - (data (i32.const 8252) " \00\00\00\00<>\08") - (data (i32.const 8271) "~") - (data (i32.const 8283) "p\00\00 ") - (data (i32.const 8347) "?\00\10") - (data (i32.const 8361) "\80\f7\bf\00\00\00\f0") - (data (i32.const 8378) "\03\00\ff\ff\ff\ff\03") - (data (i32.const 8394) "\01\00\00\07") - (data (i32.const 8411) "\03D\08\00\00`\10") - (data (i32.const 8436) "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 8519) "\f8\00\0e") - (data (i32.const 8536) " !\00\00\00\00\00@") - (data (i32.const 8562) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") - (data (i32.const 8603) "\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 8667) " ") - (data (i32.const 8696) "\01") - (data (i32.const 8714) "\c0\07") - (data (i32.const 8732) "n\f0\00\00\00\00\00\87") - (data (i32.const 8760) "`\00\00\00\00\00\00\00\f0") - (data (i32.const 8817) "\18") - (data (i32.const 8836) "\c0\ff\01") - (data (i32.const 8860) "\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 8929) "\80\d3@") - (data (i32.const 8951) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") - (data (i32.const 8995) "\ff\\\00\00@") - (data (i32.const 9010) "\f8\85\0d") - (data (i32.const 9042) "<\b0\01\00\000") - (data (i32.const 9058) "\f8\a7\01") - (data (i32.const 9073) "(\bf") - (data (i32.const 9087) "\e0\bc\0f") - (data (i32.const 9121) "\80\ff\06") - (data (i32.const 9155) "X\08") - (data (i32.const 9174) "\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 9218) "\7f\bf") - (data (i32.const 9230) "\fc\ff\ff\fcm") - (data (i32.const 9250) "~\b4\bf") - (data (i32.const 9262) "\a3") - (data (i32.const 9306) "\18\00\00\00\00\00\00\00\ff\01") - (data (i32.const 9370) "\1f\00\00\00\00\00\00\00\7f\00\0f") - (data (i32.const 9413) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") - (data (i32.const 9455) "`\0f") - (data (i32.const 9480) "\80\03\f8\ff\e7\0f\00\00\00<") - (data (i32.const 9508) "\1c") - (data (i32.const 9532) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") - (data (i32.const 9564) "\7f\ff\ff\f9\db\07") - (data (i32.const 9602) "\ff?") - (data (i32.const 9657) "\f0") - (data (i32.const 9686) "\7f") - (data (i32.const 9700) "\f0\0f") - (data (i32.const 9755) "\f8") - (data (i32.const 9756) "\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 10300) "\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 10436) " \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 10544) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") - (data (i32.const 10576) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") - (data (i32.const 10604) "\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 10698) "\02\80\00\00\ff\1f") - (data (i32.const 10716) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") - (data (i32.const 10770) "\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 10852) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") - (data (i32.const 10880) "\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 10976) "\fe\ff\ff\07\fe\ff\ff\07") - (data (i32.const 11004) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11026) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") - (data (i32.const 11052) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") - (data (i32.const 11088) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11108) "\ff\ff\ff\ff\ff\ff\ff\ff") - (data (i32.const 11132) "\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 11298) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") - (data (i32.const 11324) ",\00\00\00\01\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 11372) ",\00\00\00\01\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 11420) ",\00\00\00\01\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 11468) ",\00\00\00\01\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 11516) "\\\00\00\00\01\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 11612) "\\\00\00\00\01\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 11708) "\\\00\00\00\01\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 11804) "<\00\00\00\01\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 11868) "<\00\00\00\01\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 11932) "<\00\00\00\01\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 11996) "\\\00\00\00\01\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 12092) "\\\00\00\00\01\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 12188) "\\\00\00\00\01\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 12284) "\\\00\00\00\01\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 12380) "\\\00\00\00\01\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 12476) "\\\00\00\00\01\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 12572) "L\00\00\00\01\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 12652) "L\00\00\00\01\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 12732) "L\00\00\00\01\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 12812) "L\00\00\00\01\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 12892) "<\00\00\00\01\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 12956) "<\00\00\00\01\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 13020) "L\00\00\00\01\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 13100) "L\00\00\00\01\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 13180) "L\00\00\00\01\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 13260) "L\00\00\00\01\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 13340) "<\00\00\00\01\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 13404) "<\00\00\00\01\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 13468) "L\00\00\00\01\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 13548) "L\00\00\00\01\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 13628) "L\00\00\00\01\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 13708) "L\00\00\00\01\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 13788) "\9c\00\00\00\01\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 13948) "\9c\00\00\00\01\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 14108) "\9c\00\00\00\01\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 14268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 14300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S") - (data (i32.const 14332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01") - (data (i32.const 14364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03") - (data (i32.const 14396) "\cc\00\00\00\01\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 14604) "\cc\00\00\00\01\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 14812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s") - (data (i32.const 14844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb") - (data (i32.const 14876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i") - (data (i32.const 14908) "\cc\00\00\00\01\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 15116) ",\00\00\00\01\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 15164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc") - (data (i32.const 15196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f") - (data (i32.const 15228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f") - (data (i32.const 15260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f") - (data (i32.const 15292) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f") - (data (i32.const 15324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f") - (data (i32.const 15356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f") - (data (i32.const 15388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\a3\03") - (data (i32.const 15420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03") - (data (i32.const 15452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03") - (data (i32.const 15484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03") - (data (i32.const 15516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 ") - (data (i32.const 15548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 ") - (data (i32.const 15580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 ") - (data (i32.const 15612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 ") - (data (i32.const 15644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 ") - (data (i32.const 15676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 ") - (data (i32.const 15708) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n") - (data (i32.const 15740) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n") - (data (i32.const 15772) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03") - (data (i32.const 15804) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03") - (data (i32.const 15836) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b") - (data (i32.const 15868) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b") - (data (i32.const 15900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 ") - (data (i32.const 15932) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 ") - (data (i32.const 15964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 ") - (data (i32.const 15996) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 ") - (data (i32.const 16028) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 ") - (data (i32.const 16060) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 ") - (data (i32.const 16092) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 ") - (data (i32.const 16124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 ") - (data (i32.const 16156) "\1c\00\00\00\01\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 16188) "\1c\00\00\00\01\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 16220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-") - (data (i32.const 16252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-") - (data (i32.const 16284) "\1c\00\00\00\01\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 16316) "\1c\00\00\00\01\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 16348) "\1c\00\00\00\01\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 16380) "\1c\00\00\00\01\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 16412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") - (data (i32.const 16444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") - (data (i32.const 16476) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03") - (data (i32.const 16508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03") - (data (i32.const 16540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") - (data (i32.const 16572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") - (data (i32.const 16604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") - (data (i32.const 16636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") - (data (i32.const 16668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03") - (data (i32.const 16700) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03") - (data (i32.const 16732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03") - (data (i32.const 16764) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") - (data (i32.const 16796) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B") - (data (i32.const 16828) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") - (data (i32.const 16860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") - (data (i32.const 16892) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b") - (data (i32.const 16924) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b") - (data (i32.const 16956) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") - (data (i32.const 16988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") - (data (i32.const 17020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") - (data (i32.const 17052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") - (data (i32.const 17084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03") - (data (i32.const 17116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03") - (data (i32.const 17148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") - (data (i32.const 17180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") - (data (i32.const 17212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") - (data (i32.const 17244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") - (data (i32.const 17276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") - (data (i32.const 17308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") - (data (i32.const 17340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") - (data (i32.const 17372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") - (data (i32.const 17404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") - (data (i32.const 17436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") - (data (i32.const 17468) "\1c\00\00\00\01\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 17500) "\1c\00\00\00\01\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 17532) "\1c\00\00\00\01\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 17564) "\1c\00\00\00\01\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 17596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb") - (data (i32.const 17628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F") - (data (i32.const 17660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I") - (data (i32.const 17692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb") - (data (i32.const 17724) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L") - (data (i32.const 17756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb") - (data (i32.const 17788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I") - (data (i32.const 17820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb") - (data (i32.const 17852) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L") - (data (i32.const 17884) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb") - (data (i32.const 17916) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T") - (data (i32.const 17948) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb") - (data (i32.const 17980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01") - (data (i32.const 18012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03") - (data (i32.const 18044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e") - (data (i32.const 18076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03") - (data (i32.const 18108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e") - (data (i32.const 18140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03") - (data (i32.const 18172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e") - (data (i32.const 18204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03") - (data (i32.const 18236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e") - (data (i32.const 18268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03") - (data (i32.const 18300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e") - (data (i32.const 18332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02") - (data (i32.const 18364) "\\\00\00\00\01\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 18460) "<\00\00\00\01\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 18524) "|\00\00\00\01\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 18652) "<\00\00\00\01\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 18716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 18748) "\\\00\00\00\01\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 18844) "\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 18876) "<\00\00\00\01\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 18940) "\\\00\00\00\01\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 19036) "<\00\00\00\01\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 19100) "<\00\00\00\01\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 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 2316) "\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 2939) "$++++++++\01\00TVVVVVVVV") + (data (i32.const 2978) "\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 3487) "TVVVVVVVVVVVV\0c\00\0c*+++++++++++++\07*\01") + (data (i32.const 3573) "*++++++++++++++++++++++++++VVl\81\15\00++++++++++++++++++++++++++++++++++++++++++\07l\03A++VVVVVVVVVVVVVV,V+++++++++++++++++++++\01") + (data (i32.const 3732) "\0cl\00\00\00\00\00\06") + (data (i32.const 3778) "\06%\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 4229) "N1P1P1P1P1P1P1P\0d\00\00\00\00\00$P1P1P1P1P") + (data (i32.const 4294) "+++++++++++y\\{\\{O{\\{\\{\\{\\{\\{\\{\\{\\{\\{\\-++y\14\\{\\-y*\\\'\\{\\{\\{\a4\00\n\b4\\{\\{O\03x8+++++++++++++O-++\01") + (data (i32.const 4407) "H") + (data (i32.const 4417) "*++++++++++++++++++++++++++") + (data (i32.const 4477) "++++++++\07\00HVVVVVVVV\02") + (data (i32.const 4552) "+++++++++++++UVVVVVVVVVVVV\0e") + (data (i32.const 4610) "$+++++++++++\07\00VVVVVVVVVVVV") + (data (i32.const 4680) "$++++++++++++++++\07\00\00\00\00VVVVVVVVVVVVVVVVV") + (data (i32.const 4777) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 4831) "*++++++++++VVVVVVVVVV\0e") + (data (i32.const 4896) "+++++++++++UVVVVVVVVVV\0e") + (data (i32.const 4985) "\08\00\00V\01\00\009") + (data (i32.const 5000) "\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 5957) "\06\'Qow") + (data (i32.const 5972) "|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa") + (data (i32.const 6000) "\b4\c4") + (data (i32.const 6122) "\c6\c9\00\00\00\db") + (data (i32.const 6211) "\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4") + (data (i32.const 6236) "\e7") + (data (i32.const 6322) "\ea") + (data (i32.const 6445) "\ed") + (data (i32.const 6468) "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 6876) "L") + (data (i32.const 6888) "\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 6956) "\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 7500) "\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 7586) "\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 7644) "\f8\03") + (data (i32.const 7671) "\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 7718) "\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07") + (data (i32.const 7744) "\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e") + (data (i32.const 7782) "\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 7954) "\f2\07\c0\7f") + (data (i32.const 7970) "\f2\1f@?") + (data (i32.const 7983) "\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@") + (data (i32.const 8017) "\e0\fdf\00\00\00\c3\01\00\1e\00d \00 ") + (data (i32.const 8043) "\10") + (data (i32.const 8055) "\e0") + (data (i32.const 8078) "\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 8144) "\87\01\04\0e") + (data (i32.const 8174) "\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 8262) "\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 8323) "\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 8379) "0") + (data (i32.const 8393) "\80\03") + (data (i32.const 8409) "\80\00\80") + (data (i32.const 8424) "\ff\ff\ff\ff\00\00\00\00\00\80") + (data (i32.const 8460) " \00\00\00\00<>\08") + (data (i32.const 8479) "~") + (data (i32.const 8491) "p\00\00 ") + (data (i32.const 8555) "?\00\10") + (data (i32.const 8569) "\80\f7\bf\00\00\00\f0") + (data (i32.const 8586) "\03\00\ff\ff\ff\ff\03") + (data (i32.const 8602) "\01\00\00\07") + (data (i32.const 8619) "\03D\08\00\00`\10") + (data (i32.const 8644) "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 8727) "\f8\00\0e") + (data (i32.const 8744) " !\00\00\00\00\00@") + (data (i32.const 8770) "\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$") + (data (i32.const 8811) "\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 8875) " ") + (data (i32.const 8904) "\01") + (data (i32.const 8922) "\c0\07") + (data (i32.const 8940) "n\f0\00\00\00\00\00\87") + (data (i32.const 8968) "`\00\00\00\00\00\00\00\f0") + (data (i32.const 9025) "\18") + (data (i32.const 9044) "\c0\ff\01") + (data (i32.const 9068) "\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 9137) "\80\d3@") + (data (i32.const 9159) "\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f") + (data (i32.const 9203) "\ff\\\00\00@") + (data (i32.const 9218) "\f8\85\0d") + (data (i32.const 9250) "<\b0\01\00\000") + (data (i32.const 9266) "\f8\a7\01") + (data (i32.const 9281) "(\bf") + (data (i32.const 9295) "\e0\bc\0f") + (data (i32.const 9329) "\80\ff\06") + (data (i32.const 9363) "X\08") + (data (i32.const 9382) "\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 9426) "\7f\bf") + (data (i32.const 9438) "\fc\ff\ff\fcm") + (data (i32.const 9458) "~\b4\bf") + (data (i32.const 9470) "\a3") + (data (i32.const 9514) "\18\00\00\00\00\00\00\00\ff\01") + (data (i32.const 9578) "\1f\00\00\00\00\00\00\00\7f\00\0f") + (data (i32.const 9621) "\80\00\00\00\00\00\00\00\80\ff\ff\00\00\00\00\00\00\00\00\1b") + (data (i32.const 9663) "`\0f") + (data (i32.const 9688) "\80\03\f8\ff\e7\0f\00\00\00<") + (data (i32.const 9716) "\1c") + (data (i32.const 9740) "\ff\ff\ff\ff\ff\ff\7f\f8\ff\ff\ff\ff\ff\1f \00\10\00\00\f8\fe\ff") + (data (i32.const 9772) "\7f\ff\ff\f9\db\07") + (data (i32.const 9810) "\ff?") + (data (i32.const 9865) "\f0") + (data (i32.const 9894) "\7f") + (data (i32.const 9908) "\f0\0f") + (data (i32.const 9963) "\f8") + (data (i32.const 9964) "\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 10508) "\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 10644) " \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 10752) "\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7") + (data (i32.const 10784) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??") + (data (i32.const 10812) "\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 10906) "\02\80\00\00\ff\1f") + (data (i32.const 10924) "\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18") + (data (i32.const 10978) "\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 11060) "\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?") + (data (i32.const 11088) "\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 11184) "\fe\ff\ff\07\fe\ff\ff\07") + (data (i32.const 11212) "\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11234) "\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f") + (data (i32.const 11260) "\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07") + (data (i32.const 11296) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11316) "\ff\ff\ff\ff\ff\ff\ff\ff") + (data (i32.const 11340) "\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 11506) "\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03") + (data (i32.const 11532) ",") + (data (i32.const 11544) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\n") + (data (i32.const 11580) ",") + (data (i32.const 11592) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00A\00Z\00.\00!\00\n") + (data (i32.const 11628) ",") + (data (i32.const 11640) "\01\00\00\00\16\00\00\000\009\00_\00A\00Z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11676) ",") + (data (i32.const 11688) "\01\00\00\00\16\00\00\000\009\00_\00a\00z\00 \00a\00z\00.\00!\00\t") + (data (i32.const 11724) "\\") + (data (i32.const 11736) "\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 11820) "\\") + (data (i32.const 11832) "\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 11916) "\\") + (data (i32.const 11928) "\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 12012) "<") + (data (i32.const 12024) "\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 12076) "<") + (data (i32.const 12088) "\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 12140) "<") + (data (i32.const 12152) "\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 12204) "\\") + (data (i32.const 12216) "\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 12300) "\\") + (data (i32.const 12312) "\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 12396) "\\") + (data (i32.const 12408) "\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 12492) "\\") + (data (i32.const 12504) "\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 12588) "\\") + (data (i32.const 12600) "\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 12684) "\\") + (data (i32.const 12696) "\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 12780) "L") + (data (i32.const 12792) "\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 12860) "L") + (data (i32.const 12872) "\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 12940) "L") + (data (i32.const 12952) "\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 13020) "L") + (data (i32.const 13032) "\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 13100) "<") + (data (i32.const 13112) "\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 13164) "<") + (data (i32.const 13176) "\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 13228) "L") + (data (i32.const 13240) "\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 13308) "L") + (data (i32.const 13320) "\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 13388) "L") + (data (i32.const 13400) "\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 13468) "L") + (data (i32.const 13480) "\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 13548) "<") + (data (i32.const 13560) "\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 13612) "<") + (data (i32.const 13624) "\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 13676) "L") + (data (i32.const 13688) "\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 13756) "L") + (data (i32.const 13768) "\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 13836) "L") + (data (i32.const 13848) "\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 13916) "L") + (data (i32.const 13928) "\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 13996) "\9c") + (data (i32.const 14008) "\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 14156) "\9c") + (data (i32.const 14168) "\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 14316) "\9c") + (data (i32.const 14328) "\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 14476) "\1c") + (data (i32.const 14488) "\01\00\00\00\02\00\00\00\df") + (data (i32.const 14508) "\1c") + (data (i32.const 14520) "\01\00\00\00\04\00\00\00S\00S") + (data (i32.const 14540) "\1c") + (data (i32.const 14552) "\01\00\00\00\02\00\00\000\01") + (data (i32.const 14572) "\1c") + (data (i32.const 14584) "\01\00\00\00\04\00\00\00i\00\07\03") + (data (i32.const 14604) "\cc") + (data (i32.const 14616) "\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 14812) "\cc") + (data (i32.const 14824) "\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 15020) "\1c") + (data (i32.const 15032) "\01\00\00\00\04\00\00\00s\00s") + (data (i32.const 15052) "\1c") + (data (i32.const 15064) "\01\00\00\00\02\00\00\00\01\fb") + (data (i32.const 15084) "\1c") + (data (i32.const 15096) "\01\00\00\00\04\00\00\00f\00i") + (data (i32.const 15116) "\cc") + (data (i32.const 15128) "\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 15324) ",") + (data (i32.const 15336) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 15372) "\1c") + (data (i32.const 15384) "\01\00\00\00\04\00\00\00\00\d8\00\dc") + (data (i32.const 15404) "\1c") + (data (i32.const 15416) "\01\00\00\00\02\00\00\00\88\1f") + (data (i32.const 15436) "\1c") + (data (i32.const 15448) "\01\00\00\00\02\00\00\00\80\1f") + (data (i32.const 15468) "\1c") + (data (i32.const 15480) "\01\00\00\00\02\00\00\00\8f\1f") + (data (i32.const 15500) "\1c") + (data (i32.const 15512) "\01\00\00\00\02\00\00\00\87\1f") + (data (i32.const 15532) "\1c") + (data (i32.const 15544) "\01\00\00\00\02\00\00\00\fc\1f") + (data (i32.const 15564) "\1c") + (data (i32.const 15576) "\01\00\00\00\02\00\00\00\f3\1f") + (data (i32.const 15596) "\1c") + (data (i32.const 15608) "\01\00\00\00\02\00\00\00\a3\03") + (data (i32.const 15628) "\1c") + (data (i32.const 15640) "\01\00\00\00\02\00\00\00\c3\03") + (data (i32.const 15660) "\1c") + (data (i32.const 15672) "\01\00\00\00\04\00\00\00 \00\a3\03") + (data (i32.const 15692) "\1c") + (data (i32.const 15704) "\01\00\00\00\04\00\00\00 \00\c3\03") + (data (i32.const 15724) "\1c") + (data (i32.const 15736) "\01\00\00\00\04\00\00\00\a3\03 ") + (data (i32.const 15756) "\1c") + (data (i32.const 15768) "\01\00\00\00\04\00\00\00\c3\03 ") + (data (i32.const 15788) "\1c") + (data (i32.const 15800) "\01\00\00\00\06\00\00\00 \00\a3\03 ") + (data (i32.const 15820) "\1c") + (data (i32.const 15832) "\01\00\00\00\06\00\00\00 \00\c3\03 ") + (data (i32.const 15852) "\1c") + (data (i32.const 15864) "\01\00\00\00\06\00\00\00a\00\a3\03 ") + (data (i32.const 15884) "\1c") + (data (i32.const 15896) "\01\00\00\00\06\00\00\00a\00\c2\03 ") + (data (i32.const 15916) "\1c") + (data (i32.const 15928) "\01\00\00\00\06\00\00\00a\00\a3\03\n") + (data (i32.const 15948) "\1c") + (data (i32.const 15960) "\01\00\00\00\06\00\00\00a\00\c2\03\n") + (data (i32.const 15980) "\1c") + (data (i32.const 15992) "\01\00\00\00\04\00\00\00a\00\a3\03") + (data (i32.const 16012) "\1c") + (data (i32.const 16024) "\01\00\00\00\04\00\00\00a\00\c2\03") + (data (i32.const 16044) "\1c") + (data (i32.const 16056) "\01\00\00\00\06\00\00\00a\00\a3\03b") + (data (i32.const 16076) "\1c") + (data (i32.const 16088) "\01\00\00\00\06\00\00\00a\00\c3\03b") + (data (i32.const 16108) "\1c") + (data (i32.const 16120) "\01\00\00\00\06\00\00\00\a3\03\a3\03 ") + (data (i32.const 16140) "\1c") + (data (i32.const 16152) "\01\00\00\00\06\00\00\00\c3\03\c2\03 ") + (data (i32.const 16172) "\1c") + (data (i32.const 16184) "\01\00\00\00\06\00\00\001\00\a3\03 ") + (data (i32.const 16204) "\1c") + (data (i32.const 16216) "\01\00\00\00\06\00\00\001\00\c3\03 ") + (data (i32.const 16236) "\1c") + (data (i32.const 16248) "\01\00\00\00\06\00\00\00;\00\a3\03 ") + (data (i32.const 16268) "\1c") + (data (i32.const 16280) "\01\00\00\00\06\00\00\00;\00\c3\03 ") + (data (i32.const 16300) "\1c") + (data (i32.const 16312) "\01\00\00\00\06\00\00\00\01\03\a3\03 ") + (data (i32.const 16332) "\1c") + (data (i32.const 16344) "\01\00\00\00\06\00\00\00\01\03\c3\03 ") + (data (i32.const 16364) "\1c") + (data (i32.const 16376) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 ") + (data (i32.const 16396) "\1c") + (data (i32.const 16408) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 ") + (data (i32.const 16428) "\1c") + (data (i32.const 16440) "\01\00\00\00\06\00\00\00\a3\03\a3\03-") + (data (i32.const 16460) "\1c") + (data (i32.const 16472) "\01\00\00\00\06\00\00\00\c3\03\c2\03-") + (data (i32.const 16492) "\1c") + (data (i32.const 16504) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-") + (data (i32.const 16524) "\1c") + (data (i32.const 16536) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-") + (data (i32.const 16556) "\1c") + (data (i32.const 16568) "\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s") + (data (i32.const 16588) "\1c") + (data (i32.const 16600) "\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s") + (data (i32.const 16620) "\1c") + (data (i32.const 16632) "\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03") + (data (i32.const 16652) "\1c") + (data (i32.const 16664) "\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03") + (data (i32.const 16684) "\1c") + (data (i32.const 16696) "\01\00\00\00\06\00\00\00A\00.\00\a3\03") + (data (i32.const 16716) "\1c") + (data (i32.const 16728) "\01\00\00\00\06\00\00\00a\00.\00\c2\03") + (data (i32.const 16748) "\1c") + (data (i32.const 16760) "\01\00\00\00\06\00\00\00A\00\ad\00\a3\03") + (data (i32.const 16780) "\1c") + (data (i32.const 16792) "\01\00\00\00\06\00\00\00a\00\ad\00\c2\03") + (data (i32.const 16812) "\1c") + (data (i32.const 16824) "\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03") + (data (i32.const 16844) "\1c") + (data (i32.const 16856) "\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03") + (data (i32.const 16876) "\1c") + (data (i32.const 16888) "\01\00\00\00\04\00\00\00E\03\a3\03") + (data (i32.const 16908) "\1c") + (data (i32.const 16920) "\01\00\00\00\04\00\00\00E\03\c3\03") + (data (i32.const 16940) "\1c") + (data (i32.const 16952) "\01\00\00\00\06\00\00\00\91\03E\03\a3\03") + (data (i32.const 16972) "\1c") + (data (i32.const 16984) "\01\00\00\00\06\00\00\00\b1\03E\03\c2\03") + (data (i32.const 17004) "\1c") + (data (i32.const 17016) "\01\00\00\00\06\00\00\00A\00\a3\03B") + (data (i32.const 17036) "\1c") + (data (i32.const 17048) "\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc") + (data (i32.const 17068) "\1c") + (data (i32.const 17080) "\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc") + (data (i32.const 17100) "\1c") + (data (i32.const 17112) "\01\00\00\00\08\00\00\00A\00\a3\03.\00b") + (data (i32.const 17132) "\1c") + (data (i32.const 17144) "\01\00\00\00\08\00\00\00a\00\c3\03.\00b") + (data (i32.const 17164) "\1c") + (data (i32.const 17176) "\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B") + (data (i32.const 17196) "\1c") + (data (i32.const 17208) "\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b") + (data (i32.const 17228) "\1c") + (data (i32.const 17240) "\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB") + (data (i32.const 17260) "\1c") + (data (i32.const 17272) "\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb") + (data (i32.const 17292) "\1c") + (data (i32.const 17304) "\01\00\00\00\06\00\00\00A\00\a3\03E\03") + (data (i32.const 17324) "\1c") + (data (i32.const 17336) "\01\00\00\00\06\00\00\00a\00\c2\03E\03") + (data (i32.const 17356) "\1c") + (data (i32.const 17368) "\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03") + (data (i32.const 17388) "\1c") + (data (i32.const 17400) "\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03") + (data (i32.const 17420) "\1c") + (data (i32.const 17432) "\01\00\00\00\06\00\00\00A\00\0e\18\a3\03") + (data (i32.const 17452) "\1c") + (data (i32.const 17464) "\01\00\00\00\06\00\00\00a\00\0e\18\c2\03") + (data (i32.const 17484) "\1c") + (data (i32.const 17496) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B") + (data (i32.const 17516) "\1c") + (data (i32.const 17528) "\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b") + (data (i32.const 17548) "\1c") + (data (i32.const 17560) "\01\00\00\00\06\00\00\00A\00\a3\03\0e\18") + (data (i32.const 17580) "\1c") + (data (i32.const 17592) "\01\00\00\00\06\00\00\00a\00\c2\03\0e\18") + (data (i32.const 17612) "\1c") + (data (i32.const 17624) "\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B") + (data (i32.const 17644) "\1c") + (data (i32.const 17656) "\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b") + (data (i32.const 17676) "\1c") + (data (i32.const 17688) "\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18") + (data (i32.const 17708) "\1c") + (data (i32.const 17720) "\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18") + (data (i32.const 17740) "\1c") + (data (i32.const 17752) "\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B") + (data (i32.const 17772) "\1c") + (data (i32.const 17784) "\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b") + (data (i32.const 17804) "\1c") + (data (i32.const 17816) "\01\00\00\00\02\00\00\00\00\fb") + (data (i32.const 17836) "\1c") + (data (i32.const 17848) "\01\00\00\00\04\00\00\00F\00F") + (data (i32.const 17868) "\1c") + (data (i32.const 17880) "\01\00\00\00\04\00\00\00F\00I") + (data (i32.const 17900) "\1c") + (data (i32.const 17912) "\01\00\00\00\02\00\00\00\02\fb") + (data (i32.const 17932) "\1c") + (data (i32.const 17944) "\01\00\00\00\04\00\00\00F\00L") + (data (i32.const 17964) "\1c") + (data (i32.const 17976) "\01\00\00\00\02\00\00\00\03\fb") + (data (i32.const 17996) "\1c") + (data (i32.const 18008) "\01\00\00\00\06\00\00\00F\00F\00I") + (data (i32.const 18028) "\1c") + (data (i32.const 18040) "\01\00\00\00\02\00\00\00\04\fb") + (data (i32.const 18060) "\1c") + (data (i32.const 18072) "\01\00\00\00\06\00\00\00F\00F\00L") + (data (i32.const 18092) "\1c") + (data (i32.const 18104) "\01\00\00\00\02\00\00\00\05\fb") + (data (i32.const 18124) "\1c") + (data (i32.const 18136) "\01\00\00\00\04\00\00\00S\00T") + (data (i32.const 18156) "\1c") + (data (i32.const 18168) "\01\00\00\00\02\00\00\00\06\fb") + (data (i32.const 18188) "\1c") + (data (i32.const 18200) "\01\00\00\00\02\00\00\00\f0\01") + (data (i32.const 18220) "\1c") + (data (i32.const 18232) "\01\00\00\00\04\00\00\00J\00\0c\03") + (data (i32.const 18252) "\1c") + (data (i32.const 18264) "\01\00\00\00\02\00\00\00\96\1e") + (data (i32.const 18284) "\1c") + (data (i32.const 18296) "\01\00\00\00\04\00\00\00H\001\03") + (data (i32.const 18316) "\1c") + (data (i32.const 18328) "\01\00\00\00\02\00\00\00\97\1e") + (data (i32.const 18348) "\1c") + (data (i32.const 18360) "\01\00\00\00\04\00\00\00T\00\08\03") + (data (i32.const 18380) "\1c") + (data (i32.const 18392) "\01\00\00\00\02\00\00\00\98\1e") + (data (i32.const 18412) "\1c") + (data (i32.const 18424) "\01\00\00\00\04\00\00\00W\00\n\03") + (data (i32.const 18444) "\1c") + (data (i32.const 18456) "\01\00\00\00\02\00\00\00\99\1e") + (data (i32.const 18476) "\1c") + (data (i32.const 18488) "\01\00\00\00\04\00\00\00Y\00\n\03") + (data (i32.const 18508) "\1c") + (data (i32.const 18520) "\01\00\00\00\02\00\00\00\9a\1e") + (data (i32.const 18540) "\1c") + (data (i32.const 18552) "\01\00\00\00\04\00\00\00A\00\be\02") + (data (i32.const 18572) "\\") + (data (i32.const 18584) "\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 18668) "<") + (data (i32.const 18680) "\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 18732) "|") + (data (i32.const 18744) "\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 18860) "<") + (data (i32.const 18872) "\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 18924) "\1c") + (data (i32.const 18936) "\01\00\00\00\02\00\00\000") + (data (i32.const 18956) "\\") + (data (i32.const 18968) "\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 19052) "\1c") + (data (i32.const 19064) "\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 19084) "<") + (data (i32.const 19096) "\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 19148) "\\") + (data (i32.const 19160) "\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 19244) "<") + (data (i32.const 19256) "\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 19308) "<") + (data (i32.const 19320) "\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 19376) "\04\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 19404) "\a4") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 35796)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + i32.const 18976 + call $~lib/rt/itcms/__visit + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 19164 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub + i32.load offset=8 local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 i32.load offset=4 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 + i32.const -4 i32.and - i32.ne + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1088 - i32.const 109 - i32.const 3 + local.get $0 + i32.const 35796 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end local.get $1 local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - i32.add - i32.store offset=4 + else local.get $1 + i32.const 19376 i32.load - i32.const 1 - i32.and + i32.gt_u if - i32.const 0 - i32.const 1088 - i32.const 112 - i32.const 14 + i32.const 1280 + i32.const 1344 + i32.const 22 + i32.const 28 call $~lib/builtins/abort unreachable end + local.get $1 + i32.const 3 + i32.shl + i32.const 19380 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -362,8 +704,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 272 + i32.const 1424 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -382,8 +724,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 274 + i32.const 1424 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -425,8 +767,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 287 + i32.const 1424 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -517,8 +859,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 200 + i32.const 1424 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -531,8 +873,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 202 + i32.const 1424 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -604,8 +946,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 223 + i32.const 1424 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -659,23 +1001,23 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 238 + i32.const 1424 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1216 - i32.const 239 + i32.const 1424 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -722,8 +1064,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 255 + i32.const 1424 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -792,8 +1134,8 @@ i32.gt_u if i32.const 0 - i32.const 1216 - i32.const 380 + i32.const 1424 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -820,8 +1162,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 387 + i32.const 1424 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -848,8 +1190,8 @@ i32.lt_u if i32.const 0 - i32.const 1216 - i32.const 400 + i32.const 1424 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -916,10 +1258,10 @@ if unreachable end - i32.const 19168 + i32.const 35808 i32.const 0 i32.store - i32.const 20736 + i32.const 37376 i32.const 0 i32.store loop $for-loop|0 @@ -930,7 +1272,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 19168 + i32.const 35808 i32.add i32.const 0 i32.store offset=4 @@ -948,7 +1290,7 @@ i32.add i32.const 2 i32.shl - i32.const 19168 + i32.const 35808 i32.add i32.const 0 i32.store offset=96 @@ -966,117 +1308,338 @@ br $for-loop|0 end end - i32.const 19168 - i32.const 20740 + i32.const 35808 + i32.const 37380 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 19168 + i32.const 35808 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 1216 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 1216 - 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 35796 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 35796 + 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 $1 + i32.const 35796 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 i32.const 4 i32.shl i32.add @@ -1107,8 +1670,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 346 + i32.const 1424 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1129,99 +1692,44 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1216 - i32.const 360 - i32.const 14 + i32.const 1088 + i32.const 1424 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz 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 + memory.size 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 16 + i32.shl i32.const 4 i32.sub local.get $0 @@ -1284,8 +1792,8 @@ i32.eqz if i32.const 0 - i32.const 1216 - i32.const 498 + i32.const 1424 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1299,8 +1807,8 @@ i32.gt_u if i32.const 0 - i32.const 1216 - i32.const 500 + i32.const 1424 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1308,143 +1816,419 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (func $~lib/rt/pure/__new (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741804 - i32.gt_u + i32.const 4 + i32.add + i32.const 15 + i32.and if - i32.const 1152 - i32.const 1088 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.add - local.set $1 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - local.get $1 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $2 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 - local.get $1 - i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 1 - i32.store offset=12 - local.get $1 - local.get $0 - i32.store offset=16 + local.get $3 + i32.const -4 + i32.and local.get $2 + i32.sub + local.tee $4 i32.const 16 - i32.add - ) - (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $folding-inner0 - local.get $0 - i32.const 8 - i32.shr_u - local.tee $2 - i32.const 5748 - i32.add - i32.load8_u + 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 - i32.const 2108 + local.get $1 + i32.const 4 i32.add - i32.load8_u - i32.const 86 - i32.mul - i32.const 2108 i32.add + local.tee $2 + local.get $4 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store local.get $0 - i32.const 255 + local.get $2 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 i32.and - local.tee $5 - i32.const 3 - i32.div_u - i32.add - i32.load8_u - local.get $5 - i32.const 3 - i32.rem_u - i32.const 2 - i32.shl - i32.const 4776 + i32.store + local.get $1 + i32.const 4 i32.add + local.tee $0 + local.get $1 i32.load - i32.mul - i32.const 11 - i32.shr_u - i32.const 6 - i32.rem_u + i32.const -4 + i32.and i32.add - i32.const 2 - i32.shl - i32.const 4788 + 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/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 8 - i32.shr_s - local.set $3 + 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 255 + 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.const 2 - i32.lt_u - br_if $folding-inner0 - local.get $3 - i32.const 255 + 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.set $2 - local.get $3 + 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.shr_u - local.set $4 - loop $while-continue|0 - local.get $2 - if - local.get $5 - local.get $2 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.const 6260 - i32.add - i32.load8_u - local.tee $6 + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/util/casemap/casemap (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + block $folding-inner0 + local.get $0 + i32.const 8 + i32.shr_u + local.tee $2 + i32.const 5956 + i32.add + i32.load8_u + local.get $2 + i32.const 2316 + i32.add + i32.load8_u + i32.const 86 + i32.mul + i32.const 2316 + i32.add + local.get $0 + i32.const 255 + i32.and + local.tee $5 + i32.const 3 + i32.div_u + i32.add + i32.load8_u + local.get $5 + i32.const 3 + i32.rem_u + i32.const 2 + i32.shl + i32.const 4984 + i32.add + i32.load + i32.mul + i32.const 11 + i32.shr_u + i32.const 6 + i32.rem_u + i32.add + i32.const 2 + i32.shl + i32.const 4996 + i32.add + i32.load + local.tee $2 + i32.const 8 + i32.shr_s + local.set $3 + local.get $2 + i32.const 255 + i32.and + local.tee $2 + i32.const 2 + i32.lt_u + br_if $folding-inner0 + local.get $3 + i32.const 255 + i32.and + local.set $2 + local.get $3 + i32.const 8 + i32.shr_u + local.set $4 + loop $while-continue|0 + local.get $2 + if + local.get $5 + local.get $2 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $4 + i32.add + i32.const 1 + i32.shl + i32.const 6468 + i32.add + i32.load8_u + local.tee $6 i32.eq if (result i32) local.get $3 @@ -1452,12 +2236,12 @@ i32.add i32.const 1 i32.shl - i32.const 6260 + i32.const 6468 i32.add i32.load8_u offset=1 i32.const 2 i32.shl - i32.const 4788 + i32.const 4996 i32.add i32.load local.tee $2 @@ -1512,39 +2296,6 @@ i32.and 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.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 1216 - 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) @@ -1718,165 +2469,113 @@ 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 + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 20 + i32.sub 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 19164 - i32.ge_u + i32.const 16 + i32.sub + i32.le_u if - local.get $0 + local.get $2 local.get $1 - call $~lib/rt/tlsf/freeBlock + i32.store offset=16 + local.get $0 + return end + local.get $1 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) + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 + local.get $0 + local.get $1 + local.get $2 + i32.load offset=16 + local.tee $0 + local.get $0 local.get $1 - i32.const 1073741804 i32.gt_u - if - i32.const 1152 - i32.const 1088 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + select + call $~lib/memory/memory.copy + local.get $3 + ) + (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) + local.get $0 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.const 8 + i32.shr_u i32.add - local.set $2 - local.get $0 - i32.const 19164 - 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 + i32.load8_u + i32.const 5 + i32.shl + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer local.get $0 - local.get $4 - local.get $6 - i32.const 3 - i32.and - i32.or - i32.store - br $folding-inner0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $invalid end + return 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 + return end - local.get $3 local.get $0 - local.get $5 - call $~lib/rt/tlsf/prepareBlock + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return end + return + end + unreachable + ) + (func $~start + call $start:std/string-casemapping + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 19412 + i32.lt_s + if + i32.const 35824 + i32.const 35872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable 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/string/String#toUpperCase (param $0 i32) (result i32) (local $1 i32) @@ -1889,6 +2588,18 @@ (local $8 i32) (local $9 i32) (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store local.get $0 i32.const 20 i32.sub @@ -1898,16 +2609,25 @@ local.tee $8 i32.eqz if - local.get $0 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 return end + global.get $~lib/memory/__stack_pointer local.get $8 i32.const 6 i32.mul - call $~lib/rt/pure/__new - local.set $6 - i32.const 1276 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1488 + i32.store + i32.const 1484 i32.load i32.const 1 i32.shr_u @@ -1917,13 +2637,13 @@ local.get $8 i32.lt_u if - local.get $0 + local.get $2 local.get $7 i32.const 1 i32.shl i32.add i32.load16_u - local.tee $2 + local.tee $1 i32.const 7 i32.shr_u if @@ -1934,14 +2654,14 @@ i32.sub i32.lt_u i32.const 0 - local.get $2 + local.get $1 i32.const 55295 i32.sub i32.const 1025 i32.lt_u select if - local.get $0 + local.get $2 local.get $7 i32.const 1 i32.shl @@ -1960,8 +2680,8 @@ local.get $4 i32.const 1023 i32.and - local.get $2 - local.tee $1 + local.get $1 + local.tee $0 i32.const 1023 i32.and i32.const 10 @@ -1969,7 +2689,7 @@ i32.or i32.const 65536 i32.add - local.tee $2 + local.tee $1 i32.const 131072 i32.ge_u if @@ -1978,7 +2698,7 @@ i32.const 1 i32.shl i32.add - local.get $1 + local.get $0 local.get $4 i32.const 16 i32.shl @@ -1992,7 +2712,7 @@ end end end - local.get $2 + local.get $1 i32.const 9424 i32.sub i32.const 25 @@ -2003,28 +2723,28 @@ i32.const 1 i32.shl i32.add - local.get $2 + local.get $1 i32.const 26 i32.sub i32.store16 else - local.get $2 + local.get $1 i32.const 223 i32.sub i32.const 64056 i32.le_u if (result i32) local.get $3 - local.set $1 + local.set $0 i32.const 0 local.set $9 block $~lib/util/casemap/bsearch|inlined.0 loop $while-continue|1 - local.get $1 + local.get $0 local.get $9 i32.ge_s if - local.get $1 + local.get $0 local.get $9 i32.add i32.const 3 @@ -2034,10 +2754,10 @@ local.tee $4 i32.const 1 i32.shl - i32.const 1280 + i32.const 1488 i32.add i32.load16_u - local.get $2 + local.get $1 i32.sub local.tee $10 i32.eqz @@ -2054,7 +2774,7 @@ local.get $4 i32.const 4 i32.sub - local.set $1 + local.set $0 end br $while-continue|1 end @@ -2066,32 +2786,32 @@ else i32.const -1 end - local.tee $1 + local.tee $0 i32.const -1 i32.xor if - local.get $1 + local.get $0 i32.const 1 i32.shl - i32.const 1280 + i32.const 1488 i32.add - local.tee $2 + local.tee $1 i32.load16_u offset=6 - local.set $1 + local.set $0 local.get $6 local.get $5 i32.const 1 i32.shl i32.add local.tee $4 - local.get $2 + local.get $1 i32.load offset=2 i32.store local.get $4 - local.get $1 + local.get $0 i32.store16 offset=4 local.get $5 - local.get $1 + local.get $0 i32.const 0 i32.ne i32.const 1 @@ -2099,12 +2819,12 @@ i32.add local.set $5 else - local.get $2 + local.get $1 i32.const 1 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.tee $1 + local.tee $0 i32.const 65536 i32.lt_u if @@ -2113,7 +2833,7 @@ i32.const 1 i32.shl i32.add - local.get $1 + local.get $0 i32.store16 else local.get $6 @@ -2121,17 +2841,17 @@ i32.const 1 i32.shl i32.add - local.get $1 + local.get $0 i32.const 65536 i32.sub - local.tee $1 + local.tee $0 i32.const 1023 i32.and i32.const 56320 i32.or i32.const 16 i32.shl - local.get $1 + local.get $0 i32.const 10 i32.shr_u i32.const 55296 @@ -2152,8 +2872,8 @@ i32.const 1 i32.shl i32.add - local.get $2 - local.get $2 + local.get $1 + local.get $1 i32.const 97 i32.sub i32.const 26 @@ -2180,126 +2900,32 @@ local.get $5 i32.const 1 i32.shl - call $~lib/rt/pure/__renew - call $~lib/rt/pure/__retain - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 19164 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end + call $~lib/rt/itcms/__renew + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $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 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select + i32.eq if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -2310,13 +2936,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -2325,47 +2958,99 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - call $~lib/util/string/compareImpl + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and + global.set $~lib/memory/__stack_pointer + i32.const 0 ) (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) (local $1 i32) @@ -2378,6 +3063,17 @@ (local $8 i32) (local $9 i32) (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub @@ -2387,15 +3083,21 @@ local.tee $8 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain return end + global.get $~lib/memory/__stack_pointer local.get $8 i32.const 2 i32.shl - call $~lib/rt/pure/__new - local.set $6 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 loop $for-loop|0 local.get $4 local.get $8 @@ -2548,6 +3250,8 @@ i32.eq local.get $3 i32.const 2 + i32.sub + i32.const 0 i32.ge_s i32.and if @@ -2592,7 +3296,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6748 + i32.const 6956 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2605,7 +3309,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9756 + i32.const 9964 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2686,8 +3390,8 @@ i32.const 10 i32.shl i32.add - i32.const -56613888 - i32.add + i32.const 56613888 + i32.sub local.set $1 end end @@ -2695,7 +3399,7 @@ i32.const 918000 i32.lt_u if (result i32) - i32.const 6748 + i32.const 6956 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2707,7 +3411,7 @@ i32.const 127370 i32.lt_u if (result i32) - i32.const 9756 + i32.const 9964 local.get $1 call $~lib/util/string/stagedBinaryLookup else @@ -2831,62 +3535,26 @@ local.get $5 i32.const 1 i32.shl - call $~lib/rt/pure/__renew - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1114111 - i32.gt_u - if - i32.const 0 - i32.const 15136 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - local.get $0 - i32.const 65535 - i32.gt_s - local.tee $2 - i32.shl - call $~lib/rt/pure/__new - local.set $1 - local.get $2 - if - local.get $1 - local.get $0 - i32.const 65536 - i32.sub - local.tee $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - else - local.get $1 - local.get $0 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__renew + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (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 + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub @@ -2899,279 +3567,125 @@ local.get $2 i32.ge_u if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const -1 return end - i32.const 1 - local.get $3 - local.get $1 - i32.const 1 - i32.add - i32.eq - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.tee $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - select - if - local.get $2 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.tee $0 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if + block $folding-inner0 + i32.const 1 + local.get $3 + local.get $1 + i32.const 1 + i32.add + i32.eq + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.tee $2 + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + select + br_if $folding-inner0 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.tee $0 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 local.get $2 + i32.const 10 + i32.shl + i32.add + i32.const 56613888 + i32.sub return end - local.get $0 - local.get $2 - i32.const 10 - i32.shl - i32.add - i32.const -56613888 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/number/itoa64 (param $0 i64) (result i32) - (local $1 i32) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - local.get $0 - i64.eqz - if - i32.const 18736 - return - end + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - i64.sub - local.get $0 + i32.const 19072 local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $3 select local.tee $0 - i64.const 4294967295 - i64.le_u - if - local.get $3 - local.get $0 - i32.wrap_i64 - local.tee $1 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - 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 - local.get $1 - i32.const 100 - i32.lt_u - select - local.get $1 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add - local.get $1 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add - local.get $1 - i32.const 100000000 - i32.ge_u - i32.add - local.get $1 - i32.const 10000000 - i32.lt_u - select - local.get $1 - i32.const 100000 - i32.lt_u - select - i32.add - local.tee $2 - i32.const 1 - i32.shl - call $~lib/rt/pure/__new - local.tee $4 - local.set $5 - loop $do-continue|0 - local.get $5 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end - else - local.get $3 - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - i32.add - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/pure/__new - local.tee $4 - local.set $2 - loop $do-continue|00 - local.get $2 - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $0 - i64.const 10 - i64.div_u - local.tee $0 - i64.const 0 - i64.ne - br_if $do-continue|00 - end - end - local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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.eqz if - local.get $4 - i32.const 45 - i32.store16 + global.get $~lib/memory/__stack_pointer + i32.const 19072 + i32.store + i32.const 19072 + local.set $1 end - local.get $4 - call $~lib/rt/pure/__retain - ) - (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 local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 18864 - local.get $2 - select - local.set $3 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 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 18864 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 18864 - local.set $1 - end - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + local.get $2 i32.const 1 i32.shl - local.tee $6 - local.get $3 + local.tee $3 + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -3181,528 +3695,764 @@ i32.shl local.tee $4 i32.add - local.tee $0 + local.tee $2 i32.eqz if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1056 - local.set $0 + 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 offset=8 + local.get $2 local.get $0 - 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 + local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 i32.add local.get $1 - local.get $6 + local.get $4 call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 ) (func $start:std/string-casemapping (local $0 i64) (local $1 i64) (local $2 i64) (local $3 i64) - (local $4 i32) + (local $4 i64) (local $5 i32) (local $6 i32) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i32) - (local $92 i32) - (local $93 i32) - (local $94 i32) - (local $95 i32) - (local $96 i32) - (local $97 i32) - (local $98 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1232 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 i32.const 1056 call $~lib/string/String#toUpperCase - local.tee $13 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $7 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 i32.const 1056 call $~lib/string/String#toLowerCase - local.tee $14 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $7 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11344 + global.get $~lib/memory/__stack_pointer + i32.const 11552 + i32.store offset=8 + i32.const 11552 call $~lib/string/String#toUpperCase - local.tee $15 - i32.const 11392 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11600 + i32.store offset=4 + local.get $7 + i32.const 11600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11440 + global.get $~lib/memory/__stack_pointer + i32.const 11648 + i32.store offset=8 + i32.const 11648 call $~lib/string/String#toLowerCase - local.tee $16 - i32.const 11488 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=4 + local.get $7 + i32.const 11696 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11536 + global.get $~lib/memory/__stack_pointer + i32.const 11744 + i32.store offset=8 + i32.const 11744 call $~lib/string/String#toUpperCase - local.tee $17 - i32.const 11632 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11840 + i32.store offset=4 + local.get $7 + i32.const 11840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11632 + global.get $~lib/memory/__stack_pointer + i32.const 11840 + i32.store offset=8 + i32.const 11840 call $~lib/string/String#toLowerCase - local.tee $18 - i32.const 11728 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 11936 + i32.store offset=4 + local.get $7 + i32.const 11936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11824 + global.get $~lib/memory/__stack_pointer + i32.const 12032 + i32.store offset=8 + i32.const 12032 call $~lib/string/String#toUpperCase - local.tee $19 - i32.const 11888 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12096 + i32.store offset=4 + local.get $7 + i32.const 12096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 + global.get $~lib/memory/__stack_pointer + i32.const 12096 + i32.store offset=8 + i32.const 12096 call $~lib/string/String#toLowerCase - local.tee $20 - i32.const 11952 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12160 + i32.store offset=4 + local.get $7 + i32.const 12160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12016 + global.get $~lib/memory/__stack_pointer + i32.const 12224 + i32.store offset=8 + i32.const 12224 call $~lib/string/String#toUpperCase - local.tee $21 - i32.const 12112 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12320 + i32.store offset=4 + local.get $7 + i32.const 12320 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12112 + global.get $~lib/memory/__stack_pointer + i32.const 12320 + i32.store offset=8 + i32.const 12320 call $~lib/string/String#toLowerCase - local.tee $22 - i32.const 12208 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12416 + i32.store offset=4 + local.get $7 + i32.const 12416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12304 + global.get $~lib/memory/__stack_pointer + i32.const 12512 + i32.store offset=8 + i32.const 12512 call $~lib/string/String#toUpperCase - local.tee $23 - i32.const 12400 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12608 + i32.store offset=4 + local.get $7 + i32.const 12608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12400 + global.get $~lib/memory/__stack_pointer + i32.const 12608 + i32.store offset=8 + i32.const 12608 call $~lib/string/String#toLowerCase - local.tee $24 - i32.const 12496 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=4 + local.get $7 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12592 + global.get $~lib/memory/__stack_pointer + i32.const 12800 + i32.store offset=8 + i32.const 12800 call $~lib/string/String#toUpperCase - local.tee $25 - i32.const 12672 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12880 + i32.store offset=4 + local.get $7 + i32.const 12880 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12752 + global.get $~lib/memory/__stack_pointer + i32.const 12960 + i32.store offset=8 + i32.const 12960 call $~lib/string/String#toUpperCase - local.tee $26 - i32.const 12832 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13040 + i32.store offset=4 + local.get $7 + i32.const 13040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12912 + global.get $~lib/memory/__stack_pointer + i32.const 13120 + i32.store offset=8 + i32.const 13120 call $~lib/string/String#toUpperCase - local.tee $27 - i32.const 12976 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store offset=4 + local.get $7 + i32.const 13184 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13040 + global.get $~lib/memory/__stack_pointer + i32.const 13248 + i32.store offset=8 + i32.const 13248 call $~lib/string/String#toUpperCase - local.tee $28 - i32.const 13120 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13328 + i32.store offset=4 + local.get $7 + i32.const 13328 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13200 + global.get $~lib/memory/__stack_pointer + i32.const 13408 + i32.store offset=8 + i32.const 13408 call $~lib/string/String#toUpperCase - local.tee $29 - i32.const 13280 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13488 + i32.store offset=4 + local.get $7 + i32.const 13488 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13360 + global.get $~lib/memory/__stack_pointer + i32.const 13568 + i32.store offset=8 + i32.const 13568 call $~lib/string/String#toUpperCase - local.tee $30 - i32.const 13424 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13632 + i32.store offset=4 + local.get $7 + i32.const 13632 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13488 + global.get $~lib/memory/__stack_pointer + i32.const 13696 + i32.store offset=8 + i32.const 13696 call $~lib/string/String#toUpperCase - local.tee $31 - i32.const 13568 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $7 + i32.const 13776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13648 + global.get $~lib/memory/__stack_pointer + i32.const 13856 + i32.store offset=8 + i32.const 13856 call $~lib/string/String#toUpperCase - local.tee $32 - i32.const 13728 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13936 + i32.store offset=4 + local.get $7 + i32.const 13936 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 + global.get $~lib/memory/__stack_pointer + i32.const 14016 + i32.store offset=8 + i32.const 14016 call $~lib/string/String#toUpperCase - local.tee $33 - i32.const 13968 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14176 + i32.store offset=4 + local.get $7 + i32.const 14176 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13808 + global.get $~lib/memory/__stack_pointer + i32.const 14016 + i32.store offset=8 + i32.const 14016 call $~lib/string/String#toLowerCase - local.tee $34 - i32.const 14128 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14336 + i32.store offset=4 + local.get $7 + i32.const 14336 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14288 + global.get $~lib/memory/__stack_pointer + i32.const 14496 + i32.store offset=8 + i32.const 14496 call $~lib/string/String#toUpperCase - local.tee $35 - i32.const 14320 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14528 + i32.store offset=4 + local.get $7 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14352 + global.get $~lib/memory/__stack_pointer + i32.const 14560 + i32.store offset=8 + i32.const 14560 call $~lib/string/String#toLowerCase - local.tee $36 - i32.const 14384 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14592 + i32.store offset=4 + local.get $7 + i32.const 14592 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14416 - call $~lib/string/String#toUpperCase - local.tee $37 + global.get $~lib/memory/__stack_pointer + i32.const 14624 + i32.store offset=8 i32.const 14624 + call $~lib/string/String#toUpperCase + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14832 + i32.store offset=4 + local.get $7 + i32.const 14832 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14288 + global.get $~lib/memory/__stack_pointer + i32.const 14496 + i32.store offset=12 + i32.const 14496 call $~lib/string/String#toUpperCase - local.tee $38 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/string/String#toLowerCase - local.tee $39 - i32.const 14832 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15040 + i32.store offset=4 + local.get $7 + i32.const 15040 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14864 + global.get $~lib/memory/__stack_pointer + i32.const 15072 + i32.store offset=12 + i32.const 15072 call $~lib/string/String#toUpperCase - local.tee $40 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/string/String#toLowerCase - local.tee $41 - i32.const 14896 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15104 + i32.store offset=4 + local.get $7 + i32.const 15104 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14928 + global.get $~lib/memory/__stack_pointer + i32.const 15136 + i32.store offset=12 + i32.const 15136 call $~lib/string/String#toUpperCase - local.tee $42 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/string/String#toLowerCase - local.tee $43 - i32.const 14928 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15136 + i32.store offset=4 + local.get $7 + i32.const 15136 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -3710,15 +4460,26 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $44 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/string/String#toLowerCase - local.tee $45 - i32.const 15184 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15392 + i32.store offset=4 + local.get $7 + i32.const 15392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -3726,906 +4487,1472 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $46 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/string/String#toUpperCase - local.tee $47 - i32.const 15184 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15392 + i32.store offset=4 + local.get $7 + i32.const 15392 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15216 + global.get $~lib/memory/__stack_pointer + i32.const 15424 + i32.store offset=8 + i32.const 15424 call $~lib/string/String#toLowerCase - local.tee $48 - i32.const 15248 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15456 + i32.store offset=4 + local.get $7 + i32.const 15456 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15280 + global.get $~lib/memory/__stack_pointer + i32.const 15488 + i32.store offset=8 + i32.const 15488 call $~lib/string/String#toLowerCase - local.tee $49 - i32.const 15312 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15520 + i32.store offset=4 + local.get $7 + i32.const 15520 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15344 + global.get $~lib/memory/__stack_pointer + i32.const 15552 + i32.store offset=8 + i32.const 15552 call $~lib/string/String#toLowerCase - local.tee $50 - i32.const 15376 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15584 + i32.store offset=4 + local.get $7 + i32.const 15584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15408 + global.get $~lib/memory/__stack_pointer + i32.const 15616 + i32.store offset=8 + i32.const 15616 call $~lib/string/String#toLowerCase - local.tee $51 - i32.const 15440 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15648 + i32.store offset=4 + local.get $7 + i32.const 15648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15472 + global.get $~lib/memory/__stack_pointer + i32.const 15680 + i32.store offset=8 + i32.const 15680 call $~lib/string/String#toLowerCase - local.tee $52 - i32.const 15504 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15712 + i32.store offset=4 + local.get $7 + i32.const 15712 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15536 + global.get $~lib/memory/__stack_pointer + i32.const 15744 + i32.store offset=8 + i32.const 15744 call $~lib/string/String#toLowerCase - local.tee $53 - i32.const 15568 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15776 + i32.store offset=4 + local.get $7 + i32.const 15776 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15600 + global.get $~lib/memory/__stack_pointer + i32.const 15808 + i32.store offset=8 + i32.const 15808 call $~lib/string/String#toLowerCase - local.tee $54 - i32.const 15632 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15840 + i32.store offset=4 + local.get $7 + i32.const 15840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15664 + global.get $~lib/memory/__stack_pointer + i32.const 15872 + i32.store offset=8 + i32.const 15872 call $~lib/string/String#toLowerCase - local.tee $55 - i32.const 15696 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15904 + i32.store offset=4 + local.get $7 + i32.const 15904 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15728 + global.get $~lib/memory/__stack_pointer + i32.const 15936 + i32.store offset=8 + i32.const 15936 call $~lib/string/String#toLowerCase - local.tee $56 - i32.const 15760 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15968 + i32.store offset=4 + local.get $7 + i32.const 15968 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15792 + global.get $~lib/memory/__stack_pointer + i32.const 16000 + i32.store offset=8 + i32.const 16000 call $~lib/string/String#toLowerCase - local.tee $57 - i32.const 15824 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16032 + i32.store offset=4 + local.get $7 + i32.const 16032 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15856 + global.get $~lib/memory/__stack_pointer + i32.const 16064 + i32.store offset=8 + i32.const 16064 call $~lib/string/String#toLowerCase - local.tee $58 - i32.const 15888 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16096 + i32.store offset=4 + local.get $7 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15920 + global.get $~lib/memory/__stack_pointer + i32.const 16128 + i32.store offset=8 + i32.const 16128 call $~lib/string/String#toLowerCase - local.tee $59 - i32.const 15952 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16160 + i32.store offset=4 + local.get $7 + i32.const 16160 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15984 + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.store offset=8 + i32.const 16192 call $~lib/string/String#toLowerCase - local.tee $60 - i32.const 16016 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16224 + i32.store offset=4 + local.get $7 + i32.const 16224 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16048 + global.get $~lib/memory/__stack_pointer + i32.const 16256 + i32.store offset=8 + i32.const 16256 call $~lib/string/String#toLowerCase - local.tee $61 - i32.const 16080 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16288 + i32.store offset=4 + local.get $7 + i32.const 16288 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16112 + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.store offset=8 + i32.const 16320 call $~lib/string/String#toLowerCase - local.tee $62 - i32.const 16144 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16352 + i32.store offset=4 + local.get $7 + i32.const 16352 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16176 + global.get $~lib/memory/__stack_pointer + i32.const 16384 + i32.store offset=8 + i32.const 16384 call $~lib/string/String#toLowerCase - local.tee $63 - i32.const 16208 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16416 + i32.store offset=4 + local.get $7 + i32.const 16416 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16240 + global.get $~lib/memory/__stack_pointer + i32.const 16448 + i32.store offset=8 + i32.const 16448 call $~lib/string/String#toLowerCase - local.tee $64 - i32.const 16272 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16480 + i32.store offset=4 + local.get $7 + i32.const 16480 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16304 + global.get $~lib/memory/__stack_pointer + i32.const 16512 + i32.store offset=8 + i32.const 16512 call $~lib/string/String#toLowerCase - local.tee $65 - i32.const 16336 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16544 + i32.store offset=4 + local.get $7 + i32.const 16544 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16368 + global.get $~lib/memory/__stack_pointer + i32.const 16576 + i32.store offset=8 + i32.const 16576 call $~lib/string/String#toLowerCase - local.tee $66 - i32.const 16400 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16608 + i32.store offset=4 + local.get $7 + i32.const 16608 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16432 + global.get $~lib/memory/__stack_pointer + i32.const 16640 + i32.store offset=8 + i32.const 16640 call $~lib/string/String#toLowerCase - local.tee $67 - i32.const 16464 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16672 + i32.store offset=4 + local.get $7 + i32.const 16672 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16496 + global.get $~lib/memory/__stack_pointer + i32.const 16704 + i32.store offset=8 + i32.const 16704 call $~lib/string/String#toLowerCase - local.tee $68 - i32.const 16528 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16736 + i32.store offset=4 + local.get $7 + i32.const 16736 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16560 + global.get $~lib/memory/__stack_pointer + i32.const 16768 + i32.store offset=8 + i32.const 16768 call $~lib/string/String#toLowerCase - local.tee $69 - i32.const 16592 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16800 + i32.store offset=4 + local.get $7 + i32.const 16800 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16624 + global.get $~lib/memory/__stack_pointer + i32.const 16832 + i32.store offset=8 + i32.const 16832 call $~lib/string/String#toLowerCase - local.tee $70 - i32.const 16656 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16864 + i32.store offset=4 + local.get $7 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16688 + global.get $~lib/memory/__stack_pointer + i32.const 16896 + i32.store offset=8 + i32.const 16896 call $~lib/string/String#toLowerCase - local.tee $71 - i32.const 16720 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16928 + i32.store offset=4 + local.get $7 + i32.const 16928 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16752 + global.get $~lib/memory/__stack_pointer + i32.const 16960 + i32.store offset=8 + i32.const 16960 call $~lib/string/String#toLowerCase - local.tee $72 - i32.const 16784 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16992 + i32.store offset=4 + local.get $7 + i32.const 16992 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16816 + global.get $~lib/memory/__stack_pointer + i32.const 17024 + i32.store offset=8 + i32.const 17024 call $~lib/string/String#toLowerCase - local.tee $73 - i32.const 15888 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16096 + i32.store offset=4 + local.get $7 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16848 + global.get $~lib/memory/__stack_pointer + i32.const 17056 + i32.store offset=8 + i32.const 17056 call $~lib/string/String#toLowerCase - local.tee $74 - i32.const 16880 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17088 + i32.store offset=4 + local.get $7 + i32.const 17088 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16912 + global.get $~lib/memory/__stack_pointer + i32.const 17120 + i32.store offset=8 + i32.const 17120 call $~lib/string/String#toLowerCase - local.tee $75 - i32.const 16944 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17152 + i32.store offset=4 + local.get $7 + i32.const 17152 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16976 + global.get $~lib/memory/__stack_pointer + i32.const 17184 + i32.store offset=8 + i32.const 17184 call $~lib/string/String#toLowerCase - local.tee $76 - i32.const 17008 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17216 + i32.store offset=4 + local.get $7 + i32.const 17216 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17040 + global.get $~lib/memory/__stack_pointer + i32.const 17248 + i32.store offset=8 + i32.const 17248 call $~lib/string/String#toLowerCase - local.tee $77 - i32.const 17072 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17280 + i32.store offset=4 + local.get $7 + i32.const 17280 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17104 + global.get $~lib/memory/__stack_pointer + i32.const 17312 + i32.store offset=8 + i32.const 17312 call $~lib/string/String#toLowerCase - local.tee $78 - i32.const 17136 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17344 + i32.store offset=4 + local.get $7 + i32.const 17344 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17168 + global.get $~lib/memory/__stack_pointer + i32.const 17376 + i32.store offset=8 + i32.const 17376 call $~lib/string/String#toLowerCase - local.tee $79 - i32.const 17200 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17408 + i32.store offset=4 + local.get $7 + i32.const 17408 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17232 + global.get $~lib/memory/__stack_pointer + i32.const 17440 + i32.store offset=8 + i32.const 17440 call $~lib/string/String#toLowerCase - local.tee $80 - i32.const 17264 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17472 + i32.store offset=4 + local.get $7 + i32.const 17472 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17296 + global.get $~lib/memory/__stack_pointer + i32.const 17504 + i32.store offset=8 + i32.const 17504 call $~lib/string/String#toLowerCase - local.tee $81 - i32.const 17328 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17536 + i32.store offset=4 + local.get $7 + i32.const 17536 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17360 + global.get $~lib/memory/__stack_pointer + i32.const 17568 + i32.store offset=8 + i32.const 17568 call $~lib/string/String#toLowerCase - local.tee $82 - i32.const 17392 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17600 + i32.store offset=4 + local.get $7 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17424 + global.get $~lib/memory/__stack_pointer + i32.const 17632 + i32.store offset=8 + i32.const 17632 call $~lib/string/String#toLowerCase - local.tee $83 - i32.const 17456 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17664 + i32.store offset=4 + local.get $7 + i32.const 17664 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17488 + global.get $~lib/memory/__stack_pointer + i32.const 17696 + i32.store offset=8 + i32.const 17696 call $~lib/string/String#toLowerCase - local.tee $84 - i32.const 17520 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17728 + i32.store offset=4 + local.get $7 + i32.const 17728 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17552 + global.get $~lib/memory/__stack_pointer + i32.const 17760 + i32.store offset=8 + i32.const 17760 call $~lib/string/String#toLowerCase - local.tee $85 - i32.const 17584 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17792 + i32.store offset=4 + local.get $7 + i32.const 17792 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17616 + global.get $~lib/memory/__stack_pointer + i32.const 17824 + i32.store offset=8 + i32.const 17824 call $~lib/string/String#toUpperCase - local.tee $86 - i32.const 17648 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17856 + i32.store offset=4 + local.get $7 + i32.const 17856 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14864 + global.get $~lib/memory/__stack_pointer + i32.const 15072 + i32.store offset=8 + i32.const 15072 call $~lib/string/String#toUpperCase - local.tee $87 - i32.const 17680 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17888 + i32.store offset=4 + local.get $7 + i32.const 17888 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17712 + global.get $~lib/memory/__stack_pointer + i32.const 17920 + i32.store offset=8 + i32.const 17920 call $~lib/string/String#toUpperCase - local.tee $88 - i32.const 17744 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17952 + i32.store offset=4 + local.get $7 + i32.const 17952 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17776 + global.get $~lib/memory/__stack_pointer + i32.const 17984 + i32.store offset=8 + i32.const 17984 call $~lib/string/String#toUpperCase - local.tee $89 - i32.const 17808 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18016 + i32.store offset=4 + local.get $7 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17840 + global.get $~lib/memory/__stack_pointer + i32.const 18048 + i32.store offset=8 + i32.const 18048 call $~lib/string/String#toUpperCase - local.tee $90 - i32.const 17872 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18080 + i32.store offset=4 + local.get $7 + i32.const 18080 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17904 + global.get $~lib/memory/__stack_pointer + i32.const 18112 + i32.store offset=8 + i32.const 18112 call $~lib/string/String#toUpperCase - local.tee $91 - i32.const 17936 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18144 + i32.store offset=4 + local.get $7 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17968 + global.get $~lib/memory/__stack_pointer + i32.const 18176 + i32.store offset=8 + i32.const 18176 call $~lib/string/String#toUpperCase - local.tee $92 - i32.const 17936 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18144 + i32.store offset=4 + local.get $7 + i32.const 18144 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18000 + global.get $~lib/memory/__stack_pointer + i32.const 18208 + i32.store offset=8 + i32.const 18208 call $~lib/string/String#toUpperCase - local.tee $93 - i32.const 18032 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18240 + i32.store offset=4 + local.get $7 + i32.const 18240 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18064 + global.get $~lib/memory/__stack_pointer + i32.const 18272 + i32.store offset=8 + i32.const 18272 call $~lib/string/String#toUpperCase - local.tee $94 - i32.const 18096 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18304 + i32.store offset=4 + local.get $7 + i32.const 18304 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18128 + global.get $~lib/memory/__stack_pointer + i32.const 18336 + i32.store offset=8 + i32.const 18336 call $~lib/string/String#toUpperCase - local.tee $95 - i32.const 18160 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18368 + i32.store offset=4 + local.get $7 + i32.const 18368 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18192 + global.get $~lib/memory/__stack_pointer + i32.const 18400 + i32.store offset=8 + i32.const 18400 call $~lib/string/String#toUpperCase - local.tee $96 - i32.const 18224 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18432 + i32.store offset=4 + local.get $7 + i32.const 18432 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18256 + global.get $~lib/memory/__stack_pointer + i32.const 18464 + i32.store offset=8 + i32.const 18464 call $~lib/string/String#toUpperCase - local.tee $97 - i32.const 18288 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18496 + i32.store offset=4 + local.get $7 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 18320 + global.get $~lib/memory/__stack_pointer + i32.const 18528 + i32.store offset=8 + i32.const 18528 call $~lib/string/String#toUpperCase - local.tee $98 - i32.const 18352 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18560 + i32.store offset=4 + local.get $7 + i32.const 18560 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 6688 + i32.const 6896 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end loop $for-loop|0 - local.get $4 + local.get $6 i32.const 1114111 i32.le_s if - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $6 call $~lib/string/String.fromCodePoint - local.tee $12 + local.tee $7 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 call $~lib/string/String#toLowerCase - local.set $5 - local.get $12 + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $7 call $~lib/string/String#toUpperCase - local.set $6 + local.tee $7 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store local.get $5 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $3 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store local.get $5 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $0 + local.tee $3 i64.const 0 i64.ge_s if - local.get $3 local.get $0 + local.get $3 i64.const 16 i64.shl i64.add - local.set $3 + local.set $0 end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store local.get $5 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $0 + local.tee $3 i64.const 0 i64.ge_s if - local.get $3 local.get $0 + local.get $3 i64.const 32 i64.shl i64.add - local.set $3 + local.set $0 end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $0 - local.get $6 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $2 i64.const 0 i64.ge_s if - local.get $0 - local.get $1 + local.get $3 + local.get $2 i64.const 16 i64.shl i64.add - local.set $0 + local.set $3 end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $1 + local.tee $2 i64.const 0 i64.ge_s if - local.get $0 - local.get $1 + local.get $3 + local.get $2 i64.const 32 i64.shl i64.add - local.set $0 + local.set $3 end - local.get $4 + local.get $6 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $1 - local.get $4 + local.set $2 + local.get $6 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_s if - local.get $1 local.get $2 + local.get $1 i64.const 16 i64.shl i64.add - local.set $1 + local.set $2 end - local.get $4 + local.get $6 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $2 + local.tee $1 i64.const 0 i64.ge_s if - local.get $1 local.get $2 + local.get $1 i64.const 32 i64.shl i64.add - local.set $1 + local.set $2 end - local.get $4 + local.get $6 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $2 - local.get $4 + local.set $1 + local.get $6 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $7 + local.tee $4 i64.const 0 i64.ge_s if - local.get $2 - local.get $7 + local.get $1 + local.get $4 i64.const 16 i64.shl i64.add - local.set $2 + local.set $1 end - local.get $4 + local.get $6 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $7 + local.tee $4 i64.const 0 i64.ge_s if - local.get $2 - local.get $7 + local.get $1 + local.get $4 i64.const 32 i64.shl i64.add - local.set $2 + local.set $1 end - local.get $1 - local.get $3 + local.get $0 + local.get $2 i64.ne if - i32.const 18384 + global.get $~lib/memory/__stack_pointer + i32.const 18592 + i32.store + i32.const 18592 i32.const 1 - local.get $4 + local.get $6 f64.convert_i32_s f64.const 0 f64.const 0 f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18480 - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 18688 + i32.store offset=4 + local.get $0 call $~lib/util/number/itoa64 - local.tee $8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + i32.const 18688 + local.get $7 call $~lib/string/String.__concat - local.tee $9 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 f64.const 0 f64.const 0 @@ -4633,12 +5960,23 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 18896 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 19104 + i32.store offset=4 + local.get $2 call $~lib/util/number/itoa64 - local.tee $10 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + i32.const 19104 + local.get $7 call $~lib/string/String.__concat - local.tee $11 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 f64.const 0 f64.const 0 @@ -4646,34 +5984,40 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release end - local.get $0 - local.get $2 + local.get $1 + local.get $3 i64.ne if - i32.const 18960 + global.get $~lib/memory/__stack_pointer + i32.const 19168 + i32.store + i32.const 19168 i32.const 1 - local.get $4 + local.get $6 f64.convert_i32_s f64.const 0 f64.const 0 f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19056 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 19264 + i32.store offset=4 + local.get $3 call $~lib/util/number/itoa64 - local.tee $8 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + i32.const 19264 + local.get $7 call $~lib/string/String.__concat - local.tee $9 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 f64.const 0 f64.const 0 @@ -4681,12 +6025,23 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19120 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 19328 + i32.store offset=4 + local.get $1 call $~lib/util/number/itoa64 - local.tee $10 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + i32.const 19328 + local.get $7 call $~lib/string/String.__concat - local.tee $11 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 i32.const 0 f64.const 0 f64.const 0 @@ -4694,290 +6049,283 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release end - local.get $12 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 - call $~lib/rt/pure/__release - local.get $4 i32.const 1 i32.add - local.set $4 + local.set $6 br $for-loop|0 end end - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store 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 + i32.const 1114111 + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 122 - i32.const 14 + i32.const 15344 + i32.const 33 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_s + local.tee $2 + i32.shl i32.const 1 - i32.eq + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end - local.get $0 - i32.load offset=20 - local.tee $1 - if - local.get $1 - i32.const 19164 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - end - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end local.get $0 - local.get $1 - i32.const 1 + i32.const 65536 i32.sub - local.get $2 - i32.const -268435456 + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 i32.and + i32.const 56320 i32.or - i32.store offset=4 + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~start - call $start:std/string-casemapping + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 18944 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $4 + select + local.tee $0 + i64.const 4294967295 + i64.le_u + if + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $0 + i32.wrap_i64 + local.tee $1 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + 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 + local.get $1 + i32.const 100 + i32.lt_u + select + local.get $1 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + local.get $1 + i32.const 1000000000 + i32.ge_u + i32.const 8 + i32.add + local.get $1 + i32.const 100000000 + i32.ge_u + i32.add + local.get $1 + i32.const 10000000 + i32.lt_u + select + local.get $1 + i32.const 100000 + i32.lt_u + select + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $do-continue|0 + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 + end + else + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $0 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add + local.get $0 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 + i64.lt_u + select + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000000 + i64.lt_u + select + local.get $0 + i64.const 1000000000000000 + i64.lt_u + select + i32.add + local.tee $2 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + loop $do-continue|00 + local.get $3 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + local.get $0 + i64.const 10 + i64.div_u + local.tee $0 + i64.const 0 + i64.ne + br_if $do-continue|00 + end + end + local.get $4 + if + local.get $3 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) ) diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 27f97f4e5c..d5eed75c2e 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -1,204 +1,223 @@ (module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (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 $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 $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))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result 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))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "string_casemapping" "toLowerCaseFromIndex" (func $std/string-casemapping/toLowerCaseFromIndex (param i32 i32) (result i32))) (import "string_casemapping" "toUpperCaseFromIndex" (func $std/string-casemapping/toUpperCaseFromIndex (param i32 i32) (result i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (memory $0 1) - (data (i32.const 12) "\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 44) "<\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 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/\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 236) "L\03\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1084) "\00\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 1212) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 3880) "\00\08\00\00V\01\00\009\00\00\00") - (data (i32.const 3892) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") - (data (i32.const 4852) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5364) "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 5772) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5852) "\00\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 5980) "\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 8988) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10556) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 10604) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 10652) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 10700) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 10748) "\\\00\00\00\01\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\00\00\00") - (data (i32.const 10844) "\\\00\00\00\01\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\00\00\00") - (data (i32.const 10940) "\\\00\00\00\01\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\00\00\00") - (data (i32.const 11036) "<\00\00\00\01\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!\00\00\00\00\00\00\00\00\00") - (data (i32.const 11100) "<\00\00\00\01\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!\00\00\00\00\00\00\00\00\00") - (data (i32.const 11164) "<\00\00\00\01\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!\00\00\00\00\00\00\00\00\00") - (data (i32.const 11228) "\\\00\00\00\01\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)\00\00\00\00\00\00\00\00\00") - (data (i32.const 11324) "\\\00\00\00\01\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)\00\00\00\00\00\00\00\00\00") - (data (i32.const 11420) "\\\00\00\00\01\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)\00\00\00\00\00\00\00\00\00") - (data (i32.const 11516) "\\\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 11612) "\\\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 11708) "\\\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 11804) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11884) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11964) "L\00\00\00\01\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,\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12044) "L\00\00\00\01\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,\00\00\00\00\00\00\00\00\00") - (data (i32.const 12124) "<\00\00\00\01\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 12188) "<\00\00\00\01\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 12252) "L\00\00\00\01\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.\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12332) "L\00\00\00\01\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.\00\00\00\00\00\00\00\00\00") - (data (i32.const 12412) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12492) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12572) "<\00\00\00\01\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\00\00\00\00") - (data (i32.const 12636) "<\00\00\00\01\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\00\00") - (data (i32.const 12700) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12780) "L\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 12860) "L\00\00\00\01\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!\00\00\00\00\00\00\00") - (data (i32.const 12940) "L\00\00\00\01\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!\00\00\00") - (data (i32.const 13020) "\9c\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13180) "\9c\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13340) "\9c\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S\00\00\00\00\00\00\00\00\00") - (data (i32.const 13564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03\00\00\00\00\00\00\00\00") - (data (i32.const 13628) "\cc\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13836) "\cc\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s\00\00\00\00\00\00\00\00\00") - (data (i32.const 14076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i\00\00\00\00\00\00\00\00\00") - (data (i32.const 14140) "\cc\00\00\00\01\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\00\00\00\00") - (data (i32.const 14348) ",\00\00\00\01\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\00") - (data (i32.const 14396) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc\00\00\00\00\00\00\00\00") - (data (i32.const 14428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14460) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14492) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14524) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14556) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14620) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\a3\03\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03\00\00\00\00\00\00\00\00") - (data (i32.const 14716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03\00\00\00\00\00\00\00\00") - (data (i32.const 14748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 \00\00\00\00\00\00\00\00\00") - (data (i32.const 14780) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 \00\00\00\00\00\00\00\00\00") - (data (i32.const 14812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 14844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 \00\00\00\00\00\00\00") - (data (i32.const 14876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 14908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 \00\00\00\00\00\00\00") - (data (i32.const 14940) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n\00\00\00\00\00\00\00") - (data (i32.const 14972) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n\00\00\00\00\00\00\00") - (data (i32.const 15004) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03\00\00\00\00\00\00\00\00") - (data (i32.const 15036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03\00\00\00\00\00\00\00\00") - (data (i32.const 15068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b\00\00\00\00\00\00\00") - (data (i32.const 15100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b\00\00\00\00\00\00\00") - (data (i32.const 15132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 15164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 \00\00\00\00\00\00\00") - (data (i32.const 15196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 15228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 \00\00\00\00\00\00\00") - (data (i32.const 15260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 15292) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 \00\00\00\00\00\00\00") - (data (i32.const 15324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 \00\00\00\00\00\00\00") - (data (i32.const 15356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 \00\00\00\00\00\00\00") - (data (i32.const 15388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03 \00\00\00") - (data (i32.const 15420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03 \00\00\00") - (data (i32.const 15452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-\00\00\00\00\00\00\00") - (data (i32.const 15484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-\00\00\00\00\00\00\00") - (data (i32.const 15516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03-\00\00\00") - (data (i32.const 15548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03-\00\00\00") - (data (i32.const 15580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\a3\03\01\03\a3\03\01\03*s\00\00") - (data (i32.const 15612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\c3\03\01\03\c2\03\01\03*s\00\00") - (data (i32.const 15644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\a3\03\00\00\00\00\00\00") - (data (i32.const 15676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\d8\a2\dc\c2\03\00\00\00\00\00\00") - (data (i32.const 15708) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03\00\00\00\00\00\00") - (data (i32.const 15740) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03\00\00\00\00\00\00") - (data (i32.const 15772) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\ad\00\a3\03\00\00\00\00\00\00") - (data (i32.const 15804) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\ad\00\c2\03\00\00\00\00\00\00") - (data (i32.const 15836) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\004\d8B\de\a3\03\00\00\00\00") - (data (i32.const 15868) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\004\d8B\de\c2\03\00\00\00\00") - (data (i32.const 15900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03\00\00\00\00\00\00\00\00") - (data (i32.const 15932) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03\00\00\00\00\00\00\00\00") - (data (i32.const 15964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\91\03E\03\a3\03\00\00\00\00\00\00") - (data (i32.const 15996) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\b1\03E\03\c2\03\00\00\00\00\00\00") - (data (i32.const 16028) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B\00\00\00\00\00\00\00") - (data (i32.const 16060) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\035\d8\a2\dc\00\00\00\00") - (data (i32.const 16092) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\035\d8\a2\dc\00\00\00\00") - (data (i32.const 16124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b\00\00\00\00\00") - (data (i32.const 16156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b\00\00\00\00\00") - (data (i32.const 16188) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\ad\00B\00\00\00\00\00") - (data (i32.const 16220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\ad\00b\00\00\00\00\00") - (data (i32.const 16252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\a3\034\d8B\deB\00\00\00") - (data (i32.const 16284) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\c3\034\d8B\deb\00\00\00") - (data (i32.const 16316) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03\00\00\00\00\00\00") - (data (i32.const 16348) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03\00\00\00\00\00\00") - (data (i32.const 16380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03E\03\91\03\00\00\00\00") - (data (i32.const 16412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03E\03\b1\03\00\00\00\00") - (data (i32.const 16444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\0e\18\a3\03\00\00\00\00\00\00") - (data (i32.const 16476) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\0e\18\c2\03\00\00\00\00\00\00") - (data (i32.const 16508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03B\00\00\00\00\00") - (data (i32.const 16540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c3\03b\00\00\00\00\00") - (data (i32.const 16572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03\0e\18\00\00\00\00\00\00") - (data (i32.const 16604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\0e\18\00\00\00\00\00\00") - (data (i32.const 16636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03\0e\18B\00\00\00\00\00") - (data (i32.const 16668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03\0e\18b\00\00\00\00\00") - (data (i32.const 16700) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\0e\18\a3\03\0e\18\00\00\00\00") - (data (i32.const 16732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\0e\18\c2\03\0e\18\00\00\00\00") - (data (i32.const 16764) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00A\00\0e\18\a3\03\0e\18B\00\00\00") - (data (i32.const 16796) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00\0e\18\c3\03\0e\18b\00\00\00") - (data (i32.const 16828) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F\00\00\00\00\00\00\00\00\00") - (data (i32.const 16892) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I\00\00\00\00\00\00\00\00\00") - (data (i32.const 16924) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16956) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L\00\00\00\00\00\00\00\00\00") - (data (i32.const 16988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I\00\00\00\00\00\00\00") - (data (i32.const 17052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L\00\00\00\00\00\00\00") - (data (i32.const 17116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T\00\00\00\00\00\00\00\00\00") - (data (i32.const 17180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03\00\00\00\00\00\00\00\00") - (data (i32.const 17276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03\00\00\00\00\00\00\00\00") - (data (i32.const 17340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03\00\00\00\00\00\00\00\00") - (data (i32.const 17404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03\00\00\00\00\00\00\00\00") - (data (i32.const 17468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03\00\00\00\00\00\00\00\00") - (data (i32.const 17532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02\00\00\00\00\00\00\00\00") - (data (i32.const 17596) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17692) "<\00\00\00\01\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 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17756) "|\00\00\00\01\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 17884) "<\00\00\00\01\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 17948) "\1c\00\00\00\01\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 17980) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 18380) "\1c\04\00\00\01\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 19436) "\\\00\00\00\01\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 19532) "\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 19564) "<\00\00\00\01\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 \00\00\00\00\00\00\00") - (data (i32.const 19628) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19724) "<\00\00\00\01\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 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19788) "<\00\00\00\01\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 \00\00\00\00\00\00\00") + (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") + (data (i32.const 44) "<\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 108) "<\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 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 300) ",\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 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) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1292) "\00\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 1420) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 4088) "\00\08\00\00V\01\00\009\00\00\00") + (data (i32.const 4100) "\00\00\00\00\01 \00\00\00\e0\ff\ff\00\bf\1d\00\00\e7\02\00\00y\00\00\02$\00\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\01\02\00\00\00\fe\ff\ff\019\ff\ff\00\18\ff\ff\01\87\ff\ff\00\d4\fe\ff\00\c3\00\00\01\d2\00\00\01\ce\00\00\01\cd\00\00\01O\00\00\01\ca\00\00\01\cb\00\00\01\cf\00\00\00a\00\00\01\d3\00\00\01\d1\00\00\00\a3\00\00\01\d5\00\00\00\82\00\00\01\d6\00\00\01\da\00\00\01\d9\00\00\01\db\00\00\008\00\00\03\00\00\00\00\b1\ff\ff\01\9f\ff\ff\01\c8\ff\ff\02($\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\003\ff\ff\00&\ff\ff\01~\ff\ff\01+*\00\01]\ff\ff\01(*\00\00?*\00\01=\ff\ff\01E\00\00\01G\00\00\00\1f*\00\00\1c*\00\00\1e*\00\00.\ff\ff\002\ff\ff\006\ff\ff\005\ff\ff\00O\a5\00\00K\a5\00\001\ff\ff\00(\a5\00\00D\a5\00\00/\ff\ff\00-\ff\ff\00\f7)\00\00A\a5\00\00\fd)\00\00+\ff\ff\00*\ff\ff\00\e7)\00\00C\a5\00\00*\a5\00\00\bb\ff\ff\00\'\ff\ff\00\b9\ff\ff\00%\ff\ff\00\15\a5\00\00\12\a5\00\02$L\00\00\00\00\00\01 \00\00\00\e0\ff\ff\01\01\00\00\00\ff\ff\ff\00T\00\00\01t\00\00\01&\00\00\01%\00\00\01@\00\00\01?\00\00\00\da\ff\ff\00\db\ff\ff\00\e1\ff\ff\00\c0\ff\ff\00\c1\ff\ff\01\08\00\00\00\c2\ff\ff\00\c7\ff\ff\00\d1\ff\ff\00\ca\ff\ff\00\f8\ff\ff\00\aa\ff\ff\00\b0\ff\ff\00\07\00\00\00\8c\ff\ff\01\c4\ff\ff\00\a0\ff\ff\01\f9\ff\ff\02\1ap\00\01\01\00\00\00\ff\ff\ff\01 \00\00\00\e0\ff\ff\01P\00\00\01\0f\00\00\00\f1\ff\ff\00\00\00\00\010\00\00\00\d0\ff\ff\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c0\0b\00\01`\1c\00\00\00\00\00\01\d0\97\00\01\08\00\00\00\f8\ff\ff\02\05\8a\00\00\00\00\00\01@\f4\ff\00\9e\e7\ff\00\c2\89\00\00\db\e7\ff\00\92\e7\ff\00\93\e7\ff\00\9c\e7\ff\00\9d\e7\ff\00\a4\e7\ff\00\00\00\00\008\8a\00\00\04\8a\00\00\e6\0e\00\01\01\00\00\00\ff\ff\ff\00\00\00\00\00\c5\ff\ff\01A\e2\ff\02\1d\8f\00\00\08\00\00\01\f8\ff\ff\00\00\00\00\00V\00\00\01\aa\ff\ff\00J\00\00\00d\00\00\00\80\00\00\00p\00\00\00~\00\00\00\t\00\00\01\b6\ff\ff\01\f7\ff\ff\00\db\e3\ff\01\9c\ff\ff\01\90\ff\ff\01\80\ff\ff\01\82\ff\ff\02\05\ac\00\00\00\00\00\01\10\00\00\00\f0\ff\ff\01\1c\00\00\01\01\00\00\01\a3\e2\ff\01A\df\ff\01\ba\df\ff\00\e4\ff\ff\02\0b\b1\00\01\01\00\00\00\ff\ff\ff\010\00\00\00\d0\ff\ff\00\00\00\00\01\t\d6\ff\01\1a\f1\ff\01\19\d6\ff\00\d5\d5\ff\00\d8\d5\ff\01\e4\d5\ff\01\03\d6\ff\01\e1\d5\ff\01\e2\d5\ff\01\c1\d5\ff\00\00\00\00\00\a0\e3\ff\00\00\00\00\01\01\00\00\00\ff\ff\ff\02\0c\bc\00\00\00\00\00\01\01\00\00\00\ff\ff\ff\01\bcZ\ff\01\a0\03\00\01\fcu\ff\01\d8Z\ff\000\00\00\01\b1Z\ff\01\b5Z\ff\01\bfZ\ff\01\eeZ\ff\01\d6Z\ff\01\ebZ\ff\01\d0\ff\ff\01\bdZ\ff\01\c8u\ff\00\00\00\00\000h\ff\00`\fc\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01(\00\00\00\d8\ff\ff\00\00\00\00\01@\00\00\00\c0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01 \00\00\00\e0\ff\ff\00\00\00\00\01\"\00\00\00\de\ff\ff") + (data (i32.const 5060) "\00\06\'Qow\00\00\00\00\00\00\00\00\00\00|\00\00\7f\00\00\00\00\00\00\00\00\83\8e\92\97\00\aa\00\00\00\00\00\00\00\00\00\00\b4\c4\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c6\c9\00\00\00\db\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\de\00\00\00\00\e1\00\00\00\00\00\00\00\e4\00\00\00\00\00\00\00\00\00\00\00\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ea\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ed\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5572) "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 5980) "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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6060) "\00\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 6188) "\12\10\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f !\10\10\"\10\10\10#$%&\'()\10*+\10\10\10\10\10\10\10\10\10\10\10,-.\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\100\10\10\101\10234567\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\108\10\109:\10;<=\10\10\10\10\10\10>\10\10?@ABCDEFGHIJKL\10MNO\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10P\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10QR\10\10\10S\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10T\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10UV\10\10\10\10\10\10\10W\10\10\10\10\10XYZ\10\10\10\10\10[\\\10\10\10\10\10\10\10\10\10]\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\80@\00\04\00\00\00@\01\00\00\00\00\00\00\00\00\a1\90\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff0\04\b0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\82\00\00\00\00\00\00\fe\ff\ff\ff\ff\bf\b6\00\00\00\00\00\10\00?\00\ff\17\00\00\00\00\01\f8\ff\ff\00\00\01\00\00\00\00\00\00\00\00\00\00\00\c0\bf\ff=\00\00\00\80\02\00\00\00\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\f8?$\00\00\c0\ff\ff?\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f8\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\14\fe!\fe\00\0c\00\02\00\02\00\00\00\00\00\00\10\1e \00\00\0c\00\00@\06\00\00\00\00\00\00\10\869\02\00\00\00#\00\06\00\00\00\00\00\00\10\be!\00\00\0c\00\00\fc\02\00\00\00\00\00\00\90\1e `\00\0c\00\00\00\04\00\00\00\00\00\00\00\01 \00\00\00\00\00\00\11\00\00\00\00\00\00\c0\c1=`\00\0c\00\00\00\02\00\00\00\00\00\00\90@0\00\00\0c\00\00\00\03\00\00\00\00\00\00\18\1e \00\00\0c\00\00\00\02\00\00\00\00\00\00\00\00\04\\\00\00\00\00\00\00\00\00\00\00\00\f2\07\c0\7f\00\00\00\00\00\00\00\00\00\00\00\00\f2\1f@?\00\00\00\00\00\00\00\00\00\03\00\00\a0\02\00\00\00\00\00\00\fe\7f\df\e0\ff\fe\ff\ff\ff\1f@\00\00\00\00\00\00\00\00\00\00\00\00\e0\fdf\00\00\00\c3\01\00\1e\00d \00 \00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\e0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\1c\00\00\00\0c\00\00\00\0c\00\00\00\00\00\00\00\b0?@\fe\8f \00\00\00\00\00x\00\00\00\00\00\00\08\00\00\00\00\00\00\00`\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\87\01\04\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\t\00\00\00\00\00\00@\7f\e5\1f\f8\9f\00\00\00\00\80\00\ff\ff\01\00\00\00\00\00\00\00\0f\00\00\00\00\00\d0\17\04\00\00\00\00\f8\0f\00\03\00\00\00<;\00\00\00\00\00\00@\a3\03\00\00\00\00\00\00\f0\cf\00\00\00\00\00\00\00\00?\00\00\00\00\00\00\00\00\00\00\f7\ff\fd!\10\03\00\00\00\00\00\f0\ff\ff\ff\ff\ff\ff\ff\07\00\01\00\00\00\f8\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\a0\03\e0\00\e0\00\e0\00`\00\f8\00\03\90|\00\00\00\00\00\00\df\ff\02\80\00\00\ff\1f\00\00\00\00\00\00\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\00\00\00\00\00\00\00\00\00\00\80\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\00\80\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00<>\08\00\00\00\00\00\00\00\00\00\00\00~\00\00\00\00\00\00\00\00\00\00\00p\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00?\00\10\00\00\00\00\00\00\00\00\00\00\00\80\f7\bf\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\03\00\ff\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\01\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\03D\08\00\00`\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000\00\00\00\ff\ff\03\80\00\00\00\00\c0?\00\00\80\ff\03\00\00\00\00\00\07\00\00\00\00\00\c83\00\80\00\00`\00\00\00\00\00\00\00\00~f\00\08\10\00\00\00\00\01\10\00\00\00\00\00\00\9d\c1\02\00\00 \000X\00\00\00\00\00\00\00\00\00\00\00\00\f8\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00 !\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\03\00\00\00\00\00\00\00\ff\ff\08\00\ff\ff\00\00\00\00$\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\80@\00\04\00\00\00@\01\00\00\00\00\00\01\00\00\00\00\c0\00\00\00\00\00\00\00\00\08\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00n\f0\00\00\00\00\00\87\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`\00\00\00\00\00\00\00\f0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\ff\7f\00\00\00\00\00\00\80\03\00\00\00\00\00x&\00 \00\00\00\00\00\00\07\00\00\00\80\ef\1f\00\00\00\00\00\00\00\08\00\03\00\00\00\00\00\c0\7f\00\9e\00\00\00\00\00\00\00\00\00\00\00\80\d3@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\80\f8\07\00\00\03\00\00\00\00\00\00\18\01\00\00\00\c0\1f\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\\\00\00@\00\00\00\00\00\00\00\00\00\00\f8\85\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 9196) "\12\13\14\15\16\17\10\10\10\10\10\10\10\10\10\10\18\10\10\19\10\10\10\10\10\10\10\10\1a\1b\11\1c\1d\1e\10\10\1f\10\10\10\10\10\10\10 !\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\"#\10\10\10$\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10%\10\10\10&\10\10\10\10\'\10\10\10\10\10\10\10(\10\10\10\10\10\10\10\10\10\10\10)\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10*\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10+,-.\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/\10\10\10\10\10\10\100\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\04 \04\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\f7\f0\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ef\ff\ff\ff\ff\01\03\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\cf\bc@\d7\ff\ff\fb\ff\ff\ff\ff\ff\ff\ff\ff\ff\bf\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\03\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\fe\ff\ff\ff\7f\00\ff\ff\ff\ff\ff\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\bf \ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff??\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\01\ff\ff\ff\ff\ff\e7\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\ff\ff??\ff\ff\ff\ff??\ff\aa\ff\ff\ff?\ff\ff\ff\ff\ff\ff\df_\dc\1f\cf\0f\ff\1f\dc\1f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\80\00\00\ff\1f\00\00\00\00\00\00\00\00\00\00\00\00\84\fc/>P\bd\1f\f2\e0C\00\00\ff\ff\ff\ff\18\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\c0\ff\ff\ff\ff\ff\ff\03\00\00\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\7f\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\1fx\0c\00\ff\ff\ff\ff\bf \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff?\00\00\ff\ff\ff?\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fc\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ffx\ff\ff\ff\ff\ff\ff\fc\07\00\00\00\00`\07\00\00\00\00\00\00\ff\ff\ff\ff\ff\f7\ff\01\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\7f\00\f8\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\fe\ff\ff\07\fe\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\0f\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\07\00\ff\ff\ff\ff\ff\ff\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\df\ff\ff\ff\ff\ff\ff\ff\ff\dfd\de\ff\eb\ef\ff\ff\ff\ff\ff\ff\ff\bf\e7\df\df\ff\ff\ff{_\fc\fd\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff?\ff\ff\ff\fd\ff\ff\f7\ff\ff\ff\f7\ff\ff\df\ff\ff\ff\df\ff\ff\7f\ff\ff\ff\7f\ff\ff\ff\fd\ff\ff\ff\fd\ff\ff\f7\0f\00\00\00\00\00\00\ff\ff\ff\ff\ff\ff\ff\ff\0f\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\ff\ff\ff\03\ff\ff\ff\03\ff\ff\ff\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10764) ",\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\00\00\00\00\00\00\00") + (data (i32.const 10812) ",\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\00\00\00\00\00\00\00") + (data (i32.const 10860) ",\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\00\00\00\00\00\00\00") + (data (i32.const 10908) ",\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\00\00\00\00\00\00\00") + (data (i32.const 10956) "\\\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\00\00\00") + (data (i32.const 11052) "\\\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\00\00\00") + (data (i32.const 11148) "\\\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\00\00\00") + (data (i32.const 11244) "<\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!\00\00\00\00\00\00\00\00\00") + (data (i32.const 11308) "<\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!\00\00\00\00\00\00\00\00\00") + (data (i32.const 11372) "<\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!\00\00\00\00\00\00\00\00\00") + (data (i32.const 11436) "\\\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)\00\00\00\00\00\00\00\00\00") + (data (i32.const 11532) "\\\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)\00\00\00\00\00\00\00\00\00") + (data (i32.const 11628) "\\\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)\00\00\00\00\00\00\00\00\00") + (data (i32.const 11724) "\\\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\00\00\00\00\00") + (data (i32.const 11820) "\\\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\00\00\00\00\00") + (data (i32.const 11916) "\\\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\00\00\00\00\00") + (data (i32.const 12012) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12092) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12172) "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,\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12252) "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,\00\00\00\00\00\00\00\00\00") + (data (i32.const 12332) "<\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 12396) "<\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 12460) "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.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12540) "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.\00\00\00\00\00\00\00\00\00") + (data (i32.const 12620) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12700) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12780) "<\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\00\00\00\00") + (data (i32.const 12844) "<\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\00\00") + (data (i32.const 12908) "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\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12988) "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\00\00\00\00\00\00\00\00") + (data (i32.const 13068) "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!\00\00\00\00\00\00\00") + (data (i32.const 13148) "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!\00\00\00") + (data (i32.const 13228) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13388) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13548) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00S\00\00\00\00\00\00\00\00\00") + (data (i32.const 13772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13804) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00i\00\07\03\00\00\00\00\00\00\00\00") + (data (i32.const 13836) "\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14044) "\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\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00s\00s\00\00\00\00\00\00\00\00\00") + (data (i32.const 14284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\01\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14316) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00f\00i\00\00\00\00\00\00\00\00\00") + (data (i32.const 14348) "\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\00\00\00\00") + (data (i32.const 14556) ",\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\00") + (data (i32.const 14604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\dc\00\00\00\00\00\00\00\00") + (data (i32.const 14636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\88\1f\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14668) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\80\1f\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14700) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\8f\1f\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14732) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\87\1f\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14764) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\fc\1f\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f3\1f\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\02\00\00\00\a3\03\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14860) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\c3\03\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 14892) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\a3\03\00\00\00\00\00\00\00\00") + (data (i32.const 14924) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00 \00\c3\03\00\00\00\00\00\00\00\00") + (data (i32.const 14956) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\a3\03 \00\00\00\00\00\00\00\00\00") + (data (i32.const 14988) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\c3\03 \00\00\00\00\00\00\00\00\00") + (data (i32.const 15020) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\c3\03 \00\00\00\00\00\00\00") + (data (i32.const 15084) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15116) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03 \00\00\00\00\00\00\00") + (data (i32.const 15148) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03\n\00\00\00\00\00\00\00") + (data (i32.const 15180) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03\n\00\00\00\00\00\00\00") + (data (i32.const 15212) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\a3\03\00\00\00\00\00\00\00\00") + (data (i32.const 15244) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00\c2\03\00\00\00\00\00\00\00\00") + (data (i32.const 15276) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\a3\03b\00\00\00\00\00\00\00") + (data (i32.const 15308) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c3\03b\00\00\00\00\00\00\00") + (data (i32.const 15340) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15372) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03 \00\00\00\00\00\00\00") + (data (i32.const 15404) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15436) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00\c3\03 \00\00\00\00\00\00\00") + (data (i32.const 15468) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15500) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00;\00\c3\03 \00\00\00\00\00\00\00") + (data (i32.const 15532) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\a3\03 \00\00\00\00\00\00\00") + (data (i32.const 15564) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\01\03\c3\03 \00\00\00\00\00\00\00") + (data (i32.const 15596) "\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 \00\00\00") + (data (i32.const 15628) "\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 \00\00\00") + (data (i32.const 15660) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\a3\03\a3\03-\00\00\00\00\00\00\00") + (data (i32.const 15692) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\c3\03\c2\03-\00\00\00\00\00\00\00") + (data (i32.const 15724) "\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-\00\00\00") + (data (i32.const 15756) "\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-\00\00\00") + (data (i32.const 15788) "\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\00\00") + (data (i32.const 15820) "\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\00\00") + (data (i32.const 15852) "\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\00\00\00\00\00\00") + (data (i32.const 15884) "\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\00\00\00\00\00\00") + (data (i32.const 15916) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00.\00\a3\03\00\00\00\00\00\00") + (data (i32.const 15948) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00.\00\c2\03\00\00\00\00\00\00") + (data (i32.const 15980) "\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\00\00\00\00\00\00") + (data (i32.const 16012) "\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\00\00\00\00\00\00") + (data (i32.const 16044) "\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\00\00\00\00") + (data (i32.const 16076) "\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\00\00\00\00") + (data (i32.const 16108) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\a3\03\00\00\00\00\00\00\00\00") + (data (i32.const 16140) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00E\03\c3\03\00\00\00\00\00\00\00\00") + (data (i32.const 16172) "\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\00\00\00\00\00\00") + (data (i32.const 16204) "\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\00\00\00\00\00\00") + (data (i32.const 16236) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03B\00\00\00\00\00\00\00") + (data (i32.const 16268) "\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\00\00\00\00") + (data (i32.const 16300) "\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\00\00\00\00") + (data (i32.const 16332) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00A\00\a3\03.\00b\00\00\00\00\00") + (data (i32.const 16364) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00\c3\03.\00b\00\00\00\00\00") + (data (i32.const 16396) "\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\00\00\00\00\00") + (data (i32.const 16428) "\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\00\00\00\00\00") + (data (i32.const 16460) "\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\00\00\00") + (data (i32.const 16492) "\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\00\00\00") + (data (i32.const 16524) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00A\00\a3\03E\03\00\00\00\00\00\00") + (data (i32.const 16556) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00\c2\03E\03\00\00\00\00\00\00") + (data (i32.const 16588) "\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\00\00\00\00") + (data (i32.const 16620) "\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\00\00\00\00") + (data (i32.const 16652) "\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\00\00\00\00\00\00") + (data (i32.const 16684) "\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\00\00\00\00\00\00") + (data (i32.const 16716) "\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\00\00\00\00\00") + (data (i32.const 16748) "\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\00\00\00\00\00") + (data (i32.const 16780) "\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\00\00\00\00\00\00") + (data (i32.const 16812) "\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\00\00\00\00\00\00") + (data (i32.const 16844) "\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\00\00\00\00\00") + (data (i32.const 16876) "\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\00\00\00\00\00") + (data (i32.const 16908) "\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\00\00\00\00") + (data (i32.const 16940) "\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\00\00\00\00") + (data (i32.const 16972) "\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\00\00\00") + (data (i32.const 17004) "\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\00\00\00") + (data (i32.const 17036) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\00\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17068) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00F\00\00\00\00\00\00\00\00\00") + (data (i32.const 17100) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00I\00\00\00\00\00\00\00\00\00") + (data (i32.const 17132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\02\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17164) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00F\00L\00\00\00\00\00\00\00\00\00") + (data (i32.const 17196) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\03\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17228) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00I\00\00\00\00\00\00\00") + (data (i32.const 17260) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\04\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17292) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00F\00F\00L\00\00\00\00\00\00\00") + (data (i32.const 17324) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\05\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17356) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00S\00T\00\00\00\00\00\00\00\00\00") + (data (i32.const 17388) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\06\fb\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17420) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\f0\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17452) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00J\00\0c\03\00\00\00\00\00\00\00\00") + (data (i32.const 17484) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\96\1e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17516) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00H\001\03\00\00\00\00\00\00\00\00") + (data (i32.const 17548) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\97\1e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17580) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00T\00\08\03\00\00\00\00\00\00\00\00") + (data (i32.const 17612) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\98\1e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17644) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00W\00\n\03\00\00\00\00\00\00\00\00") + (data (i32.const 17676) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\99\1e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17708) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00Y\00\n\03\00\00\00\00\00\00\00\00") + (data (i32.const 17740) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\9a\1e\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17772) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00A\00\be\02\00\00\00\00\00\00\00\00") + (data (i32.const 17804) "\\\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17900) "<\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 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 17964) "|\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 18092) "<\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 18156) "\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 18188) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\008\008\008\009\009\000\009\001\009\002\009\003\009\004\009\005\009\006\009\007\009\008\009\009\00") + (data (i32.const 18588) "\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 19644) "\\\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 19740) "\1c\00\00\00\00\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 19772) "<\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 \00\00\00\00\00\00\00") + (data (i32.const 19836) "\\\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\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 19932) "<\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 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 19996) "<\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 \00\00\00\00\00\00\00") + (data (i32.const 20064) "\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\00\00\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/util/casemap/SPECIALS_UPPER i32 (i32.const 256)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/util/casemap/SPECIALS_UPPER i32 (i32.const 464)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) - (global $~lib/memory/__heap_base i32 (i32.const 19852)) + (global $~lib/rt/__rtti_base i32 (i32.const 20064)) + (global $~lib/memory/__data_end i32 (i32.const 20100)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36484)) + (global $~lib/memory/__heap_base i32 (i32.const 36484)) (export "memory" (memory $0)) (start $~start) (func $~lib/string/String#get:length (param $0 i32) (result i32) @@ -209,68 +228,323 @@ i32.const 1 i32.shr_u ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) + (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 - i32.load offset=4 - local.set $1 local.get $1 - i32.const 268435455 + 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 - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 128 + 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 64 - i32.const 109 - i32.const 3 + i32.const 128 + 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.const 1 + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 i32.add - i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop 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.and - i32.eqz - i32.eqz - if + 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.const 64 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable + i32.ne end ) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + (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 - global.get $~lib/memory/__heap_base - i32.gt_u + 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.const 20 - i32.sub - call $~lib/rt/pure/increment + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + 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) @@ -294,8 +568,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 272 + i32.const 400 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -321,8 +595,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 274 + i32.const 400 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -375,8 +649,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 287 + i32.const 400 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -391,13 +665,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -483,7 +757,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -507,8 +781,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 200 + i32.const 400 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -524,8 +798,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 202 + i32.const 400 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -578,7 +852,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -619,8 +893,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 223 + i32.const 400 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -653,7 +927,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -662,7 +936,7 @@ 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 @@ -684,8 +958,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 238 + i32.const 400 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -702,8 +976,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 239 + i32.const 400 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -761,8 +1035,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 255 + i32.const 400 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -786,15 +1060,15 @@ 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 @@ -822,7 +1096,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -866,8 +1140,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 380 + i32.const 400 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -909,8 +1183,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 387 + i32.const 400 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -942,8 +1216,8 @@ i32.eqz if i32.const 0 - i32.const 192 i32.const 400 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -980,13 +1254,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 @@ -997,7 +1271,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 @@ -1024,6 +1298,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 @@ -1066,7 +1342,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 @@ -1154,6 +1430,334 @@ 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 400 + i32.const 565 + 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 + 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 + 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 128 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1179,9 +1783,9 @@ i32.const 1073741820 i32.ge_u if - i32.const 128 - i32.const 192 - i32.const 461 + i32.const 64 + i32.const 400 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1264,8 +1868,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 333 + i32.const 400 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1329,8 +1933,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 346 + i32.const 400 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1480,8 +2084,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 360 + i32.const 400 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1506,7 +2110,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 @@ -1519,7 +2123,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 @@ -1530,7 +2134,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 @@ -1560,7 +2164,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) @@ -1589,8 +2193,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 498 + i32.const 400 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1609,8 +2213,8 @@ i32.eqz if i32.const 0 - i32.const 192 - i32.const 500 + i32.const 400 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1638,44 +2242,280 @@ 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/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 128 - i32.const 64 - i32.const 275 - i32.const 30 + 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 + 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/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 64 + i32.const 128 + i32.const 256 + 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 - 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.set $2 + local.get $2 local.get $1 - i32.store offset=12 - local.get $3 + call $~lib/rt/itcms/Object#set:rtId + local.get $2 local.get $0 - i32.store offset=16 + call $~lib/rt/itcms/Object#set:rtSize local.get $2 - i32.const 16 + 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/staticarray/StaticArray#get:length (param $0 i32) (result i32) local.get $0 @@ -1717,8 +2557,8 @@ i32.const 3 i32.rem_u local.set $5 - i32.const 1212 - i32.const 1212 + i32.const 1420 + i32.const 1420 local.get $3 i32.add i32.load8_u @@ -1730,7 +2570,7 @@ i32.load8_u local.set $6 local.get $6 - i32.const 3880 + i32.const 4088 local.get $5 i32.const 2 i32.shl @@ -1742,8 +2582,8 @@ i32.const 6 i32.rem_u local.set $6 - i32.const 3892 - i32.const 4852 + i32.const 4100 + i32.const 5060 local.get $3 i32.add i32.load8_u @@ -1794,7 +2634,7 @@ i32.const 1 i32.shr_u local.set $13 - i32.const 5364 + i32.const 5572 local.get $11 local.get $13 i32.add @@ -1807,8 +2647,8 @@ local.get $0 i32.eq if - i32.const 3892 - i32.const 5364 + i32.const 4100 + i32.const 5572 local.get $11 local.get $13 i32.add @@ -1875,43 +2715,6 @@ end local.get $2 ) - (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 192 - 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) @@ -3165,1684 +3968,386 @@ 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) + (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 - 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 + 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 - call $~lib/memory/memory.copy - local.get $1 - global.get $~lib/memory/__heap_base - i32.ge_u + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - drop - local.get $0 + local.get $2 local.get $1 - call $~lib/rt/tlsf/freeBlock + 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/tlsf/reallocateBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (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.get $2 - call $~lib/rt/tlsf/prepareSize - local.set $3 + (local $9 i32) + local.get $0 local.get $1 - i32.load - local.set $4 - local.get $4 - i32.const 3 - i32.const -1 - i32.xor - i32.and + i32.const 1 + i32.shl + i32.add local.set $5 + local.get $2 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 + i32.const 1 + i32.shl + i32.add local.set $6 - local.get $6 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $4 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 + i32.ge_u + if (result i32) local.get $5 - i32.const 4 - i32.add - local.get $8 - i32.const 3 - i32.const -1 - i32.xor + i32.const 7 i32.and - i32.add - local.set $6 local.get $6 - local.get $3 - i32.ge_u + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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 $0 - local.get $7 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $4 - i32.const 3 - i32.and + local.get $5 + i32.load16_u + local.set $8 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 + 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/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) + local.get $0 local.get $0 local.get $1 - local.get $2 - call $~lib/rt/tlsf/moveBlock + i32.const 8 + i32.shr_u + i32.add + i32.load8_u + i32.const 5 + i32.shl + i32.add + local.get $1 + i32.const 255 + i32.and + i32.const 3 + i32.shr_u + i32.add + i32.load8_u + local.get $1 + i32.const 7 + i32.and + i32.shr_u + i32.const 1 + i32.and ) - (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 + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 - global.get $~lib/memory/__heap_base + i32.const 100000 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 + if 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 64 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort + 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 - 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 + unreachable ) - (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (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) - (local $14 i32) - (local $15 i32) - (local $16 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $1 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 + 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 18188 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 18188 + 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 + i32.const 1 + i32.shl + i32.add + 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.eqz + 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 18188 + local.get $10 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 local.get $0 - call $~lib/rt/pure/__retain - return + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store end local.get $1 - i32.const 3 - i32.mul - i32.const 2 - i32.mul - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - global.get $~lib/util/casemap/SPECIALS_UPPER - local.set $3 - global.get $~lib/util/casemap/SPECIALS_UPPER - call $~lib/staticarray/StaticArray#get:length - local.set $4 - i32.const 0 - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 18188 local.get $1 - i32.lt_u - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - local.get $8 - local.set $9 - local.get $9 - i32.const 7 - i32.shr_u - i32.eqz - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - block $~lib/util/string/toUpper8|inlined.0 (result i32) - local.get $8 - local.set $9 - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 1084 - local.get $9 - i32.add - i32.load8_u - br $~lib/util/string/toUpper8|inlined.0 - end - i32.store16 - else - local.get $8 - i32.const 55295 - i32.sub - i32.const 56320 - i32.const 55295 - i32.sub - i32.lt_u - if (result i32) - local.get $6 - local.get $1 - i32.const 1 - i32.sub - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $9 - local.get $9 - i32.const 56319 - i32.sub - i32.const 57344 - i32.const 56319 - i32.sub - i32.lt_u - if - local.get $8 - local.set $10 - local.get $8 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $9 - i32.const 1023 - i32.and - i32.or - i32.const 65536 - i32.add - local.set $8 - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $8 - i32.const 131072 - i32.ge_u - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $10 - local.get $9 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-continue|0 - end - end - end - local.get $8 - i32.const 9424 - i32.sub - i32.const 9449 - i32.const 9424 - i32.sub - i32.le_u - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $8 - i32.const 26 - i32.sub - i32.store16 - else - i32.const -1 - local.set $9 - local.get $8 - i32.const 223 - i32.sub - i32.const 64279 - i32.const 223 - i32.sub - i32.le_u - if - block $~lib/util/casemap/bsearch|inlined.0 (result i32) - local.get $8 - local.set $12 - local.get $3 - local.set $11 - local.get $4 - local.set $10 - i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $13 - local.get $10 - i32.le_s - local.set $14 - local.get $14 - if - local.get $13 - local.get $10 - i32.add - i32.const 3 - i32.shr_u - i32.const 2 - i32.shl - local.set $15 - local.get $11 - local.get $15 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $12 - i32.sub - local.set $16 - local.get $16 - i32.const 0 - i32.eq - if - local.get $15 - br $~lib/util/casemap/bsearch|inlined.0 - else - local.get $16 - i32.const 31 - i32.shr_u - if - local.get $15 - i32.const 4 - i32.add - local.set $13 - else - local.get $15 - i32.const 4 - i32.sub - local.set $10 - end - end - br $while-continue|1 - end - end - i32.const -1 - end - local.set $9 - end - local.get $9 - i32.const -1 - i32.xor - if - local.get $3 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load offset=2 - local.set $13 - local.get $3 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=6 - local.set $12 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $13 - i32.store - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $12 - i32.store16 offset=4 - local.get $5 - i32.const 1 - local.get $12 - i32.const 0 - i32.ne - i32.add - i32.add - local.set $5 - else - local.get $8 - i32.const 1 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.set $12 - local.get $12 - i32.const 65536 - i32.lt_s - if - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $12 - i32.store16 - else - local.get $12 - i32.const 65536 - i32.sub - local.set $12 - local.get $12 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $13 - local.get $12 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $11 - local.get $2 - local.get $5 - i32.const 1 - i32.shl - i32.add - local.get $13 - local.get $11 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - end - end - end - end - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $2 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $2 - local.get $2 - call $~lib/rt/pure/__retain - ) - (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/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 $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|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 - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - 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 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 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 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/util/string/stagedBinaryLookup (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $0 - local.get $1 - i32.const 8 - i32.shr_u - i32.add - i32.load8_u - i32.const 5 - i32.shl - i32.add - local.get $1 - i32.const 255 - i32.and - i32.const 3 - i32.shr_u - i32.add - i32.load8_u - local.get $1 - i32.const 7 - i32.and - i32.shr_u - i32.const 1 - i32.and - ) - (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (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.get $0 - call $~lib/string/String#get:length - local.set $1 - local.get $1 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 2 - i32.mul - i32.const 2 - i32.mul - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - i32.const 0 - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_u - local.set $5 - local.get $5 - if - block $for-continue|0 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $6 - local.get $6 - local.set $7 - local.get $7 - i32.const 7 - i32.shr_u - i32.eqz - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - block $~lib/util/string/toLower8|inlined.0 (result i32) - local.get $6 - local.set $7 - i32.const 0 - i32.const 0 - i32.gt_s - drop - i32.const 5852 - local.get $7 - i32.add - i32.load8_u - br $~lib/util/string/toLower8|inlined.0 - end - i32.store16 - else - local.get $6 - i32.const 55295 - i32.sub - i32.const 56320 - i32.const 55295 - i32.sub - i32.lt_u - if (result i32) - local.get $4 - local.get $1 - i32.const 1 - i32.sub - i32.lt_u - else - i32.const 0 - end - if - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $7 - local.get $7 - i32.const 56319 - i32.sub - i32.const 57344 - i32.const 56319 - i32.sub - i32.lt_u - if - local.get $6 - local.set $8 - local.get $6 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $7 - i32.const 1023 - i32.and - i32.or - i32.const 65536 - i32.add - local.set $6 - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $6 - i32.const 131072 - i32.ge_u - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $7 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-continue|0 - end - end - end - local.get $6 - i32.const 304 - i32.eq - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 775 - i32.const 16 - i32.shl - i32.const 105 - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - else - local.get $6 - i32.const 931 - i32.eq - if - i32.const 963 - local.set $7 - local.get $1 - i32.const 1 - i32.gt_u - if (result i32) - block $~lib/util/string/isFinalSigma|inlined.0 (result i32) - local.get $0 - local.set $10 - local.get $4 - local.set $9 - local.get $1 - local.set $8 - i32.const 0 - local.set $11 - local.get $9 - local.set $12 - i32.const 0 - local.tee $13 - local.get $12 - i32.const 30 - i32.sub - local.tee $14 - local.get $13 - local.get $14 - i32.gt_s - select - local.set $13 - loop $while-continue|1 - local.get $12 - local.get $13 - i32.gt_s - local.set $14 - local.get $14 - if - block $~lib/util/string/codePointBefore|inlined.0 (result i32) - local.get $10 - local.set $16 - local.get $12 - local.set $15 - local.get $15 - i32.const 0 - i32.le_s - if - i32.const -1 - br $~lib/util/string/codePointBefore|inlined.0 - end - local.get $16 - local.get $15 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $17 - local.get $17 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - local.get $15 - i32.const 2 - i32.sub - i32.const 0 - i32.ge_s - i32.and - if - local.get $16 - local.get $15 - i32.const 2 - i32.sub - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $18 - local.get $18 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if - local.get $18 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - local.get $17 - i32.const 1023 - i32.and - i32.add - i32.const 65536 - i32.add - br $~lib/util/string/codePointBefore|inlined.0 - end - end - local.get $17 - i32.const 63488 - i32.and - i32.const 55296 - i32.eq - if (result i32) - i32.const 65533 - else - local.get $17 - end - end - local.set $17 - local.get $17 - local.set $18 - local.get $18 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 5980 - local.get $18 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - local.get $17 - local.set $15 - local.get $15 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 8988 - local.get $15 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - if - i32.const 1 - local.set $11 - else - i32.const 0 - br $~lib/util/string/isFinalSigma|inlined.0 - end - end - local.get $12 - local.get $17 - i32.const 65536 - i32.ge_s - i32.const 1 - i32.add - i32.sub - local.set $12 - br $while-continue|1 - end - end - local.get $11 - i32.eqz - if - i32.const 0 - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $9 - i32.const 1 - i32.add - local.set $12 - local.get $12 - i32.const 30 - i32.add - local.tee $16 - local.get $8 - local.tee $14 - local.get $16 - local.get $14 - i32.lt_s - select - local.set $16 - loop $while-continue|2 - local.get $12 - local.get $16 - i32.lt_s - local.set $14 - local.get $14 - if - local.get $10 - local.get $12 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $15 - local.get $15 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - local.get $12 - i32.const 1 - i32.add - local.get $8 - i32.ne - i32.and - if - local.get $10 - local.get $12 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $18 - local.get $18 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $15 - i32.const 55296 - i32.sub - i32.const 10 - i32.shl - local.get $18 - i32.const 56320 - i32.sub - i32.add - i32.const 65536 - i32.add - local.set $15 - end - end - local.get $15 - local.set $18 - local.get $18 - i32.const 918000 - i32.lt_u - if (result i32) - i32.const 5980 - local.get $18 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - if - local.get $15 - local.set $18 - local.get $18 - i32.const 127370 - i32.lt_u - if (result i32) - i32.const 8988 - local.get $18 - call $~lib/util/string/stagedBinaryLookup - else - i32.const 0 - end - i32.eqz - br $~lib/util/string/isFinalSigma|inlined.0 - end - local.get $12 - local.get $15 - i32.const 65536 - i32.ge_u - i32.const 1 - i32.add - i32.add - local.set $12 - br $while-continue|2 - end - end - i32.const 1 - end - else - i32.const 0 - end - if - i32.const 962 - local.set $7 - end - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - else - local.get $6 - i32.const 9398 - i32.sub - i32.const 9423 - i32.const 9398 - i32.sub - i32.le_u - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $6 - i32.const 26 - i32.add - i32.store16 - else - local.get $6 - i32.const 0 - call $~lib/util/casemap/casemap - i32.const 2097151 - i32.and - local.set $7 - local.get $7 - i32.const 65536 - i32.lt_s - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - else - local.get $7 - i32.const 65536 - i32.sub - local.set $7 - local.get $7 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $16 - local.get $7 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $13 - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $16 - local.get $13 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - end - end - end - end - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - local.get $3 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $2 - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.const 1114111 - i32.le_u - i32.eqz - if - i32.const 0 - i32.const 14368 - i32.const 33 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 65535 - i32.gt_s - local.set $1 - i32.const 2 - local.get $1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $1 - i32.eqz - if - local.get $2 - local.get $0 - i32.store16 - else - local.get $0 - i32.const 65536 - i32.sub - local.set $0 - local.get $0 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $3 - local.get $0 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $4 - local.get $2 - local.get $4 - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#codePointAt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - local.get $2 - i32.ge_u - if - i32.const -1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $3 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.ne - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 1 - i32.add - local.get $2 - i32.eq - end - if - local.get $3 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.set $4 - local.get $4 - i32.const 64512 - i32.and - i32.const 56320 - i32.ne - if - local.get $3 - return - end - local.get $3 - i32.const 55296 - i32.sub - i32.const 10 - i32.shl - local.get $4 - i32.const 56320 - i32.sub - i32.add - i32.const 65536 - i32.add - ) - (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) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 - 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 17980 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 17980 - 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 - i32.const 1 - i32.shl - i32.add - 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 17980 - 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 17980 - 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/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 + 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/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 @@ -4950,14 +4455,14 @@ i32.const 100 i32.rem_u local.set $11 - i32.const 17980 + i32.const 18188 local.get $10 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 17980 + i32.const 18188 local.get $11 i32.const 2 i32.shl @@ -4979,14 +4484,14 @@ i64.shl i64.or i64.store - i32.const 17980 + i32.const 18188 local.get $8 i32.const 2 i32.shl i32.add i64.load32_u local.set $12 - i32.const 17980 + i32.const 18188 local.get $9 i32.const 2 i32.shl @@ -4994,7 +4499,185 @@ i64.load32_u local.set $13 local.get $2 - i32.const 4 + 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/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 18608 + 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 18608 + 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 $7 i32) + 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-continue|0 + local.get $2 + i32.const 1 i32.sub local.set $2 local.get $0 @@ -5002,426 +4685,1318 @@ 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 + i32.const 19664 + 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 + local.set $7 + local.get $7 + br_if $do-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/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 + else + loop $do-continue|1 local.get $2 - i32.const 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 18400 + i32.const 19664 local.get $1 + local.get $6 + local.get $4 + i64.mul + i64.sub i32.wrap_i64 - i32.const 255 - i32.and - i32.const 2 + i32.const 1 i32.shl i32.add - i32.load - i32.store - local.get $1 - i64.const 8 - i64.shr_u + i32.load16_u + i32.store16 + local.get $6 local.set $1 - br $while-continue|0 + local.get $1 + i64.const 0 + i64.ne + local.set $7 + local.get $7 + br_if $do-continue|1 end end - local.get $2 - i32.const 1 - i32.and + ) + (func $~lib/number/I64#toString (param $0 i64) (param $1 i32) (result i32) + local.get $0 + local.get $1 + call $~lib/util/number/itoa64 + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 18608 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 19664 + local.get $0 + call $~lib/rt/itcms/__visit + global.get $~lib/util/casemap/SPECIALS_UPPER + local.tee $1 if + local.get $1 local.get $0 - i32.const 18400 + 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 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 + call $~lib/rt/itcms/__visit end ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/staticarray/StaticArray + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $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:std/string-casemapping + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36512 + i32.const 36560 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String#toUpperCase (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i64) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/string/String#get:length + local.set $1 local.get $1 - local.set $2 - 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 + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 return end + global.get $~lib/memory/__stack_pointer local.get $1 - i64.extend_i32_s + i32.const 3 + i32.mul + i32.const 2 + i32.mul + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/util/casemap/SPECIALS_UPPER local.set $3 - local.get $3 + global.get $~lib/util/casemap/SPECIALS_UPPER + local.set $17 + global.get $~lib/memory/__stack_pointer + local.get $17 + i32.store + local.get $17 + call $~lib/staticarray/StaticArray#get:length local.set $4 - i32.const 1 + i32.const 0 local.set $5 - loop $while-continue|0 - local.get $0 - local.get $4 - i64.ge_u - local.set $2 - local.get $2 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_u + local.set $7 + local.get $7 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 + block $for-continue|0 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + local.get $8 + local.set $9 + local.get $9 + i32.const 7 + i32.shr_u + i32.eqz + if + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + block $~lib/util/string/toUpper8|inlined.0 (result i32) + local.get $8 + local.set $9 + i32.const 0 + i32.const 0 + i32.gt_s + drop + i32.const 1292 + local.get $9 + i32.add + i32.load8_u + br $~lib/util/string/toUpper8|inlined.0 + end + i32.store16 + else + local.get $8 + i32.const 55295 + i32.sub + i32.const 56320 + i32.const 55295 + i32.sub + i32.lt_u + if (result i32) + local.get $6 + local.get $1 + i32.const 1 + i32.sub + i32.lt_u + else + i32.const 0 + end + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $9 + local.get $9 + i32.const 56319 + i32.sub + i32.const 57344 + i32.const 56319 + i32.sub + i32.lt_u + if + local.get $8 + local.set $10 + local.get $8 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $9 + i32.const 1023 + i32.and + i32.or + i32.const 65536 + i32.add + local.set $8 + local.get $6 + i32.const 1 + i32.add + local.set $6 + local.get $8 + i32.const 131072 + i32.ge_u + if + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $10 + local.get $9 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-continue|0 + end + end + end + local.get $8 + i32.const 9424 + i32.sub + i32.const 9449 + i32.const 9424 + i32.sub + i32.le_u + if + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $8 + i32.const 26 + i32.sub + i32.store16 + else + i32.const -1 + local.set $9 + local.get $8 + i32.const 223 + i32.sub + i32.const 64279 + i32.const 223 + i32.sub + i32.le_u + if + block $~lib/util/casemap/bsearch|inlined.0 (result i32) + local.get $8 + local.set $12 + local.get $3 + local.set $11 + local.get $4 + local.set $10 + i32.const 0 + local.set $13 + loop $while-continue|1 + local.get $13 + local.get $10 + i32.le_s + local.set $14 + local.get $14 + if + local.get $13 + local.get $10 + i32.add + i32.const 3 + i32.shr_u + i32.const 2 + i32.shl + local.set $15 + local.get $11 + local.get $15 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $12 + i32.sub + local.set $16 + local.get $16 + i32.const 0 + i32.eq + if + local.get $15 + br $~lib/util/casemap/bsearch|inlined.0 + else + local.get $16 + i32.const 31 + i32.shr_u + if + local.get $15 + i32.const 4 + i32.add + local.set $13 + else + local.get $15 + i32.const 4 + i32.sub + local.set $10 + end + end + br $while-continue|1 + end + end + i32.const -1 + end + local.set $9 + end + local.get $9 + i32.const -1 + i32.xor + if + local.get $3 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load offset=2 + local.set $13 + local.get $3 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=6 + local.set $12 + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $13 + i32.store + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $12 + i32.store16 offset=4 + local.get $5 + i32.const 1 + local.get $12 + i32.const 0 + i32.ne + i32.add + i32.add + local.set $5 + else + local.get $8 + i32.const 1 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.set $12 + local.get $12 + i32.const 65536 + i32.lt_s + if + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $12 + i32.store16 + else + local.get $12 + i32.const 65536 + i32.sub + local.set $12 + local.get $12 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $13 + local.get $12 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $11 + local.get $2 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $13 + local.get $11 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + end + end + end + end + end + local.get $6 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 + i32.add + local.set $6 local.get $5 i32.const 1 i32.add local.set $5 - br $while-continue|1 + br $for-loop|0 end end + local.get $2 local.get $5 i32.const 1 - i32.sub + i32.shl + call $~lib/rt/itcms/__renew + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 ) - (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 $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - i32.and - i32.const 0 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 i32.eq if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - 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-continue|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 19456 - 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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|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 19456 - 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 - local.set $7 - local.get $7 - br_if $do-continue|1 - end + return end - ) - (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.get $1 - i32.const 2 - i32.lt_s + local.get $0 + i32.const 0 + i32.eq if (result i32) i32.const 1 else local.get $1 - i32.const 36 - i32.gt_s + i32.const 0 + i32.eq end if - i32.const 17776 - i32.const 17904 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end local.get $0 - i64.const 0 - i64.ne - i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne if - i32.const 17968 + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#toLowerCase (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + local.set $19 + global.get $~lib/memory/__stack_pointer + local.get $19 + i32.store + local.get $19 + call $~lib/string/String#get:length + local.set $1 + local.get $1 + i32.eqz if - i64.const 0 local.get $0 - i64.sub - local.set $0 + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + return end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.mul + i32.const 2 + i32.mul + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 i32.const 0 local.set $3 - 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 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_u + local.set $5 + local.get $5 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.set $8 + block $for-continue|0 + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $6 + local.get $6 + local.set $7 + local.get $7 + i32.const 7 + i32.shr_u + i32.eqz + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + block $~lib/util/string/toLower8|inlined.0 (result i32) + local.get $6 + local.set $7 + i32.const 0 + i32.const 0 + i32.gt_s + drop + i32.const 6060 + local.get $7 + i32.add + i32.load8_u + br $~lib/util/string/toLower8|inlined.0 + end + i32.store16 + else + local.get $6 + i32.const 55295 + i32.sub + i32.const 56320 + i32.const 55295 + i32.sub + i32.lt_u + if (result i32) + local.get $4 + local.get $1 + i32.const 1 + i32.sub + i32.lt_u + else + i32.const 0 + end + if + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $7 + local.get $7 + i32.const 56319 + i32.sub + i32.const 57344 + i32.const 56319 + i32.sub + i32.lt_u + if + local.get $6 + local.set $8 + local.get $6 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $7 + i32.const 1023 + i32.and + i32.or + i32.const 65536 + i32.add + local.set $6 + local.get $4 + i32.const 1 + i32.add + local.set $4 + local.get $6 + i32.const 131072 + i32.ge_u + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $8 + local.get $7 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-continue|0 + end + end + end + local.get $6 + i32.const 304 + i32.eq + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 775 + i32.const 16 + i32.shl + i32.const 105 + i32.or + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + else + local.get $6 + i32.const 931 + i32.eq + if + i32.const 963 + local.set $7 + local.get $1 + i32.const 1 + i32.gt_u + if (result i32) + block $~lib/util/string/isFinalSigma|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $1 + local.set $8 + i32.const 0 + local.set $11 + local.get $9 + local.set $12 + i32.const 0 + local.tee $13 + local.get $12 + i32.const 30 + i32.sub + local.tee $14 + local.get $13 + local.get $14 + i32.gt_s + select + local.set $13 + loop $while-continue|1 + local.get $12 + local.get $13 + i32.gt_s + local.set $14 + local.get $14 + if + block $~lib/util/string/codePointBefore|inlined.0 (result i32) + local.get $10 + local.set $16 + local.get $12 + local.set $15 + local.get $15 + i32.const 0 + i32.le_s + if + i32.const -1 + br $~lib/util/string/codePointBefore|inlined.0 + end + local.get $16 + local.get $15 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $17 + local.get $17 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + local.get $15 + i32.const 2 + i32.sub + i32.const 0 + i32.ge_s + i32.and + if + local.get $16 + local.get $15 + i32.const 2 + i32.sub + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $18 + local.get $18 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + if + local.get $18 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + local.get $17 + i32.const 1023 + i32.and + i32.add + i32.const 65536 + i32.add + br $~lib/util/string/codePointBefore|inlined.0 + end + end + local.get $17 + i32.const 63488 + i32.and + i32.const 55296 + i32.eq + if (result i32) + i32.const 65533 + else + local.get $17 + end + end + local.set $17 + local.get $17 + local.set $18 + local.get $18 + i32.const 918000 + i32.lt_u + if (result i32) + i32.const 6188 + local.get $18 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + i32.eqz + if + local.get $17 + local.set $15 + local.get $15 + i32.const 127370 + i32.lt_u + if (result i32) + i32.const 9196 + local.get $15 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + if + i32.const 1 + local.set $11 + else + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + end + local.get $12 + local.get $17 + i32.const 65536 + i32.ge_s + i32.const 1 + i32.add + i32.sub + local.set $12 + br $while-continue|1 + end + end + local.get $11 + i32.eqz + if + i32.const 0 + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $9 + i32.const 1 + i32.add + local.set $12 + local.get $12 + i32.const 30 + i32.add + local.tee $16 + local.get $8 + local.tee $14 + local.get $16 + local.get $14 + i32.lt_s + select + local.set $16 + loop $while-continue|2 + local.get $12 + local.get $16 + i32.lt_s + local.set $14 + local.get $14 + if + local.get $10 + local.get $12 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $15 + local.get $15 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + local.get $12 + i32.const 1 + i32.add + local.get $8 + i32.ne + i32.and + if + local.get $10 + local.get $12 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $18 + local.get $18 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $15 + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $18 + i32.const 56320 + i32.sub + i32.add + i32.const 65536 + i32.add + local.set $15 + end + end + local.get $15 + local.set $18 + local.get $18 + i32.const 918000 + i32.lt_u + if (result i32) + i32.const 6188 + local.get $18 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + i32.eqz + if + local.get $15 + local.set $18 + local.get $18 + i32.const 127370 + i32.lt_u + if (result i32) + i32.const 9196 + local.get $18 + call $~lib/util/string/stagedBinaryLookup + else + i32.const 0 + end + i32.eqz + br $~lib/util/string/isFinalSigma|inlined.0 + end + local.get $12 + local.get $15 + i32.const 65536 + i32.ge_u + i32.const 1 + i32.add + i32.add + local.set $12 + br $while-continue|2 + end + end + i32.const 1 + end + else + i32.const 0 + end + if + i32.const 962 + local.set $7 + end + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + else + local.get $6 + i32.const 9398 + i32.sub + i32.const 9423 + i32.const 9398 + i32.sub + i32.le_u + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 26 + i32.add + i32.store16 + else + local.get $6 + i32.const 0 + call $~lib/util/casemap/casemap + i32.const 2097151 + i32.and + local.set $7 + local.get $7 + i32.const 65536 + i32.lt_s + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $7 + i32.store16 + else + local.get $7 + i32.const 65536 + i32.sub + local.set $7 + local.get $7 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $16 + local.get $7 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $13 + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $16 + local.get $13 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + end + end + end + end + end 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 - i32.const 0 + local.get $3 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core + br $for-loop|0 end end local.get $2 + local.get $3 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.set $19 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $19 + ) + (func $~lib/string/String#codePointAt (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 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + local.get $2 + i32.ge_u if - local.get $3 - i32.const 45 - i32.store16 + i32.const -1 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $3 local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/number/I64#toString (param $0 i64) (param $1 i32) (result i32) + i32.const 64512 + i32.and + i32.const 55296 + i32.ne + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1 + i32.add + local.get $2 + i32.eq + end + if + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end local.get $0 local.get $1 - call $~lib/util/number/itoa64 + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.set $4 + local.get $4 + i32.const 64512 + i32.and + i32.const 56320 + i32.ne + if + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $3 + i32.const 55296 + i32.sub + i32.const 10 + i32.shl + local.get $4 + i32.const 56320 + i32.sub + i32.add + i32.const 65536 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 ) (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5429,97 +6004,120 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + 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 0 i32.eq if - i32.const 19552 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 19760 + local.tee $1 + i32.store end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if i32.const 32 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $5 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) (func $~lib/string/String.__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 + i64.const 0 + i64.store 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 19552 + i32.const 19760 local.get $0 i32.const 0 i32.ne select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/string/String#concat local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $start:std/string-casemapping @@ -5528,495 +6126,836 @@ (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 $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i64) - (local $92 i64) - (local $93 i64) - (local $94 i64) - (local $95 i64) - (local $96 i64) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 32 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 32 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 8 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 32 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $1 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 32 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 9 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10576 + i32.const 10784 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $2 - i32.const 10624 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 10832 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 10 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10672 + i32.const 10880 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $3 - i32.const 10720 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 10928 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 11 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10768 + i32.const 10976 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $4 - i32.const 10864 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11072 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 12 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10864 + i32.const 11072 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $5 - i32.const 10960 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11168 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 13 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11056 + i32.const 11264 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $6 - i32.const 11120 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11328 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 14 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11120 + i32.const 11328 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $7 - i32.const 11184 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11392 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 15 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11248 + i32.const 11456 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $8 - i32.const 11344 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11552 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 16 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11344 + i32.const 11552 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $9 - i32.const 11440 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11648 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 17 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11536 + i32.const 11744 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $10 - i32.const 11632 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11840 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 18 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11632 + i32.const 11840 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $11 - i32.const 11728 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 11936 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 19 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11824 + i32.const 12032 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $12 - i32.const 11904 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12112 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 20 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 + i32.const 12192 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $13 - i32.const 12064 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12272 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 21 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12144 + i32.const 12352 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $14 - i32.const 12208 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12416 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 22 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12272 + i32.const 12480 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $15 - i32.const 12352 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12560 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 23 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12432 + i32.const 12640 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $16 - i32.const 12512 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12720 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 24 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12592 + i32.const 12800 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $17 - i32.const 12656 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 12864 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 25 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12720 + i32.const 12928 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $18 - i32.const 12800 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13008 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 26 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12880 + i32.const 13088 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $19 - i32.const 12960 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13168 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 27 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13040 + i32.const 13248 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $20 - i32.const 13200 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13408 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 28 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13040 + i32.const 13248 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $21 - i32.const 13360 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13568 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 32 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13520 + i32.const 13728 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $22 - i32.const 13552 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13760 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 36 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13584 + i32.const 13792 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $23 - i32.const 13616 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 13824 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13648 - call $~lib/string/String#toUpperCase - local.tee $24 i32.const 13856 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/string/String#toUpperCase + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14064 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13520 + i32.const 13728 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=12 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $25 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $26 - i32.const 14064 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14272 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 42 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14096 + i32.const 14304 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=12 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $27 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $28 - i32.const 14128 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14336 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14160 + i32.const 14368 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=12 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $29 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $30 - i32.const 14160 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14368 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 44 i32.const 1 call $~lib/builtins/abort @@ -6024,15 +6963,28 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $31 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $32 - i32.const 14416 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14624 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 50 i32.const 1 call $~lib/builtins/abort @@ -6040,912 +6992,1703 @@ end i32.const 65536 call $~lib/string/String.fromCodePoint - local.tee $33 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $34 - i32.const 14416 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14624 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 51 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14448 + i32.const 14656 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $35 - i32.const 14480 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14688 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14512 + i32.const 14720 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $36 - i32.const 14544 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14752 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14576 + i32.const 14784 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $37 - i32.const 14608 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14816 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14640 + i32.const 14848 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $38 - i32.const 14672 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14880 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14704 + i32.const 14912 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $39 - i32.const 14736 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 14944 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14768 + i32.const 14976 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $40 - i32.const 14800 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15008 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14832 + i32.const 15040 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $41 - i32.const 14864 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15072 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 62 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14896 + i32.const 15104 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $42 - i32.const 14928 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15136 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14960 + i32.const 15168 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $43 - i32.const 14992 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15200 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15024 + i32.const 15232 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $44 - i32.const 15056 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15264 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15088 + i32.const 15296 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $45 - i32.const 15120 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15328 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15152 + i32.const 15360 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $46 - i32.const 15184 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15392 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15216 + i32.const 15424 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $47 - i32.const 15248 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15456 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15280 + i32.const 15488 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $48 - i32.const 15312 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15520 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15344 + i32.const 15552 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $49 - i32.const 15376 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15584 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15408 + i32.const 15616 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $50 - i32.const 15440 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15648 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15472 + i32.const 15680 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $51 - i32.const 15504 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15712 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15536 + i32.const 15744 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $52 - i32.const 15568 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15776 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 74 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15600 + i32.const 15808 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $53 - i32.const 15632 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15840 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15664 + i32.const 15872 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $54 - i32.const 15696 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15904 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15728 + i32.const 15936 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $55 - i32.const 15760 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15968 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15792 + i32.const 16000 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $56 - i32.const 15824 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16032 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15856 + i32.const 16064 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $57 - i32.const 15888 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16096 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15920 + i32.const 16128 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $58 - i32.const 15952 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16160 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15984 + i32.const 16192 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $59 - i32.const 16016 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16224 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16048 + i32.const 16256 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $60 - i32.const 15120 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 15328 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16080 + i32.const 16288 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $61 - i32.const 16112 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16320 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 85 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16144 + i32.const 16352 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $62 - i32.const 16176 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16384 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16208 + i32.const 16416 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $63 - i32.const 16240 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16448 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16272 + i32.const 16480 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $64 - i32.const 16304 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16512 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16336 + i32.const 16544 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $65 - i32.const 16368 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16576 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 89 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16400 + i32.const 16608 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $66 - i32.const 16432 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16640 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16464 + i32.const 16672 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $67 - i32.const 16496 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16704 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16528 + i32.const 16736 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $68 - i32.const 16560 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16768 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16592 + i32.const 16800 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $69 - i32.const 16624 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16832 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 93 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16656 + i32.const 16864 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $70 - i32.const 16688 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16896 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16720 + i32.const 16928 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $71 - i32.const 16752 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 16960 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16784 + i32.const 16992 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toLowerCase - local.tee $72 - i32.const 16816 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17024 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16848 + i32.const 17056 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $73 - i32.const 16880 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17088 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14096 + i32.const 14304 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $74 - i32.const 16912 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17120 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 16944 + i32.const 17152 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $75 - i32.const 16976 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17184 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 101 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17008 + i32.const 17216 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $76 - i32.const 17040 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17248 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17072 + i32.const 17280 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $77 - i32.const 17104 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17312 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17136 + i32.const 17344 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $78 - i32.const 17168 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17376 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17200 + i32.const 17408 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $79 - i32.const 17168 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17376 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17232 + i32.const 17440 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $80 - i32.const 17264 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17472 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17296 + i32.const 17504 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $81 - i32.const 17328 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17536 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17360 + i32.const 17568 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $82 - i32.const 17392 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17600 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17424 + i32.const 17632 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $83 - i32.const 17456 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17664 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17488 + i32.const 17696 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $84 - i32.const 17520 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17728 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 17552 + i32.const 17760 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String#toUpperCase - local.tee $85 - i32.const 17584 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 17792 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 5792 + i32.const 6000 i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - local.set $86 + local.set $0 loop $for-loop|0 - local.get $86 + local.get $0 i32.const 1114111 i32.le_s - local.set $87 - local.get $87 + local.set $1 + local.get $1 if - local.get $86 + global.get $~lib/memory/__stack_pointer + local.get $0 call $~lib/string/String.fromCodePoint - local.set $88 - local.get $88 + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#toLowerCase - local.set $89 - local.get $88 + local.tee $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 call $~lib/string/String#toUpperCase - local.set $90 - local.get $89 + local.tee $4 + i32.store offset=24 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $93 - local.get $89 + local.set $7 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $91 + local.tee $5 i64.const 0 i64.ge_s if - local.get $93 - local.get $91 + local.get $7 + local.get $5 i64.const 16 i64.shl i64.add - local.set $93 + local.set $7 end - local.get $89 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $92 + local.tee $6 i64.const 0 i64.ge_s if - local.get $93 - local.get $92 + local.get $7 + local.get $6 i64.const 32 i64.shl i64.add - local.set $93 + local.set $7 end - local.get $90 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $94 - local.get $90 + local.set $8 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $91 + local.tee $5 i64.const 0 i64.ge_s if - local.get $94 - local.get $91 + local.get $8 + local.get $5 i64.const 16 i64.shl i64.add - local.set $94 + local.set $8 end - local.get $90 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $92 + local.tee $6 i64.const 0 i64.ge_s if - local.get $94 - local.get $92 + local.get $8 + local.get $6 i64.const 32 i64.shl i64.add - local.set $94 + local.set $8 end - local.get $86 + local.get $0 i32.const 0 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.set $95 - local.get $86 + local.set $9 + local.get $0 i32.const 1 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $91 + local.tee $5 i64.const 0 i64.ge_s if - local.get $95 - local.get $91 + local.get $9 + local.get $5 i64.const 16 i64.shl i64.add - local.set $95 + local.set $9 end - local.get $86 + local.get $0 i32.const 2 call $std/string-casemapping/toLowerCaseFromIndex i64.extend_i32_s - local.tee $92 + local.tee $6 i64.const 0 i64.ge_s if - local.get $95 - local.get $92 + local.get $9 + local.get $6 i64.const 32 i64.shl i64.add - local.set $95 + local.set $9 end - local.get $86 + local.get $0 i32.const 0 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.set $96 - local.get $86 + local.set $10 + local.get $0 i32.const 1 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $91 + local.tee $5 i64.const 0 i64.ge_s if - local.get $96 - local.get $91 + local.get $10 + local.get $5 i64.const 16 i64.shl i64.add - local.set $96 + local.set $10 end - local.get $86 + local.get $0 i32.const 2 call $std/string-casemapping/toUpperCaseFromIndex i64.extend_i32_s - local.tee $92 + local.tee $6 i64.const 0 i64.ge_s if - local.get $96 - local.get $92 + local.get $10 + local.get $6 i64.const 32 i64.shl i64.add - local.set $96 + local.set $10 end - local.get $93 - local.get $95 + local.get $7 + local.get $9 i64.ne if - i32.const 17616 + i32.const 17824 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 1 - local.get $86 + local.get $0 f64.convert_i32_s f64.const 0 f64.const 0 f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 17712 - local.get $93 + i32.const 17920 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $7 i32.const 10 call $~lib/number/I64#toString - local.tee $97 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String.__concat - local.tee $98 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 f64.const 0 f64.const 0 @@ -6953,13 +8696,26 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19584 - local.get $95 + i32.const 19792 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $9 i32.const 10 call $~lib/number/I64#toString - local.tee $99 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String.__concat - local.tee $100 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 f64.const 0 f64.const 0 @@ -6967,35 +8723,45 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release end - local.get $94 - local.get $96 + local.get $8 + local.get $10 i64.ne if - i32.const 19648 + i32.const 19856 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 1 - local.get $86 + local.get $0 f64.convert_i32_s f64.const 0 f64.const 0 f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19744 - local.get $94 + i32.const 19952 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $8 i32.const 10 call $~lib/number/I64#toString - local.tee $100 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String.__concat - local.tee $99 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 f64.const 0 f64.const 0 @@ -7003,13 +8769,26 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - i32.const 19808 - local.get $96 + i32.const 20016 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + local.get $10 i32.const 10 call $~lib/number/I64#toString - local.tee $98 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 call $~lib/string/String.__concat - local.tee $97 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 f64.const 0 f64.const 0 @@ -7017,383 +8796,299 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace - local.get $100 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release end - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $86 + local.get $0 i32.const 1 i32.add - local.set $86 + local.set $0 br $for-loop|0 end end - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - ) - (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 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/decrement (param $0 i32) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result 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 + (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 - drop - i32.const 1 - drop + i32.store local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + i32.const 1114111 + i32.le_u i32.eqz if i32.const 0 - i32.const 64 - i32.const 122 - i32.const 14 + i32.const 14576 + i32.const 33 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 + i32.const 65535 + i32.gt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.shl i32.const 1 - i32.eq + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $1 + i32.eqz if + local.get $2 local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize + i32.store16 else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop local.get $0 - local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 1023 i32.and + i32.const 56320 + i32.or + local.set $3 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $4 local.get $2 - i32.const 1 - i32.sub + local.get $4 + local.get $3 + i32.const 16 + i32.shl i32.or - i32.store offset=4 + i32.store 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 $~start - call $start:std/string-casemapping - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u - if - return - end - i32.const 1 - drop - i32.const 1 - drop + (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 4 + 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.eq - i32.eqz + 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 0 - i32.const 64 - i32.const 69 - i32.const 16 + i32.const 17984 + i32.const 18112 + i32.const 431 + i32.const 5 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 + i64.const 0 + i64.ne + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 18176 + 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 - ) - (func $~lib/staticarray/StaticArray#__visit (param $0 i32) (param $1 i32) - i32.const 0 - drop - ) - (func $~lib/staticarray/StaticArray~visit (param $0 i32) (param $1 i32) 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 - call $~lib/staticarray/StaticArray#__visit - ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/staticarray/StaticArray - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/staticarray/StaticArray $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 + 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 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - return + 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 - local.get $0 + else local.get $1 - call $~lib/staticarray/StaticArray~visit - return + 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 - unreachable + local.get $2 + if + local.get $3 + i32.const 45 + i32.store16 + end + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) ) diff --git a/tests/compiler/std/string-encoding.json b/tests/compiler/std/string-encoding.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/string-encoding.json +++ b/tests/compiler/std/string-encoding.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index cd60afe594..0ce01129e4 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1,103 +1,274 @@ (module (type $none_=>_none (func)) (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_=>_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_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_i32 (func (param 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 (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 1068) "<\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 1132) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") - (data (i32.const 1196) "<\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 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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc") - (data (i32.const 1388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h") - (data (i32.const 1420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00R\d8b\df") - (data (i32.const 1484) ",\00\00\00\01\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 1532) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") - (data (i32.const 1580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") - (data (i32.const 1644) "<3\00\00\01\00\00\00\00\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") - (data (i32.const 14764) "\cc\1c\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 1068) "<") + (data (i32.const 1080) "\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s") + (data (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) "\1c") + (data (i32.const 1544) "\01") + (data (i32.const 1564) "\1c") + (data (i32.const 1576) "\01\00\00\00\04\00\00\00\01\d87\dc") + (data (i32.const 1596) "\1c") + (data (i32.const 1608) "\01\00\00\00\02\00\00\00h") + (data (i32.const 1628) "\1c") + (data (i32.const 1640) "\01\00\00\00\04\00\00\00h\00i") + (data (i32.const 1660) "\1c") + (data (i32.const 1672) "\01\00\00\00\04\00\00\00R\d8b\df") + (data (i32.const 1692) ",") + (data (i32.const 1704) "\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s") + (data (i32.const 1740) ",") + (data (i32.const 1752) "\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006") + (data (i32.const 1788) "\1c") + (data (i32.const 1800) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1820) "\1c") + (data (i32.const 1832) "\01\00\00\00\08\00\00\00h\00i\00R\d8b\df") + (data (i32.const 1852) "<3") + (data (i32.const 1864) "\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n") + (data (i32.const 14972) "\cc\1c") + (data (i32.const 14984) "\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n") + (data (i32.const 22352) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 38764)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__retain (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1344 + call $~lib/rt/itcms/__visit + i32.const 1152 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 - i32.const 22140 - i32.gt_u + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub + 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 - local.tee $2 - i32.const -268435456 - i32.and - local.get $2 - i32.const 1 - i32.add - i32.const -268435456 + i32.const -4 i32.and - i32.ne + local.tee $1 + i32.eqz if i32.const 0 - i32.const 1088 - i32.const 109 - i32.const 3 + local.get $0 + i32.const 38764 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) i32.const 1 - i32.add - i32.store offset=4 + else local.get $1 + i32.const 22352 i32.load - i32.const 1 - i32.and + i32.gt_u if - i32.const 0 - i32.const 1088 - i32.const 112 - i32.const 14 + 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 22356 + i32.add + i32.load + i32.const 32 + i32.and end - local.get $0 + 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/pure/__release (param $0 i32) + (func $~lib/rt/itcms/__visit (param $0 i32) local.get $0 - i32.const 22140 - i32.gt_u + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + return end - ) - (func $~lib/string/String.UTF16.byteLength (param $0 i32) (result i32) - (local $1 i32) + global.get $~lib/rt/itcms/white local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 20 i32.sub - i32.load offset=16 - local.get $0 - call $~lib/rt/pure/__release + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) @@ -112,8 +283,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 272 + i32.const 1488 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -132,8 +303,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 274 + i32.const 1488 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -175,8 +346,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 287 + i32.const 1488 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -267,8 +438,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 200 + i32.const 1488 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -281,8 +452,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 202 + i32.const 1488 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -354,8 +525,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 223 + i32.const 1488 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -409,23 +580,23 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 238 + i32.const 1488 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 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 1488 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -472,8 +643,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 255 + i32.const 1488 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -542,8 +713,8 @@ i32.gt_u if i32.const 0 - i32.const 1280 - i32.const 380 + i32.const 1488 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -570,8 +741,8 @@ i32.lt_u if i32.const 0 - i32.const 1280 - i32.const 387 + i32.const 1488 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -598,8 +769,8 @@ i32.lt_u if i32.const 0 - i32.const 1280 - i32.const 400 + i32.const 1488 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -666,10 +837,10 @@ if unreachable end - i32.const 22144 + i32.const 38768 i32.const 0 i32.store - i32.const 23712 + i32.const 40336 i32.const 0 i32.store loop $for-loop|0 @@ -680,7 +851,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 22144 + i32.const 38768 i32.add i32.const 0 i32.store offset=4 @@ -698,7 +869,7 @@ i32.add i32.const 2 i32.shl - i32.const 22144 + i32.const 38768 i32.add i32.const 0 i32.store offset=96 @@ -716,110 +887,331 @@ br $for-loop|0 end end - i32.const 22144 - i32.const 23716 + i32.const 38768 + i32.const 40340 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 22144 + i32.const 38768 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 1216 - 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) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - else - 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 + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 38764 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1216 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 38764 + 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 $1 + i32.const 38764 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1488 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl i32.and local.tee $1 if (result i32) @@ -857,8 +1249,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 346 + i32.const 1488 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -879,99 +1271,44 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1280 - i32.const 360 - i32.const 14 + i32.const 1152 + i32.const 1488 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 i32.sub - local.tee $4 - i32.const 16 - i32.ge_u + local.get $1 + i32.const 12 + i32.le_u + select + local.tee $2 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz 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 + memory.size 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 16 + i32.shl i32.const 4 i32.sub local.get $0 @@ -1034,8 +1371,8 @@ i32.eqz if i32.const 0 - i32.const 1280 - i32.const 498 + i32.const 1488 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1049,8 +1386,8 @@ i32.gt_u if i32.const 0 - i32.const 1280 - i32.const 500 + i32.const 1488 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1058,75 +1395,351 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $1 - ) - (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 + i32.const 4 + i32.add + i32.const 15 + i32.and if - i32.const 1216 - i32.const 1088 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1488 + i32.const 361 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 i32.const 16 - i32.add - local.set $2 - global.get $~lib/rt/tlsf/ROOT - i32.eqz + i32.ge_u if - call $~lib/rt/tlsf/initialize + 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 $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 $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 - global.get $~lib/rt/tlsf/ROOT - local.get $2 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - 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 + (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 - local.set $4 + 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.eq - br_if $~lib/util/memory/memmove|inlined.0 + 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 - i32.lt_u - if + 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 7 + i32.const 32 + i32.ge_u + if + local.get $0 + i64.const 0 + i64.store + local.get $0 + i64.const 0 + i64.store offset=8 + local.get $0 + i64.const 0 + i64.store offset=16 + local.get $0 + i64.const 0 + i64.store offset=24 + local.get $1 + i32.const 32 + i32.sub + local.set $1 + local.get $0 + i32.const 32 + i32.add + local.set $0 + br $while-continue|0 + end + end + end + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1152 + i32.const 1216 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/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 @@ -1284,135 +1897,714 @@ end end ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/string/String.UTF16.byteLength - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 + (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) local.get $0 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 + i32.add + local.set $4 local.get $1 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF16Encode - (local $0 i32) - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 12 + i32.const 0 i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $2 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $3 + i32.eqz + i32.and + br_if $while-break|0 + local.get $2 + i32.const 1 + i32.add + else + local.get $3 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $2 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $3 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $2 + i32.const 3 + i32.add + end + end + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end + end end + local.get $2 + ) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - i32.load8_u + local.get $1 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=1 - i32.const 216 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=2 - i32.const 55 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=3 - i32.const 220 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + local.set $4 + local.get $2 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + local.get $0 + i32.load16_u + local.tee $2 + i32.const 128 + i32.lt_u + if (result i32) + local.get $1 + local.get $2 + i32.store8 + local.get $1 + i32.const 1 + i32.add + else + local.get $2 + i32.const 2048 + i32.lt_u + if (result i32) + local.get $1 + local.get $2 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + local.get $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + i32.const 2 + i32.add + else + local.get $4 + local.get $0 + i32.const 2 + i32.add + i32.gt_u + i32.const 0 + local.get $2 + i32.const 64512 + i32.and + i32.const 55296 + i32.eq + select + if + local.get $0 + i32.load16_u offset=2 + local.tee $5 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $1 + local.get $2 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $5 + i32.const 1023 + i32.and + i32.or + local.tee $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 24 + i32.shl + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 16 + i32.shl + i32.or + local.get $2 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + local.get $2 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + local.get $1 + local.get $2 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + local.get $2 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.const 8 + i32.shl + i32.or + i32.store16 + local.get $1 + local.get $2 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $1 + i32.const 3 + i32.add + end + end + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 + end end - local.get $0 - i32.load8_u offset=4 - i32.const 104 + local.get $3 + if + local.get $1 + i32.const 0 + i32.store8 + end + ) + (func $~lib/rt/__visit_members (param $0 i32) + 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 $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + (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 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 1056 + i32.store + i32.const 1052 + i32.load + i32.const 12 i32.ne if i32.const 0 - i32.const 1152 - i32.const 20 + i32.const 1088 + i32.const 8 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1296 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1440 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $std/string-encoding/testUTF16Encode + 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 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load8_u offset=5 + i32.store offset=12 + local.get $0 + call $~lib/string/String.UTF16.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1152 - i32.const 21 + i32.const 1088 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load8_u offset=6 - i32.const 105 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF16DecodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.byteLength + i32.const 10 i32.ne if i32.const 0 - i32.const 1152 - i32.const 22 + i32.const 1088 + i32.const 55 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load8_u offset=7 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 + i32.const 56 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/string-encoding/testUTF8Encode + call $std/string-encoding/testUTF8EncodeNullTerminated + 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 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 97 + 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 + call $std/string-encoding/testUTF8DecodeNullTerminated + call $std/string-encoding/testUTF8DecodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store + i32.const 1872 + call $std/string-encoding/testLarge + global.get $~lib/memory/__stack_pointer + i32.const 14992 + i32.store + i32.const 14992 + call $std/string-encoding/testLarge + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 22380 + i32.lt_s + if + i32.const 38784 + i32.const 38832 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/string-encoding/testUTF16Encode + (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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 15 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 16 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=1 + i32.const 216 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 17 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=2 + i32.const 55 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 18 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=3 + i32.const 220 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 19 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=4 + i32.const 104 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 20 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=5 + if + i32.const 0 + i32.const 1088 + i32.const 21 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=6 + i32.const 105 + i32.ne + if + i32.const 0 + i32.const 1088 + i32.const 22 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load8_u offset=7 + if + i32.const 0 + i32.const 1088 i32.const 23 i32.const 3 call $~lib/builtins/abort @@ -1424,7 +2616,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 24 i32.const 3 call $~lib/builtins/abort @@ -1436,7 +2628,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 25 i32.const 3 call $~lib/builtins/abort @@ -1448,7 +2640,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 26 i32.const 3 call $~lib/builtins/abort @@ -1460,151 +2652,60 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + call $~lib/string/String.UTF16.decodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 local.get $1 - i32.const -2 - i32.and - local.tee $1 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $1 - local.get $0 - local.get $1 - call $~lib/string/String.UTF16.decodeUnsafe - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/compareImpl (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 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz - i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 i32.eq if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -1615,13 +2716,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -1630,450 +2738,320 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $std/string-encoding/testUTF16DecodeUnsafe - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.set $1 - i32.const 1056 - call $~lib/string/String.UTF16.byteLength - local.set $2 - local.get $1 - local.tee $0 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - i32.const 1344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - i32.const 1376 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - i32.const 1408 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - i32.const 1440 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $2 - i32.const 1472 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $0 - i32.const 1344 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF8.byteLength (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $4 - local.get $1 - i32.const 0 - i32.ne - local.set $2 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $3 - i32.eqz - i32.and - br_if $while-break|0 - local.get $2 - i32.const 1 - i32.add - else - local.get $3 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $2 - i32.const 2 - i32.add - else - local.get $4 - local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $2 - i32.const 3 - i32.add - end - end - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 - end - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.set $4 - local.get $2 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 - i32.load16_u - local.tee $2 - i32.const 128 - i32.lt_u - if (result i32) - local.get $1 - local.get $2 - i32.store8 - local.get $1 - i32.const 1 - i32.add - else - local.get $2 - i32.const 2048 - i32.lt_u - if (result i32) - local.get $1 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - local.get $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 - local.get $1 - i32.const 2 - i32.add - else - local.get $4 - local.get $0 - i32.const 2 - i32.add - i32.gt_u - i32.const 0 - local.get $2 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select - if - local.get $0 - i32.load16_u offset=2 - local.tee $5 - i32.const 64512 - i32.and - i32.const 56320 - i32.eq - if - local.get $1 - local.get $2 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $5 - i32.const 1023 - i32.and - i32.or - local.tee $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 24 - i32.shl - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 16 - i32.shl - i32.or - local.get $2 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - local.get $2 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.or - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $while-continue|0 - end - end + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load local.get $1 - local.get $2 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - local.get $2 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.const 8 - i32.shl - i32.or - i32.store16 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 local.get $1 - local.get $2 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 local.get $1 - i32.const 3 + i32.const 2 i32.add + local.set $1 + br $while-continue|1 end end - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $while-continue|0 + i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return end - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + call $~lib/string/String.UTF16.encode + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1052 + i32.load + local.set $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 i32.const 0 - i32.store8 + i32.const 1088 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + i32.const 1056 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.store offset=8 + local.get $0 + i32.const 1584 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1616 + i32.store offset=8 + local.get $0 + i32.const 1616 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 45 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=8 + local.get $0 + i32.const 1648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 46 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=8 + local.get $0 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 12 + i32.add + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=8 + local.get $1 + i32.const 1552 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1088 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/string/String.UTF8.encode (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 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 local.get $1 call $~lib/string/String.UTF8.byteLength i32.const 0 - call $~lib/rt/pure/__new - local.set $2 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 local.get $0 i32.const 20 @@ -2084,17 +3062,35 @@ local.get $2 local.get $1 call $~lib/string/String.UTF8.encodeUnsafe + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release ) (func $std/string-encoding/testUTF8Encode (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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2102,7 +3098,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 63 i32.const 3 call $~lib/builtins/abort @@ -2114,7 +3110,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 64 i32.const 3 call $~lib/builtins/abort @@ -2126,7 +3122,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 65 i32.const 3 call $~lib/builtins/abort @@ -2138,7 +3134,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 66 i32.const 3 call $~lib/builtins/abort @@ -2150,7 +3146,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 67 i32.const 3 call $~lib/builtins/abort @@ -2162,7 +3158,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 68 i32.const 3 call $~lib/builtins/abort @@ -2174,7 +3170,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 69 i32.const 3 call $~lib/builtins/abort @@ -2186,7 +3182,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 70 i32.const 3 call $~lib/builtins/abort @@ -2198,7 +3194,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 71 i32.const 3 call $~lib/builtins/abort @@ -2210,7 +3206,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 72 i32.const 3 call $~lib/builtins/abort @@ -2222,21 +3218,40 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/string-encoding/testUTF8EncodeNullTerminated (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 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2244,7 +3259,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 80 i32.const 3 call $~lib/builtins/abort @@ -2256,7 +3271,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 81 i32.const 3 call $~lib/builtins/abort @@ -2268,7 +3283,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 82 i32.const 3 call $~lib/builtins/abort @@ -2280,7 +3295,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 83 i32.const 3 call $~lib/builtins/abort @@ -2292,7 +3307,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 84 i32.const 3 call $~lib/builtins/abort @@ -2304,7 +3319,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 85 i32.const 3 call $~lib/builtins/abort @@ -2316,7 +3331,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 86 i32.const 3 call $~lib/builtins/abort @@ -2328,7 +3343,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 87 i32.const 3 call $~lib/builtins/abort @@ -2340,7 +3355,7 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 88 i32.const 3 call $~lib/builtins/abort @@ -2350,480 +3365,150 @@ i32.load8_u offset=8 i32.const 173 i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 89 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=9 - i32.const 162 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 90 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load8_u offset=10 - if - i32.const 0 - i32.const 1152 - i32.const 91 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (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/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 22140 - 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 1216 - i32.const 1088 - 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 22140 - 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/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - local.get $1 - i32.add - local.tee $4 + if + i32.const 0 + i32.const 1088 + i32.const 89 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.lt_u + i32.load8_u offset=9 + i32.const 162 + i32.ne if i32.const 0 - i32.const 1504 - i32.const 742 - i32.const 7 + i32.const 1088 + i32.const 90 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $6 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $4 - i32.lt_u - if - block $while-break|0 - local.get $0 - i32.load8_u - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 128 - i32.and - if - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.set $5 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $1 - local.get $5 - local.get $3 - i32.const 31 - i32.and - i32.const 6 - i32.shl - i32.or - i32.store16 - else - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.set $7 - local.get $0 - i32.const 1 - i32.add - local.set $0 - local.get $3 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $7 - local.get $3 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $5 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $3 - else - local.get $0 - local.get $4 - i32.eq - br_if $while-break|0 - local.get $0 - i32.load8_u - i32.const 63 - i32.and - local.get $3 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $5 - i32.const 12 - i32.shl - i32.or - local.get $7 - i32.const 6 - i32.shl - i32.or - i32.or - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $3 - i32.const 65536 - i32.lt_u - if - local.get $1 - local.get $3 - i32.store16 - else - local.get $1 - local.get $3 - i32.const 65536 - i32.sub - local.tee $3 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.get $3 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 2 - i32.add - local.set $1 - end - end - else - local.get $2 - local.get $3 - i32.eqz - i32.and - br_if $while-break|0 - local.get $1 - local.get $3 - i32.store16 - end - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 - end - end + local.get $0 + i32.load8_u offset=10 + if + i32.const 0 + i32.const 1088 + i32.const 91 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $6 - local.get $1 - local.get $6 - i32.sub - call $~lib/rt/pure/__renew - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/string/String.UTF8.decode (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 20 i32.sub i32.load offset=16 - local.set $2 - local.get $0 - local.get $2 local.get $1 call $~lib/string/String.UTF8.decodeUnsafe - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/string-encoding/testUTF8DecodeNullTerminated (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + 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 + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode - local.tee $1 + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1552 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + i32.const 1760 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1552 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 i32.const 1 call $~lib/string/String.UTF8.encode local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -2831,503 +3516,705 @@ i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 107 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1600 + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store + i32.const 1808 i32.const 1 call $~lib/string/String.UTF8.byteLength i32.const 4 i32.ne if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 local.get $0 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $3 - i32.const 1600 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=8 + local.get $0 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 110 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1552 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 i32.const 0 call $~lib/string/String.UTF8.encode - local.tee $4 + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 i32.const 1 call $~lib/string/String.UTF8.decode - local.tee $5 - i32.const 1600 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=8 + local.get $0 + i32.const 1808 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 112 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/string-encoding/testUTF8DecodeUnsafe (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.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 1056 + i32.store + global.get $~lib/memory/__stack_pointer i32.const 1056 i32.const 1 call $~lib/string/String.UTF8.encode - local.set $1 + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.const 0 call $~lib/string/String.UTF8.byteLength local.set $2 local.get $1 - local.tee $0 i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.const 1344 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 local.get $2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - i32.const 1376 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1584 + i32.store offset=8 + local.get $0 + i32.const 1584 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 123 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 2 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - i32.const 1440 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=8 + local.get $0 + i32.const 1648 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 124 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.add i32.const 4 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.const 1472 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=8 + local.get $0 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 125 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.add i32.const 0 i32.const 0 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - i32.const 1344 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=8 + local.get $0 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 126 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 4 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - i32.const 1632 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1840 + i32.store offset=8 + local.get $0 + i32.const 1840 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 128 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 6 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $2 - i32.const 1472 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=8 + local.get $0 + i32.const 1680 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 129 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 i32.const 10 i32.add i32.const 100 i32.const 1 call $~lib/string/String.UTF8.decodeUnsafe - local.tee $0 - i32.const 1344 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1552 + i32.store offset=8 + local.get $1 + i32.const 1552 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 130 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $std/string-encoding/testLarge (param $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 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 0 call $~lib/string/String.UTF8.encode local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 i32.const 0 call $~lib/string/String.UTF8.decode - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=8 + local.get $2 local.get $0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 + i32.const 1088 i32.const 136 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 call $~lib/string/String.UTF16.encode - local.tee $3 + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 call $~lib/string/String.UTF16.decode - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 138 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $start:std/string-encoding - (local $0 i32) - (local $1 i32) - i32.const 1056 - call $~lib/string/String.UTF16.byteLength - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - call $std/string-encoding/testUTF16Encode - i32.const 1056 - call $~lib/string/String.UTF16.encode - local.tee $0 - call $~lib/string/String.UTF16.decode - local.tee $1 - i32.const 1056 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1152 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/string-encoding/testUTF16DecodeUnsafe - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1056 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.ne - if - i32.const 0 - i32.const 1152 - i32.const 56 + i32.const 1088 + i32.const 138 i32.const 3 call $~lib/builtins/abort unreachable end - call $std/string-encoding/testUTF8Encode - call $std/string-encoding/testUTF8EncodeNullTerminated - i32.const 1056 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/string/String.UTF8.decode + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const -2 + i32.and + local.tee $2 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $1 - i32.const 1056 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1152 - i32.const 97 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $1 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release - call $std/string-encoding/testUTF8DecodeNullTerminated - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 1664 - call $std/string-encoding/testLarge - i32.const 14784 - call $std/string-encoding/testLarge + 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/rt/pure/decrement (param $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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 - 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 + local.get $1 + i32.add + local.tee $5 + i32.gt_u if i32.const 0 - i32.const 1088 - i32.const 122 - i32.const 14 + i32.const 1712 + i32.const 740 + i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 - i32.eq - if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.set $1 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + block $while-break|0 local.get $0 - i32.load offset=20 - local.tee $1 + i32.load8_u + local.set $4 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 128 + i32.and if - local.get $1 - i32.const 22140 - i32.ge_u + local.get $0 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.set $6 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 224 + i32.and + i32.const 192 + i32.eq if local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + local.get $6 + local.get $4 + i32.const 31 + i32.and + i32.const 6 + i32.shl + i32.or + i32.store16 + else + local.get $0 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.set $7 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $4 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $7 + local.get $4 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $6 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $4 + else + local.get $0 + local.get $5 + i32.eq + br_if $while-break|0 + local.get $0 + i32.load8_u + i32.const 63 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $6 + i32.const 12 + i32.shl + i32.or + local.get $7 + i32.const 6 + i32.shl + i32.or + i32.or + local.set $4 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $4 + i32.const 65536 + i32.lt_u + if + local.get $1 + local.get $4 + i32.store16 + else + local.get $1 + local.get $4 + i32.const 65536 + i32.sub + local.tee $4 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $4 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 2 + i32.add + local.set $1 + end end + else + local.get $2 + local.get $4 + i32.eqz + i32.and + br_if $while-break|0 + local.get $1 + local.get $4 + i32.store16 end - br $__inlined_func$~lib/rt/__visit_members + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 end - unreachable end - local.get $2 - i32.const -2147483648 + end + block $__inlined_func$~lib/rt/itcms/__renew + local.get $1 + local.get $3 + i32.sub + local.tee $1 + local.get $3 + i32.const 20 + i32.sub + local.tee $2 + i32.load + i32.const -4 i32.and + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - i32.const 1088 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.store offset=16 + br $__inlined_func$~lib/rt/itcms/__renew end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1088 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $0 + local.get $3 local.get $1 - i32.const 1 - i32.sub local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 + i32.load offset=16 + local.tee $2 + local.get $1 + local.get $2 + i32.lt_u + select + call $~lib/memory/memory.copy + local.get $0 + local.set $3 end - ) - (func $~start - call $start:std/string-encoding + 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/std/string-encoding.ts b/tests/compiler/std/string-encoding.ts index 5b06526f0e..8d3763c0da 100644 --- a/tests/compiler/std/string-encoding.ts +++ b/tests/compiler/std/string-encoding.ts @@ -474,3 +474,5 @@ Turkish (tr) Pijamalı hasta, yağız şoföre çabucak güvendi. (=Patient with pajamas, trusted swarthy driver quickly) `); + +__collect(); diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index b1d91dd9d1..92f8b2026c 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -1,202 +1,442 @@ (module + (type $i32_i32_=>_none (func (param 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_=>_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_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))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") - (data (i32.const 44) "<\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 108) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 172) "<\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 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) "\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 332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc\00\00\00\00\00\00\00\00") - (data (i32.const 364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 396) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") - (data (i32.const 428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00R\d8b\df\00\00\00\00\00\00\00\00") - (data (i32.const 460) ",\00\00\00\01\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\00") - (data (i32.const 508) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 556) "\1c\00\00\00\01\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 588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df\00\00\00\00") - (data (i32.const 620) "<3\00\00\01\00\00\00\00\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00\00\00") - (data (i32.const 13740) "\cc\1c\00\00\01\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\00\00") + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\01\d87\dch\00i\00R\d8b\df") + (data (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00,\00\00\00s\00t\00d\00/\00s\00t\00r\00i\00n\00g\00-\00e\00n\00c\00o\00d\00i\00n\00g\00.\00t\00s\00") + (data (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) "\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 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\01\d87\dc\00\00\00\00\00\00\00\00") + (data (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") + (data (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00R\d8b\df\00\00\00\00\00\00\00\00") + (data (i32.const 668) ",\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\00") + (data (i32.const 716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\00\00\004\005\006\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 764) "\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 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00h\00i\00R\d8b\df\00\00\00\00") + (data (i32.const 828) "<3\00\00\00\00\00\00\00\00\00\00\01\00\00\00*3\00\00M\00a\00t\00h\00e\00m\00a\00t\00i\00c\00s\00 \00a\00n\00d\00 \00S\00c\00i\00e\00n\00c\00e\00s\00:\00\n\00\n\00.\" \00E\00\c5\"d\00a\00 \00=\00 \00Q\00,\00 \00 \00n\00 \00\92! \00\1e\",\00 \00\11\" \00f\00(\00i\00)\00 \00=\00 \00\0f\" \00g\00(\00i\00)\00,\00 \00\00\"x\00\08\"\1d!:\00 \00\08#x\00\t# \00=\00 \00\12\"\n#\12\"x\00\0b#,\00 \00\b1\03 \00\'\" \00\ac\00\b2\03 \00=\00 \00\ac\00(\00\ac\00\b1\03 \00(\" \00\b2\03)\00,\00\n\00\n\00\15! \00\86\" \00\15!\80 \00\82\" \00$! \00\82\" \00\1a! \00\82\" \00\1d! \00\82\" \00\02!,\00 \00\a5\" \00<\00 \00a\00 \00`\" \00b\00 \00a\" \00c\00 \00d\" \00d\00 \00j\" \00\a4\" \00\d2! \00(\00A\00 \00\d4! \00B\00)\00,\00\n\00\n\002\00H\00\82 \00+\00 \00O\00\82 \00\cc! \002\00H\00\82 O\00,\00 \00R\00 \00=\00 \004\00.\007\00 \00k\00\a9\03,\00 \00\00# \002\000\000\00 \00m\00m\00\n\00\n\00L\00i\00n\00g\00u\00i\00s\00t\00i\00c\00s\00 \00a\00n\00d\00 \00d\00i\00c\00t\00i\00o\00n\00a\00r\00i\00e\00s\00:\00\n\00\n\00\f0\00i\00 \001\01n\00t\00Y\02\c8\02n\00\e6\00\83\02Y\02n\00Y\02l\00 \00f\00Y\02\c8\02n\00[\02t\001\01k\00 \00Y\02s\00o\00\8a\02s\00i\00\c8\02e\001\01\83\02n\00\n\00Y\00 \00[\00\c8\02\8f\02p\00s\00i\00l\00T\02n\00]\00,\00 \00Y\00e\00n\00 \00[\00j\00[\02n\00]\00,\00 \00Y\00o\00g\00a\00 \00[\00\c8\02j\00o\00\d0\02g\00Q\02]\00\n\00\n\00A\00P\00L\00:\00\n\00\n\00(\00(\00V\00s#V\00)\00=\00s#t#V\00)\00/\00V\00\90!,\00V\00 \00 \00 \00 \007#\90!s#\92!t#\06\"\07\"\83\"> N#U#\08#\n\00\n\00N\00i\00c\00e\00r\00 \00t\00y\00p\00o\00g\00r\00a\00p\00h\00y\00 \00i\00n\00 \00p\00l\00a\00i\00n\00 \00t\00e\00x\00t\00 \00f\00i\00l\00e\00s\00:\00\n\00\n\00T%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%W%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\18 s\00i\00n\00g\00l\00e\00\19 \00a\00n\00d\00 \00\1c d\00o\00u\00b\00l\00e\00\1d \00q\00u\00o\00t\00e\00s\00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00C\00u\00r\00l\00y\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00s\00:\00 \00\1c W\00e\00\19 v\00e\00 \00b\00e\00e\00n\00 \00h\00e\00r\00e\00\1d \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00L\00a\00t\00i\00n\00-\001\00 \00a\00p\00o\00s\00t\00r\00o\00p\00h\00e\00 \00a\00n\00d\00 \00a\00c\00c\00e\00n\00t\00s\00:\00 \00\'\00\b4\00`\00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00\1a d\00e\00u\00t\00s\00c\00h\00e\00\18 \00\1e A\00n\00f\00\fc\00h\00r\00u\00n\00g\00s\00z\00e\00i\00c\00h\00e\00n\00\1c \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00 ,\00 \00! ,\00 \000 ,\00 \00\" ,\00 \003\00\13 4\00,\00 \00\14 ,\00 \00\12\"5\00/\00+\005\00,\00 \00\"!,\00 \00& \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00A\00S\00C\00I\00I\00 \00s\00a\00f\00e\00t\00y\00 \00t\00e\00s\00t\00:\00 \001\00l\00I\00|\00,\00 \000\00O\00D\00,\00 \008\00B\00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00m%\00%\00%\00%\00%\00%\00%\00%\00%\00%n% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00\" \00t\00h\00e\00 \00e\00u\00r\00o\00 \00s\00y\00m\00b\00o\00l\00:\00 \00\02% \001\004\00.\009\005\00 \00\ac \00\02% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Q% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00p%\00%\00%\00%\00%\00%\00%\00%\00%\00%o% \00 \00 \00 \00 \00 \00 \00 \00 \00Q%\n\00Z%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%P%]%\n\00\n\00G\00r\00e\00e\00k\00 \00(\00i\00n\00 \00P\00o\00l\00y\00t\00o\00n\00i\00c\00)\00:\00\n\00\n\00T\00h\00e\00 \00G\00r\00e\00e\00k\00 \00a\00n\00t\00h\00e\00m\00:\00\n\00\n\00\a3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00\ba\03y\1f\c8\03\b7\03\n\00\c4\03\bf\03\e6\1f \00\c3\03\c0\03\b1\03\b8\03\b9\03\bf\03\e6\1f \00\c4\03t\1f\bd\03 \00\c4\03\c1\03\bf\03\bc\03\b5\03\c1\03u\1f,\00\n\00\c3\03r\1f \00\b3\03\bd\03\c9\03\c1\03w\1f\b6\03\c9\03 \00\00\1f\c0\03x\1f \00\c4\03t\1f\bd\03 \00D\1f\c8\03\b7\03\n\00\c0\03\bf\03z\1f \00\bc\03r\1f \00\b2\03w\1f\b1\03 \00\bc\03\b5\03\c4\03\c1\03q\1f\b5\03\b9\03 \00\c4\03t\1f \00\b3\03\c6\1f.\00\n\00\n\00\bf\1f\91\03\c0\03\bf\1f \00\c4\03p\1f \00\ba\03y\1f\ba\03\ba\03\b1\03\bb\03\b1\03 \00\b2\03\b3\03\b1\03\bb\03\bc\03s\1f\bd\03\b7\03\n\00\c4\03\f6\1f\bd\03 \00\fe\1f\95\03\bb\03\bb\03u\1f\bd\03\c9\03\bd\03 \00\c4\03p\1f \001\1f\b5\03\c1\03q\1f\n\00\ba\03\b1\03v\1f \00\c3\03p\1f\bd\03 \00\c0\03\c1\03\f6\1f\c4\03\b1\03 \00\00\1f\bd\03\b4\03\c1\03\b5\03\b9\03\c9\03\bc\03s\1f\bd\03\b7\03\n\00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00f\1f \00\c7\03\b1\03\d6\1f\c1\03\b5\03,\00 \00\bf\1f\95\03\bb\03\b5\03\c5\03\b8\03\b5\03\c1\03\b9\03q\1f!\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00s\00p\00e\00e\00c\00h\00 \00o\00f\00 \00D\00e\00m\00o\00s\00t\00h\00e\00n\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \004\00t\00h\00 \00c\00e\00n\00t\00u\00r\00y\00 \00B\00C\00:\00\n\00\n\00\9f\03P\1f\c7\03v\1f \00\c4\03\b1\03P\1f\c4\03p\1f \00\c0\03\b1\03\c1\03w\1f\c3\03\c4\03\b1\03\c4\03\b1\03w\1f \00\bc\03\bf\03\b9\03 \00\b3\03\b9\03\b3\03\bd\03}\1f\c3\03\ba\03\b5\03\b9\03\bd\03,\00 \00f\1f \00\04\1f\bd\03\b4\03\c1\03\b5\03\c2\03 \00\bf\1f\91\03\b8\03\b7\03\bd\03\b1\03\d6\1f\bf\03\b9\03,\00\n\00E\1f\c4\03\b1\03\bd\03 \00\c4\03\bf\1f \00\b5\030\1f\c2\03 \00\c4\03p\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\b1\03 \00\00\1f\c0\03\bf\03\b2\03\bb\03s\1f\c8\03\c9\03 \00\ba\03\b1\03v\1f \00E\1f\c4\03\b1\03\bd\03 \00\c0\03\c1\03x\1f\c2\03 \00\c4\03\bf\03z\1f\c2\03\n\00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\bf\03S\1f\c2\03 \00\00\1f\ba\03\bf\03{\1f\c9\03\87\03 \00\c4\03\bf\03z\1f\c2\03 \00\bc\03r\1f\bd\03 \00\b3\03p\1f\c1\03 \00\bb\03y\1f\b3\03\bf\03\c5\03\c2\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03 \00A\1f\c1\03\f6\1f \00\b3\03\b9\03\b3\03\bd\03\bf\03\bc\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\c4\03p\1f \00\b4\03r\1f \00\c0\03\c1\03q\1f\b3\03\bc\03\b1\03\c4\03\bf\1f\n\00\b5\030\1f\c2\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\c0\03\c1\03\bf\03u\1f\ba\03\bf\03\bd\03\c4\03\b1\03,\00 \00 \00e\1f\c3\03\b8\03\bf\1f \00E\1f\c0\03\c9\03\c2\03 \00\bc\03t\1f \00\c0\03\b5\03\b9\03\c3\03y\1f\bc\03\b5\03\b8\03\bf\1f \00\b1\03P\1f\c4\03\bf\03v\1f\n\00\c0\03\c1\03y\1f\c4\03\b5\03\c1\03\bf\03\bd\03 \00\ba\03\b1\03\ba\03\f6\1f\c2\03 \00\c3\03\ba\03s\1f\c8\03\b1\03\c3\03\b8\03\b1\03\b9\03 \00\b4\03s\1f\bf\03\bd\03.\00 \00\bf\03P\1f\b4\03s\1f\bd\03 \00\bf\03V\1f\bd\03 \00\04\1f\bb\03\bb\03\bf\03 \00\bc\03\bf\03\b9\03 \00\b4\03\bf\03\ba\03\bf\03\e6\1f\c3\03\b9\03\bd\03\n\00\bf\031\1f \00\c4\03p\1f \00\c4\03\bf\03\b9\03\b1\03\e6\1f\c4\03\b1\03 \00\bb\03s\1f\b3\03\bf\03\bd\03\c4\03\b5\03\c2\03 \00\"\1f \00\c4\03t\1f\bd\03 \00Q\1f\c0\03y\1f\b8\03\b5\03\c3\03\b9\03\bd\03,\00 \00\c0\03\b5\03\c1\03v\1f \00\'\1f\c2\03 \00\b2\03\bf\03\c5\03\bb\03\b5\03{\1f\b5\03\c3\03\b8\03\b1\03\b9\03,\00\n\00\bf\03P\1f\c7\03v\1f \00\c4\03t\1f\bd\03 \00\bf\03V\1f\c3\03\b1\03\bd\03 \00\c0\03\b1\03\c1\03\b9\03\c3\03\c4\03q\1f\bd\03\c4\03\b5\03\c2\03 \00Q\1f\bc\03\d6\1f\bd\03 \00\01\1f\bc\03\b1\03\c1\03\c4\03q\1f\bd\03\b5\03\b9\03\bd\03.\00 \00\10\1f\b3\03|\1f \00\b4\03s\1f,\00 \00E\1f\c4\03\b9\03 \00\bc\03s\1f\bd\03\n\00\c0\03\bf\03\c4\03\bf\1f \00\10\1f\be\03\c6\1f\bd\03 \00\c4\03\c7\1f \00\c0\03y\1f\bb\03\b5\03\b9\03 \00\ba\03\b1\03v\1f \00\c4\03p\1f \00\b1\03Q\1f\c4\03\c6\1f\c2\03 \00\14\1f\c7\03\b5\03\b9\03\bd\03 \00\00\1f\c3\03\c6\03\b1\03\bb\03\f6\1f\c2\03 \00\ba\03\b1\03v\1f \00\a6\03w\1f\bb\03\b9\03\c0\03\c0\03\bf\03\bd\03\n\00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b1\03\c3\03\b8\03\b1\03\b9\03,\00 \00\ba\03\b1\03v\1f \00\bc\03q\1f\bb\03\bf\1f \00\00\1f\ba\03\c1\03\b9\03\b2\03\f6\1f\c2\03 \00\bf\036\1f\b4\03\b1\03\87\03 \00\10\1f\c0\03\bf\1f \00\10\1f\bc\03\bf\03\e6\1f \00\b3\03q\1f\c1\03,\00 \00\bf\03P\1f \00\c0\03q\1f\bb\03\b1\03\b9\03\n\00\b3\03s\1f\b3\03\bf\03\bd\03\b5\03\bd\03 \00\c4\03\b1\03\e6\1f\c4\03\bf\1f \00\00\1f\bc\03\c6\03y\1f\c4\03\b5\03\c1\03\b1\03\87\03 \00\bd\03\e6\1f\bd\03 \00\bc\03s\1f\bd\03\c4\03\bf\03\b9\03 \00\c0\03s\1f\c0\03\b5\03\b9\03\c3\03\bc\03\b1\03\b9\03 \00\c4\03\bf\03\e6\1f\b8\03\bf\1f \001\1f\ba\03\b1\03\bd\03x\1f\bd\03\n\00\c0\03\c1\03\bf\03\bb\03\b1\03\b2\03\b5\03\d6\1f\bd\03 \00!\1f\bc\03\d6\1f\bd\03 \00\b5\036\1f\bd\03\b1\03\b9\03 \00\c4\03t\1f\bd\03 \00\c0\03\c1\03}\1f\c4\03\b7\03\bd\03,\00 \00E\1f\c0\03\c9\03\c2\03 \00\c4\03\bf\03z\1f\c2\03 \00\c3\03\c5\03\bc\03\bc\03q\1f\c7\03\bf\03\c5\03\c2\03\n\00\c3\03}\1f\c3\03\bf\03\bc\03\b5\03\bd\03.\00 \00\10\1fp\1f\bd\03 \00\b3\03p\1f\c1\03 \00\c4\03\bf\03\e6\1f\c4\03\bf\03 \00\b2\03\b5\03\b2\03\b1\03w\1f\c9\03\c2\03 \00Q\1f\c0\03q\1f\c1\03\be\03\c3\1f,\00 \00\c4\03y\1f\c4\03\b5\03 \00\ba\03\b1\03v\1f \00\c0\03\b5\03\c1\03v\1f \00\c4\03\bf\03\e6\1f\n\00\c4\03w\1f\bd\03\b1\03 \00\c4\03\b9\03\bc\03\c9\03\c1\03u\1f\c3\03\b5\03\c4\03\b1\03w\1f \00\c4\03\b9\03\c2\03 \00\ba\03\b1\03v\1f \00C\1f\bd\03 \00\c4\03\c1\03y\1f\c0\03\bf\03\bd\03 \00\10\1f\be\03s\1f\c3\03\c4\03\b1\03\b9\03 \00\c3\03\ba\03\bf\03\c0\03\b5\03\d6\1f\bd\03\87\03 \00\c0\03\c1\03v\1f\bd\03 \00\b4\03r\1f\n\00\c4\03t\1f\bd\03 \00\00\1f\c1\03\c7\03t\1f\bd\03 \00@\1f\c1\03\b8\03\f6\1f\c2\03 \00Q\1f\c0\03\bf\03\b8\03s\1f\c3\03\b8\03\b1\03\b9\03,\00 \00\bc\03q\1f\c4\03\b1\03\b9\03\bf\03\bd\03 \00!\1f\b3\03\bf\03\e6\1f\bc\03\b1\03\b9\03 \00\c0\03\b5\03\c1\03v\1f \00\c4\03\c6\1f\c2\03\n\00\c4\03\b5\03\bb\03\b5\03\c5\03\c4\03\c6\1f\c2\03 \00A\1f\bd\03\c4\03\b9\03\bd\03\bf\03\e6\1f\bd\03 \00\c0\03\bf\03\b9\03\b5\03\d6\1f\c3\03\b8\03\b1\03\b9\03 \00\bb\03y\1f\b3\03\bf\03\bd\03.\00\n\00\n\00\94\03\b7\03\bc\03\bf\03\c3\03\b8\03s\1f\bd\03\bf\03\c5\03\c2\03,\00 \00\93\03\fd\1f \00\bf\1f\9f\03\bb\03\c5\03\bd\03\b8\03\b9\03\b1\03\ba\03x\1f\c2\03\n\00\n\00G\00e\00o\00r\00g\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\d2\10\d7\10\ee\10\dd\10\d5\10\d7\10 \00\d0\10\ee\10\da\10\d0\10\d5\10\d4\10 \00\d2\10\d0\10\d8\10\d0\10\e0\10\dd\10\d7\10 \00\e0\10\d4\10\d2\10\d8\10\e1\10\e2\10\e0\10\d0\10\ea\10\d8\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\db\10\d4\10\d0\10\d7\10\d4\10 \00\e1\10\d0\10\d4\10\e0\10\d7\10\d0\10\e8\10\dd\10\e0\10\d8\10\e1\10\dd\10\n\00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10\d6\10\d4\10 \00\d3\10\d0\10\e1\10\d0\10\e1\10\ec\10\e0\10\d4\10\d1\10\d0\10\d3\10,\00 \00\e0\10\dd\10\db\10\d4\10\da\10\d8\10\ea\10 \00\d2\10\d0\10\d8\10\db\10\d0\10\e0\10\d7\10\d4\10\d1\10\d0\10 \001\000\00-\001\002\00 \00\db\10\d0\10\e0\10\e2\10\e1\10,\00\n\00\e5\10.\00 \00\db\10\d0\10\d8\10\dc\10\ea\10\e8\10\d8\10,\00 \00\d2\10\d4\10\e0\10\db\10\d0\10\dc\10\d8\10\d0\10\e8\10\d8\10.\00 \00\d9\10\dd\10\dc\10\e4\10\d4\10\e0\10\d4\10\dc\10\ea\10\d8\10\d0\10 \00\e8\10\d4\10\f0\10\d9\10\e0\10\d4\10\d1\10\e1\10 \00\d4\10\e0\10\d7\10\d0\10\d3\10 \00\db\10\e1\10\dd\10\e4\10\da\10\d8\10\dd\10\e1\10\n\00\d4\10\e5\10\e1\10\de\10\d4\10\e0\10\e2\10\d4\10\d1\10\e1\10 \00\d8\10\e1\10\d4\10\d7\10 \00\d3\10\d0\10\e0\10\d2\10\d4\10\d1\10\e8\10\d8\10 \00\e0\10\dd\10\d2\10\dd\10\e0\10\d8\10\ea\10\d0\10\d0\10 \00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d4\10\e2\10\d8\10 \00\d3\10\d0\10 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10,\00\n\00\d8\10\dc\10\e2\10\d4\10\e0\10\dc\10\d0\10\ea\10\d8\10\dd\10\dc\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10 \00\d3\10\d0\10 \00\da\10\dd\10\d9\10\d0\10\da\10\d8\10\d6\10\d0\10\ea\10\d8\10\d0\10,\00 \00U\00n\00i\00c\00o\00d\00e\00-\00\d8\10\e1\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d0\10\n\00\dd\10\de\10\d4\10\e0\10\d0\10\ea\10\d8\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e1\10\d0\10,\00 \00\d3\10\d0\10 \00\d2\10\d0\10\db\10\dd\10\e7\10\d4\10\dc\10\d4\10\d1\10\d8\10\d7\10 \00\de\10\e0\10\dd\10\d2\10\e0\10\d0\10\db\10\d4\10\d1\10\e8\10\d8\10,\00 \00\e8\10\e0\10\d8\10\e4\10\e2\10\d4\10\d1\10\e8\10\d8\10,\00\n\00\e2\10\d4\10\e5\10\e1\10\e2\10\d4\10\d1\10\d8\10\e1\10 \00\d3\10\d0\10\db\10\e3\10\e8\10\d0\10\d5\10\d4\10\d1\10\d0\10\e1\10\d0\10 \00\d3\10\d0\10 \00\db\10\e0\10\d0\10\d5\10\d0\10\da\10\d4\10\dc\10\dd\10\d5\10\d0\10\dc\10 \00\d9\10\dd\10\db\10\de\10\d8\10\e3\10\e2\10\d4\10\e0\10\e3\10\da\10 \00\e1\10\d8\10\e1\10\e2\10\d4\10\db\10\d4\10\d1\10\e8\10\d8\10.\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00:\00\n\00\n\00F\00r\00o\00m\00 \00a\00 \00U\00n\00i\00c\00o\00d\00e\00 \00c\00o\00n\00f\00e\00r\00e\00n\00c\00e\00 \00i\00n\00v\00i\00t\00a\00t\00i\00o\00n\00:\00\n\00\n\00\17\040\04@\045\043\048\04A\04B\04@\048\04@\04C\049\04B\045\04A\04L\04 \00A\045\049\04G\040\04A\04 \00=\040\04 \00\14\045\04A\04O\04B\04C\04N\04 \00\1c\045\046\044\04C\04=\040\04@\04>\044\04=\04C\04N\04 \00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04N\04 \00?\04>\04\n\00U\00n\00i\00c\00o\00d\00e\00,\00 \00:\04>\04B\04>\04@\040\04O\04 \00A\04>\04A\04B\04>\048\04B\04A\04O\04 \001\000\00-\001\002\00 \00<\040\04@\04B\040\04 \001\009\009\007\00 \003\04>\044\040\04 \002\04 \00\1c\040\049\04=\04F\045\04 \002\04 \00\13\045\04@\04<\040\04=\048\048\04.\00\n\00\1a\04>\04=\04D\045\04@\045\04=\04F\048\04O\04 \00A\04>\041\045\04@\045\04B\04 \00H\048\04@\04>\04:\048\049\04 \00:\04@\04C\043\04 \00M\04:\04A\04?\045\04@\04B\04>\042\04 \00?\04>\04 \00 \002\04>\04?\04@\04>\04A\040\04<\04 \003\04;\04>\041\040\04;\04L\04=\04>\043\04>\04\n\00\18\04=\04B\045\04@\04=\045\04B\040\04 \008\04 \00U\00n\00i\00c\00o\00d\00e\00,\00 \00;\04>\04:\040\04;\048\047\040\04F\048\048\04 \008\04 \008\04=\04B\045\04@\04=\040\04F\048\04>\04=\040\04;\048\047\040\04F\048\048\04,\00 \002\04>\04?\04;\04>\04I\045\04=\048\04N\04 \008\04\n\00?\04@\048\04<\045\04=\045\04=\048\04N\04 \00U\00n\00i\00c\00o\00d\00e\00 \002\04 \00@\040\047\04;\048\04G\04=\04K\04E\04 \00>\04?\045\04@\040\04F\048\04>\04=\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04 \008\04 \00?\04@\04>\043\04@\040\04<\04<\04=\04K\04E\04\n\00?\04@\048\04;\04>\046\045\04=\048\04O\04E\04,\00 \00H\04@\048\04D\04B\040\04E\04,\00 \002\045\04@\04A\04B\04:\045\04 \008\04 \00<\04=\04>\043\04>\04O\047\04K\04G\04=\04K\04E\04 \00:\04>\04<\04?\04L\04N\04B\045\04@\04=\04K\04E\04 \00A\048\04A\04B\045\04<\040\04E\04.\00\n\00\n\00T\00h\00a\00i\00 \00(\00U\00C\00S\00 \00L\00e\00v\00e\00l\00 \002\00)\00:\00\n\00\n\00E\00x\00c\00e\00r\00p\00t\00 \00f\00r\00o\00m\00 \00a\00 \00p\00o\00e\00t\00r\00y\00 \00o\00n\00 \00T\00h\00e\00 \00R\00o\00m\00a\00n\00c\00e\00 \00o\00f\00 \00T\00h\00e\00 \00T\00h\00r\00e\00e\00 \00K\00i\00n\00g\00d\00o\00m\00s\00 \00(\00a\00 \00C\00h\00i\00n\00e\00s\00e\00\n\00c\00l\00a\00s\00s\00i\00c\00 \00\'\00S\00a\00n\00 \00G\00u\00a\00\'\00)\00:\00\n\00\n\00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00A\0e\1c\0eH\0e\19\0e\14\0e4\0e\19\0e.\0e1\0eH\0e\19\0e@\0e*\0e7\0eH\0e-\0e!\0eB\0e\17\0e#\0e!\0eA\0e*\0e\19\0e*\0e1\0e\07\0e@\0e\'\0e\n\0e \00 \00\1e\0e#\0e0\0e\1b\0e\01\0e@\0e\01\0e(\0e\01\0e-\0e\07\0e\1a\0e9\0eJ\0e\01\0e9\0eI\0e\02\0e6\0eI\0e\19\0eC\0e+\0e!\0eH\0e\n\00*\0e4\0e\1a\0e*\0e-\0e\07\0e\01\0e)\0e1\0e\15\0e#\0e4\0e\"\0eL\0e\01\0eH\0e-\0e\19\0e+\0e\19\0eI\0e2\0eA\0e%\0e\16\0e1\0e\14\0eD\0e\1b\0e \00 \00 \00 \00 \00 \00 \00*\0e-\0e\07\0e-\0e\07\0e\04\0eL\0eD\0e\0b\0e#\0eI\0eB\0e\07\0eH\0e@\0e\02\0e%\0e2\0e@\0e\1a\0e2\0e\1b\0e1\0e\0d\0e\0d\0e2\0e\n\00 \00 \00\17\0e#\0e\07\0e\19\0e1\0e\1a\0e\16\0e7\0e-\0e\02\0e1\0e\19\0e\17\0e5\0e@\0e\1b\0eG\0e\19\0e\17\0e5\0eH\0e\1e\0e6\0eH\0e\07\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\1a\0eI\0e2\0e\19\0e@\0e!\0e7\0e-\0e\07\0e\08\0e6\0e\07\0e\'\0e4\0e\1b\0e#\0e4\0e\15\0e@\0e\1b\0eG\0e\19\0e\19\0e1\0e\01\0e+\0e\19\0e2\0e\n\00B\0e.\0e\08\0e4\0eK\0e\19\0e@\0e#\0e5\0e\"\0e\01\0e\17\0e1\0e\1e\0e\17\0e1\0eH\0e\'\0e+\0e1\0e\'\0e@\0e!\0e7\0e-\0e\07\0e!\0e2\0e \00 \00 \00 \00 \00 \00 \00 \00 \00+\0e!\0e2\0e\"\0e\08\0e0\0e\06\0eH\0e2\0e!\0e\14\0e\n\0e1\0eH\0e\'\0e\15\0e1\0e\'\0e*\0e3\0e\04\0e1\0e\0d\0e\n\00 \00 \00@\0e+\0e!\0e7\0e-\0e\19\0e\02\0e1\0e\1a\0eD\0e*\0eD\0e%\0eH\0e@\0e*\0e7\0e-\0e\08\0e2\0e\01\0e@\0e\04\0e+\0e2\0e \00 \00 \00 \00 \00 \00#\0e1\0e\1a\0e+\0e!\0e2\0e\1b\0eH\0e2\0e@\0e\02\0eI\0e2\0e!\0e2\0e@\0e%\0e\"\0e-\0e2\0e*\0e1\0e\0d\0e\n\00\1d\0eH\0e2\0e\"\0e-\0eI\0e-\0e\07\0e-\0e8\0eI\0e\19\0e\"\0e8\0eA\0e\"\0e\01\0eC\0e+\0eI\0eA\0e\15\0e\01\0e\01\0e1\0e\19\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00C\0e\n\0eI\0e*\0e2\0e\'\0e\19\0e1\0eI\0e\19\0e@\0e\1b\0eG\0e\19\0e\n\0e\19\0e\'\0e\19\0e\n\0e7\0eH\0e\19\0e\n\0e\'\0e\19\0eC\0e\08\0e\n\00 \00 \00\1e\0e%\0e1\0e\19\0e%\0e4\0e\t\0e8\0e\"\0e\01\0e8\0e\"\0e\01\0e5\0e\01\0e%\0e1\0e\1a\0e\01\0eH\0e-\0e@\0e+\0e\15\0e8\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\n\0eH\0e2\0e\07\0e-\0e2\0e@\0e\1e\0e(\0e\08\0e#\0e4\0e\07\0e+\0e\19\0e2\0e\1f\0eI\0e2\0e#\0eI\0e-\0e\07\0eD\0e+\0eI\0e\n\00\15\0eI\0e-\0e\07\0e#\0e\1a\0e#\0e2\0e\06\0eH\0e2\0e\1f\0e1\0e\19\0e\08\0e\19\0e\1a\0e#\0e#\0e%\0e1\0e\"\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00$\0eE\0e+\0e2\0eC\0e\04\0e#\0e\04\0eI\0e3\0e\n\0e9\0e\01\0e9\0eI\0e\1a\0e#\0e#\0e%\0e1\0e\07\0e\01\0eL\0e \00/\0e\n\00\n\00(\00T\00h\00e\00 \00a\00b\00o\00v\00e\00 \00i\00s\00 \00a\00 \00t\00w\00o\00-\00c\00o\00l\00u\00m\00n\00 \00t\00e\00x\00t\00.\00 \00I\00f\00 \00c\00o\00m\00b\00i\00n\00i\00n\00g\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00s\00 \00a\00r\00e\00 \00h\00a\00n\00d\00l\00e\00d\00\n\00c\00o\00r\00r\00e\00c\00t\00l\00y\00,\00 \00t\00h\00e\00 \00l\00i\00n\00e\00s\00 \00o\00f\00 \00t\00h\00e\00 \00s\00e\00c\00o\00n\00d\00 \00c\00o\00l\00u\00m\00n\00 \00s\00h\00o\00u\00l\00d\00 \00b\00e\00 \00a\00l\00i\00g\00n\00e\00d\00 \00w\00i\00t\00h\00 \00t\00h\00e\00\n\00|\00 \00c\00h\00a\00r\00a\00c\00t\00e\00r\00 \00a\00b\00o\00v\00e\00.\00)\00\n\00\n\00E\00t\00h\00i\00o\00p\00i\00a\00n\00:\00\n\00\n\00P\00r\00o\00v\00e\00r\00b\00s\00 \00i\00n\00 \00t\00h\00e\00 \00A\00m\00h\00a\00r\00i\00c\00 \00l\00a\00n\00g\00u\00a\00g\00e\00:\00\n\00\n\000\12\1b\12\ed\12 \00\a0\12\ed\12s\12(\125\12 \00\95\12\t\13%\12 \00\a0\12\ed\12\a8\120\125\12b\13\n\00e\12\0b\12 \00\ab\12\08\12\9d\12 \00\a5\12\95\12\f0\12\a0\12c\12t\12 \00`\12F\12\18\12 \13\9d\12b\13\n\00\0c\13%\13 \00\eb\12\08\12d\12q\12 \00A\12\1d\12%\13\93\12 \00\90\12\cd\12b\13\n\00\f0\12\00\12 \00`\12\15\12\0d\12\19\12 \00E\12d\12 \00c\12\ed\12 \13#\13 \00\95\12#\13u\12 \00`\12\08\13\f0\12\08\12\cd\12b\13\n\00\e8\12\a0\12M\13 \00\c8\12\08\12\1d\12s\12 \00`\12E\12d\12 \00\a0\12\ed\12s\12=\12\1d\12b\13\n\00\a0\12\ed\12%\13 \00`\12`\12\0b\12 \00\f3\12\cb\12 \00p\12\18\12s\12b\13\n\002\12p\12(\12\t\13\19\12 \00\ed\12\f0\12(\12\0d\13\19\12b\13\n\00@\125\12 \00`\12@\125\12e\13 \00\d5\12\95\12A\12\0b\12\0d\12 \00`\12\a5\12\0d\13)\12 \00\ed\12\04\12\f3\12\0d\12b\13\n\00\f5\12-\12 \00b\12\eb\12e\12-\12 \00\a0\12\95\12`\123\12 \00\eb\125\12-\12b\13\n\000\12\cd\12 \00\a5\12\95\12\f0\12d\12q\12 \00\a5\12\95\12\05\13 \00\a5\12\95\12\f0\12 \00\t\13(\12d\12q\12 \00\a0\12\ed\12p\12\f3\12\f0\12-\12\1d\12b\13\n\00\a5\12\0d\13\dc\12-\12 \00\e8\12\a8\12H\13p\12\cd\12\95\12 \00\t\13.\12.\12 \003\12\ed\12\d8\12\0b\13\cd\12 \00\a0\12\ed\12\f5\12-\12\1d\12b\13\n\00\e8\12\0e\13(\12d\12u\12 \00\0c\12c\12e\13 \00b\12\eb\12\e9\12u\12 \00\ed\125\12E\12 \00c\12\eb\12\e9\12u\12 \00\eb\12 \13\0d\12E\12b\13\n\00%\12+\12 \00\a8\12\18\12M\13s\12u\12 \00\0d\12\04\13\95\12 \00\0b\12K\13s\12u\12b\13\n\00\d3\12c\12\ed\12 \00\1b\12\f0\12*\12\eb\12 \00\e8\12\08\12\cd\12e\13 \00\0d\13\95\12\f5\12 \00\ed\12\de\12 \00\ed\12\de\12+\12\0d\12b\13\n\00\e8\12\a5\125\12\0b\12\1d\12 \00\a0\12\08\13)\12 \00\18\12\ab\12 \00\e8\12\a0\12\1e\12+\12 \00\a0\12\08\13)\12 \00\cb\12-\12\ab\12b\13\n\00p\12\95\12\0b\13\0e\12 \00b\12p\12I\13 \00p\12\18\12\0d\126\12 \00c\12I\13b\13\n\00\c8\12\f3\12\05\13\05\12 \00\1b\12-\12 \00b\12\06\12\95\12 \00(\13-\125\12\05\12 \00\a0\12u\12\0b\120\12\cd\12b\13\n\00\a5\12\0d\13-\12\05\12\95\12 \00`\12M\13+\12=\12\05\12 \00\0d\12\ad\12 \00\d8\12-\12\0b\13b\13\n\00\n\00R\00u\00n\00e\00s\00:\00\n\00\n\00\bb\16\d6\16 \00\b3\16\b9\16\ab\16\a6\16 \00\a6\16\ab\16\cf\16 \00\bb\16\d6\16 \00\d2\16\a2\16\de\16\d6\16 \00\a9\16\be\16 \00\a6\16\ab\16\d7\16 \00\da\16\aa\16\be\16\de\16\d6\16 \00\be\16\a9\16\b1\16\a6\16\b9\16\d6\16\aa\16\b1\16\de\16\a2\16\d7\16 \00\b9\16\c1\16\a6\16 \00\a6\16\aa\16 \00\b9\16\d6\16\e5\16\ab\16\n\00\n\00(\00O\00l\00d\00 \00E\00n\00g\00l\00i\00s\00h\00,\00 \00w\00h\00i\00c\00h\00 \00t\00r\00a\00n\00s\00c\00r\00i\00b\00e\00d\00 \00i\00n\00t\00o\00 \00L\00a\00t\00i\00n\00 \00r\00e\00a\00d\00s\00 \00\'\00H\00e\00 \00c\00w\00a\00e\00t\00h\00 \00t\00h\00a\00t\00 \00h\00e\00\n\00b\00u\00d\00e\00 \00t\00h\00a\00e\00m\00 \00l\00a\00n\00d\00e\00 \00n\00o\00r\00t\00h\00w\00e\00a\00r\00d\00u\00m\00 \00w\00i\00t\00h\00 \00t\00h\00a\00 \00W\00e\00s\00t\00s\00a\00e\00.\00\'\00 \00a\00n\00d\00 \00m\00e\00a\00n\00s\00 \00\'\00H\00e\00 \00s\00a\00i\00d\00\n\00t\00h\00a\00t\00 \00h\00e\00 \00l\00i\00v\00e\00d\00 \00i\00n\00 \00t\00h\00e\00 \00n\00o\00r\00t\00h\00e\00r\00n\00 \00l\00a\00n\00d\00 \00n\00e\00a\00r\00 \00t\00h\00e\00 \00W\00e\00s\00t\00e\00r\00n\00 \00S\00e\00a\00.\00\'\00)\00\n\00\n\00B\00r\00a\00i\00l\00l\00e\00:\00\n\00\n\00L(\01(\'(\11( \00<(\01(\12( \00 \00M(\1c(\07(\11(9(0(\0e( \00c(\15(\0c(\n\00\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\19(\11(\01(\19(\12( \00\1e(\15( \00\03(\11(\1b(\14( \00:(\n(9(2( \00y(;(\11( \00\n(\0e( \00\1d(\15( \00\19(3(\03(\1e(\n\001(\01(\1e(\11(\'(;( \00\01(\03(3(\1e( \009(\01(\1e(2( \00y(\11( \00\17(\11(\1b(\n(\0c(;( \00\15(\0b( \00\19(\n(\0e( \00\03(%(\17(\n(\01(\07( \00:(\01(\0e(\n\00\0e(\n(\1b(\1d(+( \00\03(9( \009(\11( \00\n(\07(;(\1b(9(\0d(\01(\1d(\02( \009(\11( \00\n(\07(;(\05(\02( \009(\11( \00%(\1d(\19(;(\1e(\01(\05(;(\02(\n\00\01(\1d(\19( \009(\11( \00!(\n(\11(\0b( \00\0d(3(\17(\1d(;(2( \00N(\n(\17(\15(\15(\1b(\11( \00\0e(\n(\1b(\1d(+( \00\n(\1e(2( \00A(\1d(\19(\n\00N(\n(\17(\15(\15(\1b(\11(0(\0e( \00\1d(\01(\0d(\11( \00:(\01(\0e( \00\1b(\15(\15(\19( \00%(\0f(\15(\1d( \000(a(\01(\1d(\1b(\11(\02( \00\0b(\15(\17( \00\01(\1d(9(9(\14(\1b( \00\19(\11(\n\00!(\15(\0e(\11( \00\1e(\15( \00\0f(%(\1e( \00\19(\n(\0e( \00\19(\01(\1d(\19( \00\1e(\15(2(\n\00\n\00U(\07(\19( \00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00M(\14(\19(\16( \00J( \00\19(\15(\1d(0(\1e( \00\0d(\11(\01(\1d( \00\1e(\15( \00\0e(\01(9( \009(\01(\1e( \00J( \00\05(\1d(*(\02( \00\15(\0b( \00\0d(9(\n\00*(\1d( \00\05(\1d(*(\07(+(\1b(\11(\02( \001(\01(\1e( \009(;(\11( \00\n(\0e( \00\0f(\1c(\1e(\n(\n(%(\07(\1c(\07(9( \00\19(\11(\01(\19( \00\01(\03(3(\1e(\n\00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2( \00J( \00\0d(\n(#(\1e( \00\19(\01(\'(\11( \00\03(\11(2( \00\14(\n(\07(\14(+(\02( \00\0d(9(\0e(\11(\07(\0b(\02( \00\1e(\15(\n\00\17(\11(\1b(\1c(\19( \00\01( \00\n(\15(\0b(\0b(\14($(\1d(\01(\n(\07( \00\01(\0e( \009(\11( \00\19(\11(\01(\19(\11(\0c( \00\0f(\n(\11(\n(\11( \00\15(\0b( \00\n(\17(\15(\1d(\0d(\15(\1d(\1b(;(9(\n\00\14( \009(\11( \00\1e(\17(\01(\19(\11(2( \00C(%(\1e( \009(\11( \00:(\n(\0e(\19(\15(\0d( \00\15(\0b( \003(\17( \00\01(\1d(\n(\11(\0c(\15(\17(\0e(\n\00\n(\0e( \00\14( \009(\11( \00\0e(\n(\0d(\n(\07(\11(\06( \00\01(\1d(\19( \00\0d(9( \00%(\1d(\19(\01(\07(\07(*(+( \00\19(\01(\1d(\19(\0e(\n\00)(\01(\07(\07( \00\1d(\15(\1e( \00\19(\n(\0c(%(\17(\03( \00\n(\1e(\02( \00\15(\17( \009(\11( \00J(3(\1d(\1e(\17(9(0(\0e( \00\19(\15(\1d(\11( \00\0b(\15(\17(2( \00y(3(\n\00:(\n(\07(\07( \009(;(\11(\0b(\15(\17(\11( \00\0f(;(\0d(\n(\1e( \00\0d(\11( \00\1e(\15( \00\17(\11(\0f(\11(\01(\1e(\02( \00\11(\0d(\0f(\19(\01(\1e(\n(\n(\01(\07(\07(9(\02( \009(\01(\1e(\n\00M(\1c(\07(\11(9( \00:(\01(\0e( \00\01(\0e( \00\19(\11(\01(\19( \00\01(\0e( \00\01( \00\19(\15(\15(\17($(\1d(\01(\n(\07(2(\n\00\n\00(\00T\00h\00e\00 \00f\00i\00r\00s\00t\00 \00c\00o\00u\00p\00l\00e\00 \00o\00f\00 \00p\00a\00r\00a\00g\00r\00a\00p\00h\00s\00 \00o\00f\00 \00\"\00A\00 \00C\00h\00r\00i\00s\00t\00m\00a\00s\00 \00C\00a\00r\00o\00l\00\"\00 \00b\00y\00 \00D\00i\00c\00k\00e\00n\00s\00)\00\n\00\n\00C\00o\00m\00p\00a\00c\00t\00 \00f\00o\00n\00t\00 \00s\00e\00l\00e\00c\00t\00i\00o\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00t\00e\00x\00t\00:\00\n\00\n\00A\00B\00C\00D\00E\00F\00G\00H\00I\00J\00K\00L\00M\00N\00O\00P\00Q\00R\00S\00T\00U\00V\00W\00X\00Y\00Z\00 \00/\000\001\002\003\004\005\006\007\008\009\00\n\00a\00b\00c\00d\00e\00f\00g\00h\00i\00j\00k\00l\00m\00n\00o\00p\00q\00r\00s\00t\00u\00v\00w\00x\00y\00z\00 \00\a3\00\a9\00\b5\00\c0\00\c6\00\d6\00\de\00\df\00\e9\00\f6\00\ff\00\n\00\13 \14 \18 \1c \1d \1e \" & 0 \"!S\01`\01x\01~\01\ac \00\91\03\92\03\93\03\94\03\a9\03\b1\03\b2\03\b3\03\b4\03\c9\03 \00\10\04\11\04\12\04\13\04\14\040\041\042\043\044\04\n\00\00\"\02\"\08\"\1d!\'\"*\"a\"\1e\" \00\91!\97!\a8!\bb!\e3! \00\10%<%T%X%\91%\ba%:&@& \00\01\fb\fd\ff@$\82 \1f\02\1e\e5\04\84\1eP\02\d0\02N#\d0\051\05\d0\10\n\00\n\00G\00r\00e\00e\00t\00i\00n\00g\00s\00 \00i\00n\00 \00v\00a\00r\00i\00o\00u\00s\00 \00l\00a\00n\00g\00u\00a\00g\00e\00s\00:\00\n\00\n\00H\00e\00l\00l\00o\00 \00w\00o\00r\00l\00d\00,\00 \00\9a\03\b1\03\bb\03\b7\03\bc\03s\1f\c1\03\b1\03 \00\ba\03y\1f\c3\03\bc\03\b5\03,\00 \00\b30\f30\cb0\c10\cf0\n\00\n\00B\00o\00x\00 \00d\00r\00a\00w\00i\00n\00g\00 \00a\00l\00i\00g\00n\00m\00e\00n\00t\00 \00t\00e\00s\00t\00s\00:\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\88%\n\00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\89%\n\00T%P%P%f%P%P%W% \00 \00\0c%\00%\00%,%\00%\00%\10% \00 \00m%\00%\00%,%\00%\00%n% \00 \00m%\00%\00%,%\00%\00%n% \00 \00\0f%\01%\01%3%\01%\01%\13% \00 \00\0e%\12%\0f%\11% \00 \00 \00w% \00 \00{% \00\0f%/%\13% \00\0c%0%\10% \00 \00 \00 \00\8a% \00q%r%q%r%s%s%s%\n\00Q%\0c%\00%h%\00%\10%Q% \00 \00\02%T%P%g%P%W%\02% \00 \00\02%R%P%j%P%U%\02% \00 \00\02%S%\00%A%\00%V%\02% \00 \00\03%\0c%\00%B%\00%\10%\03% \00 \00\17%C%D%\19% \00 \00v%<%t%z%K%x% %<%(% \00\1d%K%%% \00 \00 \00 \00\8b% \00r%q%r%q%s%s%s%\n\00Q%\02%r% \00q%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00\7f% \00\02%\03% \00 \00\0d%E%F%\13% \00 \00 \00u% \00 \00y% \00\17%7%\1b% \00\14%8%\18% \00 \00 \00 \00\8c% \00q%r%q%r%s%s%s%\n\00`%a% \00s% \00^%c% \00 \00\1c%b% \00 \00 \00_%$% \00 \00\1c%<%\00%<%\00%<%$% \00 \00\1c%k%\00%B%\00%k%$% \00 \00#%?%~%<%|%?%+% \00 \00\15%\1b%\16%\1a% \00 \00 \00 \00 \00\0c%\04%\04%\10% \00N% \00\0f%\05%\05%\13% \00\0b% \00\8d% \00r%q%r%q%s%s%s%\n\00Q%\02%q% \00r%\02%Q% \00 \00\02%Q% \00 \00 \00Q%\02% \00 \00\02%\02% \00\02% \00\02%\02% \00 \00\02%Q% \00\03% \00Q%\02% \00 \00\03%\02% \00}% \00\02%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8e%\n\00Q%\14%\00%e%\00%\18%Q% \00 \00\02%Z%P%d%P%]%\02% \00 \00\02%X%P%j%P%[%\02% \00 \00\02%Y%\00%@%\00%\\%\02% \00 \00\03%\14%\00%B%\00%\18%\03% \00 \00\91%\91%\92%\92%\93%\93%\88%\88% \00\n% \00 \00\06% \00N% \00O% \00 \00\07% \00\0b% \00\8f%\n\00Z%P%P%i%P%P%]% \00 \00\14%\00%\00%4%\00%\00%\18% \00 \00p%\00%\00%4%\00%\00%o% \00 \00p%\00%\00%4%\00%\00%o% \00 \00\17%\01%\01%;%\01%\01%\1b% \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00\14%L%L%\18% \00N% \00\17%M%M%\1b% \00\0b% \00 \00\81%\82%\83%\84%\85%\86%\87%\88%\n\00\00\00") + (data (i32.const 13948) "\cc\1c\00\00\00\00\00\00\00\00\00\00\01\00\00\00\ba\1c\00\00S\00e\00n\00t\00e\00n\00c\00e\00s\00 \00t\00h\00a\00t\00 \00c\00o\00n\00t\00a\00i\00n\00 \00a\00l\00l\00 \00l\00e\00t\00t\00e\00r\00s\00 \00c\00o\00m\00m\00o\00n\00l\00y\00 \00u\00s\00e\00d\00 \00i\00n\00 \00a\00 \00l\00a\00n\00g\00u\00a\00g\00e\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00M\00a\00r\00k\00u\00s\00 \00K\00u\00h\00n\00 \00<\00h\00t\00t\00p\00:\00/\00/\00w\00w\00w\00.\00c\00l\00.\00c\00a\00m\00.\00a\00c\00.\00u\00k\00/\00~\00m\00g\00k\002\005\00/\00>\00 \00-\00-\00 \002\000\001\002\00-\000\004\00-\001\001\00\n\00\n\00T\00h\00i\00s\00 \00i\00s\00 \00a\00n\00 \00e\00x\00a\00m\00p\00l\00e\00 \00o\00f\00 \00a\00 \00p\00l\00a\00i\00n\00-\00t\00e\00x\00t\00 \00f\00i\00l\00e\00 \00e\00n\00c\00o\00d\00e\00d\00 \00i\00n\00 \00U\00T\00F\00-\008\00.\00\n\00\n\00\n\00D\00a\00n\00i\00s\00h\00 \00(\00d\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00Q\00u\00i\00z\00d\00e\00l\00t\00a\00g\00e\00r\00n\00e\00 \00s\00p\00i\00s\00t\00e\00 \00j\00o\00r\00d\00b\00\e6\00r\00 \00m\00e\00d\00 \00f\00l\00\f8\00d\00e\00,\00 \00m\00e\00n\00s\00 \00c\00i\00r\00k\00u\00s\00k\00l\00o\00v\00n\00e\00n\00\n\00 \00 \00W\00o\00l\00t\00h\00e\00r\00 \00s\00p\00i\00l\00l\00e\00d\00e\00 \00p\00\e5\00 \00x\00y\00l\00o\00f\00o\00n\00.\00\n\00 \00 \00(\00=\00 \00Q\00u\00i\00z\00 \00c\00o\00n\00t\00e\00s\00t\00a\00n\00t\00s\00 \00w\00e\00r\00e\00 \00e\00a\00t\00i\00n\00g\00 \00s\00t\00r\00a\00w\00b\00e\00r\00y\00 \00w\00i\00t\00h\00 \00c\00r\00e\00a\00m\00 \00w\00h\00i\00l\00e\00 \00W\00o\00l\00t\00h\00e\00r\00\n\00 \00 \00t\00h\00e\00 \00c\00i\00r\00c\00u\00s\00 \00c\00l\00o\00w\00n\00 \00p\00l\00a\00y\00e\00d\00 \00o\00n\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00.\00)\00\n\00\n\00G\00e\00r\00m\00a\00n\00 \00(\00d\00e\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00F\00a\00l\00s\00c\00h\00e\00s\00 \00\dc\00b\00e\00n\00 \00v\00o\00n\00 \00X\00y\00l\00o\00p\00h\00o\00n\00m\00u\00s\00i\00k\00 \00q\00u\00\e4\00l\00t\00 \00j\00e\00d\00e\00n\00 \00g\00r\00\f6\00\df\00e\00r\00e\00n\00 \00Z\00w\00e\00r\00g\00\n\00 \00 \00(\00=\00 \00W\00r\00o\00n\00g\00f\00u\00l\00 \00p\00r\00a\00c\00t\00i\00c\00i\00n\00g\00 \00o\00f\00 \00x\00y\00l\00o\00p\00h\00o\00n\00e\00 \00m\00u\00s\00i\00c\00 \00t\00o\00r\00t\00u\00r\00e\00s\00 \00e\00v\00e\00r\00y\00 \00l\00a\00r\00g\00e\00r\00 \00d\00w\00a\00r\00f\00)\00\n\00\n\00 \00 \00Z\00w\00\f6\00l\00f\00 \00B\00o\00x\00k\00\e4\00m\00p\00f\00e\00r\00 \00j\00a\00g\00t\00e\00n\00 \00E\00v\00a\00 \00q\00u\00e\00r\00 \00\fc\00b\00e\00r\00 \00d\00e\00n\00 \00S\00y\00l\00t\00e\00r\00 \00D\00e\00i\00c\00h\00\n\00 \00 \00(\00=\00 \00T\00w\00e\00l\00v\00e\00 \00b\00o\00x\00i\00n\00g\00 \00f\00i\00g\00h\00t\00e\00r\00s\00 \00h\00u\00n\00t\00e\00d\00 \00E\00v\00a\00 \00a\00c\00r\00o\00s\00s\00 \00t\00h\00e\00 \00d\00i\00k\00e\00 \00o\00f\00 \00S\00y\00l\00t\00)\00\n\00\n\00 \00 \00H\00e\00i\00z\00\f6\00l\00r\00\fc\00c\00k\00s\00t\00o\00\df\00a\00b\00d\00\e4\00m\00p\00f\00u\00n\00g\00\n\00 \00 \00(\00=\00 \00f\00u\00e\00l\00 \00o\00i\00l\00 \00r\00e\00c\00o\00i\00l\00 \00a\00b\00s\00o\00r\00b\00e\00r\00)\00\n\00 \00 \00(\00j\00q\00v\00w\00x\00y\00 \00m\00i\00s\00s\00i\00n\00g\00,\00 \00b\00u\00t\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00i\00n\00 \00o\00n\00e\00 \00w\00o\00r\00d\00)\00\n\00\n\00G\00r\00e\00e\00k\00 \00(\00e\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\93\03\b1\03\b6\03\ad\03\b5\03\c2\03 \00\ba\03\b1\03v\1f \00\bc\03\c5\03\c1\03\c4\03\b9\03r\1f\c2\03 \00\b4\03r\1f\bd\03 \00\b8\03p\1f \00\b2\03\c1\03\f6\1f \00\c0\03\b9\03p\1f \00\c3\03\c4\03x\1f \00\c7\03\c1\03\c5\03\c3\03\b1\03\c6\03v\1f \00\be\03\ad\03\c6\03\c9\03\c4\03\bf\03\n\00 \00 \00(\00=\00 \00N\00o\00 \00m\00o\00r\00e\00 \00s\00h\00a\00l\00l\00 \00I\00 \00s\00e\00e\00 \00a\00c\00a\00c\00i\00a\00s\00 \00o\00r\00 \00m\00y\00r\00t\00l\00e\00s\00 \00i\00n\00 \00t\00h\00e\00 \00g\00o\00l\00d\00e\00n\00 \00c\00l\00e\00a\00r\00i\00n\00g\00)\00\n\00\n\00 \00 \00\9e\03\b5\03\c3\03\ba\03\b5\03\c0\03\ac\03\b6\03\c9\03 \00\c4\03t\1f\bd\03 \00\c8\03\c5\03\c7\03\bf\03\c6\03\b8\03\cc\03\c1\03\b1\03 \00\b2\03\b4\03\b5\03\bb\03\c5\03\b3\03\bc\03\af\03\b1\03\n\00 \00 \00(\00=\00 \00I\00 \00u\00n\00c\00o\00v\00e\00r\00 \00t\00h\00e\00 \00s\00o\00u\00l\00-\00d\00e\00s\00t\00r\00o\00y\00i\00n\00g\00 \00a\00b\00h\00o\00r\00r\00e\00n\00c\00e\00)\00\n\00\n\00E\00n\00g\00l\00i\00s\00h\00 \00(\00e\00n\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00T\00h\00e\00 \00q\00u\00i\00c\00k\00 \00b\00r\00o\00w\00n\00 \00f\00o\00x\00 \00j\00u\00m\00p\00s\00 \00o\00v\00e\00r\00 \00t\00h\00e\00 \00l\00a\00z\00y\00 \00d\00o\00g\00\n\00\n\00S\00p\00a\00n\00i\00s\00h\00 \00(\00e\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00E\00l\00 \00p\00i\00n\00g\00\fc\00i\00n\00o\00 \00W\00e\00n\00c\00e\00s\00l\00a\00o\00 \00h\00i\00z\00o\00 \00k\00i\00l\00\f3\00m\00e\00t\00r\00o\00s\00 \00b\00a\00j\00o\00 \00e\00x\00h\00a\00u\00s\00t\00i\00v\00a\00 \00l\00l\00u\00v\00i\00a\00 \00y\00\n\00 \00 \00f\00r\00\ed\00o\00,\00 \00a\00\f1\00o\00r\00a\00b\00a\00 \00a\00 \00s\00u\00 \00q\00u\00e\00r\00i\00d\00o\00 \00c\00a\00c\00h\00o\00r\00r\00o\00.\00\n\00 \00 \00(\00C\00o\00n\00t\00a\00i\00n\00s\00 \00e\00v\00e\00r\00y\00 \00l\00e\00t\00t\00e\00r\00 \00a\00n\00d\00 \00e\00v\00e\00r\00y\00 \00a\00c\00c\00e\00n\00t\00,\00 \00b\00u\00t\00 \00n\00o\00t\00 \00e\00v\00e\00r\00y\00 \00c\00o\00m\00b\00i\00n\00a\00t\00i\00o\00n\00\n\00 \00 \00o\00f\00 \00v\00o\00w\00e\00l\00 \00+\00 \00a\00c\00u\00t\00e\00.\00)\00\n\00\n\00F\00r\00e\00n\00c\00h\00 \00(\00f\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00o\00r\00t\00e\00z\00 \00c\00e\00 \00v\00i\00e\00u\00x\00 \00w\00h\00i\00s\00k\00y\00 \00a\00u\00 \00j\00u\00g\00e\00 \00b\00l\00o\00n\00d\00 \00q\00u\00i\00 \00f\00u\00m\00e\00 \00s\00u\00r\00 \00s\00o\00n\00 \00\ee\00l\00e\00 \00i\00n\00t\00\e9\00r\00i\00e\00u\00r\00e\00,\00 \00\e0\00\n\00 \00 \00c\00\f4\00t\00\e9\00 \00d\00e\00 \00l\00\'\00a\00l\00c\00\f4\00v\00e\00 \00o\00v\00o\00\ef\00d\00e\00,\00 \00o\00\f9\00 \00l\00e\00s\00 \00b\00\fb\00c\00h\00e\00s\00 \00s\00e\00 \00c\00o\00n\00s\00u\00m\00e\00n\00t\00 \00d\00a\00n\00s\00 \00l\00\'\00\e2\00t\00r\00e\00,\00 \00c\00e\00\n\00 \00 \00q\00u\00i\00 \00l\00u\00i\00 \00p\00e\00r\00m\00e\00t\00 \00d\00e\00 \00p\00e\00n\00s\00e\00r\00 \00\e0\00 \00l\00a\00 \00c\00\e6\00n\00o\00g\00e\00n\00\e8\00s\00e\00 \00d\00e\00 \00l\00\'\00\ea\00t\00r\00e\00 \00d\00o\00n\00t\00 \00i\00l\00 \00e\00s\00t\00 \00q\00u\00e\00s\00t\00i\00o\00n\00\n\00 \00 \00d\00a\00n\00s\00 \00l\00a\00 \00c\00a\00u\00s\00e\00 \00a\00m\00b\00i\00g\00u\00\eb\00 \00e\00n\00t\00e\00n\00d\00u\00e\00 \00\e0\00 \00M\00o\00\ff\00,\00 \00d\00a\00n\00s\00 \00u\00n\00 \00c\00a\00p\00h\00a\00r\00n\00a\00\fc\00m\00 \00q\00u\00i\00,\00\n\00 \00 \00p\00e\00n\00s\00e\00-\00t\00-\00i\00l\00,\00 \00d\00i\00m\00i\00n\00u\00e\00 \00\e7\00\e0\00 \00e\00t\00 \00l\00\e0\00 \00l\00a\00 \00q\00u\00a\00l\00i\00t\00\e9\00 \00d\00e\00 \00s\00o\00n\00 \00S\01u\00v\00r\00e\00.\00\n\00\n\00 \00 \00l\00\'\00\ee\00l\00e\00 \00e\00x\00i\00g\00u\00\eb\00\n\00 \00 \00O\00\f9\00 \00l\00\'\00o\00b\00\e8\00s\00e\00 \00j\00u\00r\00y\00 \00m\00\fb\00r\00\n\00 \00 \00F\00\ea\00t\00e\00 \00l\00\'\00h\00a\00\ef\00 \00v\00o\00l\00a\00p\00\fc\00k\00,\00\n\00 \00 \00\c2\00n\00e\00 \00e\00x\00 \00a\00\e9\00q\00u\00o\00 \00a\00u\00 \00w\00h\00i\00s\00t\00,\00\n\00 \00 \00\d4\00t\00e\00z\00 \00c\00e\00 \00v\00S\01u\00 \00d\00\e9\00\e7\00u\00.\00\n\00\n\00 \00 \00L\00e\00 \00c\00S\01u\00r\00 \00d\00\e9\00\e7\00u\00 \00m\00a\00i\00s\00 \00l\00\'\00\e2\00m\00e\00 \00p\00l\00u\00t\00\f4\00t\00 \00n\00a\00\ef\00v\00e\00,\00 \00L\00o\00u\00\ff\00s\00 \00r\00\ea\00v\00a\00 \00d\00e\00 \00c\00r\00a\00p\00a\00\fc\00t\00e\00r\00 \00e\00n\00\n\00 \00 \00c\00a\00n\00o\00\eb\00 \00a\00u\00 \00d\00e\00l\00\e0\00 \00d\00e\00s\00 \00\ee\00l\00e\00s\00,\00 \00p\00r\00\e8\00s\00 \00d\00u\00 \00m\00\e4\00l\00s\00t\00r\00\f6\00m\00 \00o\00\f9\00 \00b\00r\00\fb\00l\00e\00n\00t\00 \00l\00e\00s\00 \00n\00o\00v\00\e6\00.\00\n\00\n\00I\00r\00i\00s\00h\00 \00G\00a\00e\00l\00i\00c\00 \00(\00g\00a\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00D\00\'\00f\00h\00u\00a\00s\00c\00a\00i\00l\00 \00\cd\00o\00s\00a\00,\00 \00\da\00r\00m\00h\00a\00c\00 \00n\00a\00 \00h\00\d3\00i\00g\00h\00e\00 \00B\00e\00a\00n\00n\00a\00i\00t\00h\00e\00,\00 \00p\00\f3\00r\00 \00\c9\00a\00v\00a\00 \00a\00g\00u\00s\00 \00\c1\00d\00h\00a\00i\00m\00h\00\n\00\n\00H\00u\00n\00g\00a\00r\00i\00a\00n\00 \00(\00h\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\c1\00r\00v\00\ed\00z\00t\00q\01r\00Q\01 \00t\00\fc\00k\00\f6\00r\00f\00\fa\00r\00\f3\00g\00\e9\00p\00\n\00 \00 \00(\00=\00 \00f\00l\00o\00o\00d\00-\00p\00r\00o\00o\00f\00 \00m\00i\00r\00r\00o\00r\00-\00d\00r\00i\00l\00l\00i\00n\00g\00 \00m\00a\00c\00h\00i\00n\00e\00,\00 \00o\00n\00l\00y\00 \00a\00l\00l\00 \00n\00o\00n\00-\00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00)\00\n\00\n\00I\00c\00e\00l\00a\00n\00d\00i\00c\00 \00(\00i\00s\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00K\00\e6\00m\00i\00 \00n\00\fd\00 \00\f6\00x\00i\00 \00h\00\e9\00r\00 \00y\00k\00i\00s\00t\00 \00\fe\00j\00\f3\00f\00u\00m\00 \00n\00\fa\00 \00b\00\e6\00\f0\00i\00 \00v\00\ed\00l\00 \00o\00g\00 \00\e1\00d\00r\00e\00p\00a\00\n\00\n\00 \00 \00S\00\e6\00v\00\f6\00r\00 \00g\00r\00\e9\00t\00 \00\e1\00\f0\00a\00n\00 \00\fe\00v\00\ed\00 \00\fa\00l\00p\00a\00n\00 \00v\00a\00r\00 \00\f3\00n\00\fd\00t\00\n\00 \00 \00(\00s\00o\00m\00e\00 \00A\00S\00C\00I\00I\00 \00l\00e\00t\00t\00e\00r\00s\00 \00m\00i\00s\00s\00i\00n\00g\00)\00\n\00\n\00J\00a\00p\00a\00n\00e\00s\00e\00 \00(\00j\00p\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00H\00i\00r\00a\00g\00a\00n\00a\00:\00 \00(\00I\00r\00o\00h\00a\00)\00\n\00\n\00 \00 \00D0\8d0o0k0{0x0h0a0\8a0l0\8b0\920\n\00 \00 \00\8f0K0\880_0\8c0]0d0m0j0\890\800\n\00 \00 \00F0\900n0J0O0\840~0Q0u0S0H0f0\n\00 \00 \00B0U0M0\860\810\7f0W0\910r0\820[0Y0\n\00\n\00 \00 \00K\00a\00t\00a\00k\00a\00n\00a\00:\00\n\00\n\00 \00 \00\a40\ed0\cf0\cb0\db0\d80\c80 \00\c10\ea0\cc0\eb0\f20 \00\ef0\ab0\e80\bf0\ec0\bd0 \00\c40\cd0\ca0\e90\e00\n\00 \00 \00\a60\f00\ce0\aa0\af0\e40\de0 \00\b10\d50\b30\a80\c60 \00\a20\b50\ad0\e60\e10\df0\b70 \00\f10\d20\e20\bb0\b90\f30\n\00\n\00H\00e\00b\00r\00e\00w\00 \00(\00i\00w\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00?\00 \00\d3\05\d2\05 \00\e1\05\e7\05\e8\05\df\05 \00\e9\05\d8\05 \00\d1\05\d9\05\dd\05 \00\de\05\d0\05\d5\05\db\05\d6\05\d1\05 \00\d5\05\dc\05\e4\05\ea\05\e2\05 \00\de\05\e6\05\d0\05 \00\dc\05\d5\05 \00\d7\05\d1\05\e8\05\d4\05 \00\d0\05\d9\05\da\05 \00\d4\05\e7\05\dc\05\d9\05\d8\05\d4\05\n\00\n\00P\00o\00l\00i\00s\00h\00 \00(\00p\00l\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00c\00h\00n\00\05\01\07\01 \00w\00 \00t\00\19\01 \00B\01\f3\00d\00z\01 \00j\00e\00|\01a\00 \00l\00u\00b\00 \00o\00[\01m\00 \00s\00k\00r\00z\00y\00D\01 \00f\00i\00g\00\n\00 \00 \00(\00=\00 \00T\00o\00 \00p\00u\00s\00h\00 \00a\00 \00h\00e\00d\00g\00e\00h\00o\00g\00 \00o\00r\00 \00e\00i\00g\00h\00t\00 \00b\00i\00n\00s\00 \00o\00f\00 \00f\00i\00g\00s\00 \00i\00n\00 \00t\00h\00i\00s\00 \00b\00o\00a\00t\00)\00\n\00\n\00R\00u\00s\00s\00i\00a\00n\00 \00(\00r\00u\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00\12\04 \00G\040\04I\040\04E\04 \00N\043\040\04 \006\048\04;\04 \001\04K\04 \00F\048\04B\04@\04C\04A\04?\00 \00\14\040\04,\00 \00=\04>\04 \00D\040\04;\04L\04H\048\042\04K\049\04 \00M\04:\047\045\04<\04?\04;\04O\04@\04!\00\n\00 \00 \00(\00=\00 \00W\00o\00u\00l\00d\00 \00a\00 \00c\00i\00t\00r\00u\00s\00 \00l\00i\00v\00e\00 \00i\00n\00 \00t\00h\00e\00 \00b\00u\00s\00h\00e\00s\00 \00o\00f\00 \00s\00o\00u\00t\00h\00?\00 \00Y\00e\00s\00,\00 \00b\00u\00t\00 \00o\00n\00l\00y\00 \00a\00 \00f\00a\00k\00e\00 \00o\00n\00e\00!\00)\00\n\00\n\00 \00 \00!\04J\045\04H\04L\04 \006\045\04 \005\04I\04Q\04 \00M\04B\048\04E\04 \00<\04O\043\04:\048\04E\04 \00D\04@\040\04=\04F\04C\047\04A\04:\048\04E\04 \001\04C\04;\04>\04:\04 \004\040\04 \002\04K\04?\045\049\04 \00G\040\04N\04\n\00 \00 \00(\00=\00 \00E\00a\00t\00 \00s\00o\00m\00e\00 \00m\00o\00r\00e\00 \00o\00f\00 \00t\00h\00e\00s\00e\00 \00f\00r\00e\00s\00h\00 \00F\00r\00e\00n\00c\00h\00 \00l\00o\00a\00f\00s\00 \00a\00n\00d\00 \00h\00a\00v\00e\00 \00s\00o\00m\00e\00 \00t\00e\00a\00)\00\n\00\n\00T\00h\00a\00i\00 \00(\00t\00h\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00[\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00|\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00]\00\n\00 \00 \00O\0e \00@\0e\1b\0eG\0e\19\0e!\0e\19\0e8\0e)\0e\"\0eL\0e*\0e8\0e\14\0e\1b\0e#\0e0\0e@\0e*\0e#\0e4\0e\10\0e@\0e%\0e4\0e(\0e\04\0e8\0e\13\0e\04\0eH\0e2\0e \00 \00\01\0e\'\0eH\0e2\0e\1a\0e#\0e#\0e\14\0e2\0e\1d\0e9\0e\07\0e*\0e1\0e\15\0e\'\0eL\0e@\0e\14\0e#\0e1\0e\08\0e\t\0e2\0e\19\0e\n\00 \00 \00\08\0e\07\0e\1d\0eH\0e2\0e\1f\0e1\0e\19\0e\1e\0e1\0e\12\0e\19\0e2\0e\'\0e4\0e\n\0e2\0e\01\0e2\0e#\0e \00 \00 \00 \00 \00 \00 \00 \00 \00 \00 \00-\0e\"\0eH\0e2\0e%\0eI\0e2\0e\07\0e\1c\0e%\0e2\0e\0d\0e$\0eE\0e@\0e\02\0eH\0e\19\0e\06\0eH\0e2\0e\1a\0e5\0e\11\0e2\0eC\0e\04\0e#\0e\n\00 \00 \00D\0e!\0eH\0e\16\0e7\0e-\0eB\0e\17\0e)\0eB\0e\01\0e#\0e\18\0eA\0e\n\0eH\0e\07\0e\0b\0e1\0e\14\0e.\0e6\0e\14\0e.\0e1\0e\14\0e\14\0eH\0e2\0e \00 \00 \00 \00 \00+\0e1\0e\14\0e-\0e \0e1\0e\"\0e@\0e+\0e!\0e7\0e-\0e\19\0e\01\0e5\0e,\0e2\0e-\0e1\0e\n\0e\0c\0e2\0e*\0e1\0e\"\0e\n\00 \00 \00\1b\0e\0f\0e4\0e\1a\0e1\0e\15\0e4\0e\1b\0e#\0e0\0e\1e\0e$\0e\15\0e4\0e\01\0e\0e\0e\01\0e3\0e+\0e\19\0e\14\0eC\0e\08\0e \00 \00 \00 \00 \00 \00 \00 \00\1e\0e9\0e\14\0e\08\0e2\0eC\0e+\0eI\0e\08\0eJ\0e0\0eF\0e \00\08\0eK\0e2\0eF\0e \00\19\0eH\0e2\0e\1f\0e1\0e\07\0e@\0e-\0e\"\0e \00/\0e\n\00\n\00 \00 \00[\00T\00h\00e\00 \00c\00o\00p\00y\00r\00i\00g\00h\00t\00 \00f\00o\00r\00 \00t\00h\00e\00 \00T\00h\00a\00i\00 \00e\00x\00a\00m\00p\00l\00e\00 \00i\00s\00 \00o\00w\00n\00e\00d\00 \00b\00y\00 \00T\00h\00e\00 \00C\00o\00m\00p\00u\00t\00e\00r\00\n\00 \00 \00A\00s\00s\00o\00c\00i\00a\00t\00i\00o\00n\00 \00o\00f\00 \00T\00h\00a\00i\00l\00a\00n\00d\00 \00u\00n\00d\00e\00r\00 \00t\00h\00e\00 \00R\00o\00y\00a\00l\00 \00P\00a\00t\00r\00o\00n\00a\00g\00e\00 \00o\00f\00 \00H\00i\00s\00 \00M\00a\00j\00e\00s\00t\00y\00 \00t\00h\00e\00\n\00 \00 \00K\00i\00n\00g\00.\00]\00\n\00\n\00T\00u\00r\00k\00i\00s\00h\00 \00(\00t\00r\00)\00\n\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00-\00\n\00\n\00 \00 \00P\00i\00j\00a\00m\00a\00l\001\01 \00h\00a\00s\00t\00a\00,\00 \00y\00a\00\1f\011\01z\00 \00_\01o\00f\00\f6\00r\00e\00 \00\e7\00a\00b\00u\00c\00a\00k\00 \00g\00\fc\00v\00e\00n\00d\00i\00.\00\n\00 \00 \00(\00=\00P\00a\00t\00i\00e\00n\00t\00 \00w\00i\00t\00h\00 \00p\00a\00j\00a\00m\00a\00s\00,\00 \00t\00r\00u\00s\00t\00e\00d\00 \00s\00w\00a\00r\00t\00h\00y\00 \00d\00r\00i\00v\00e\00r\00 \00q\00u\00i\00c\00k\00l\00y\00)\00\n\00\00\00") + (data (i32.const 21328) "\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") (table $0 1 funcref) (global $std/string-encoding/str (mut i32) (i32.const 32)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 21116)) + (global $~lib/rt/__rtti_base i32 (i32.const 21328)) + (global $~lib/memory/__data_end i32 (i32.const 21356)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37740)) + (global $~lib/memory/__heap_base i32 (i32.const 37740)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) + (func $~lib/string/String.UTF16.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 - i32.load offset=4 - local.set $1 local.get $1 - i32.const 268435455 + 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 - local.get $1 - i32.const 1 - i32.add - i32.const 268435455 + ) + (func $~lib/rt/itcms/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 - i32.eqz if + i32.const 1 + drop + local.get $0 + i32.load offset=8 i32.const 0 - i32.const 64 - i32.const 109 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - i32.const 0 - drop + i32.load offset=8 + local.set $2 i32.const 1 drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + local.get $2 i32.eqz if i32.const 0 - i32.const 64 - i32.const 112 - i32.const 14 + 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/pure/__retain (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - global.get $~lib/memory/__heap_base + local.get $1 + i32.load i32.gt_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + 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/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/string/String.UTF16.byteLength (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) (local $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 + i32.load offset=12 local.set $1 - local.get $0 - call $~lib/rt/pure/__release local.get $1 - ) - (func $std/string-encoding/testUTF16Length - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.byteLength - i32.const 12 - i32.eq - i32.eqz - if + 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.const 128 - i32.const 8 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.ne end ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/rt/itcms/Object#linkTo (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) local.get $1 - i32.load - local.set $2 - i32.const 1 - drop + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 local.get $2 - i32.const 1 - i32.and - i32.eqz + 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 - i32.const 0 - i32.const 256 - i32.const 272 - i32.const 14 - call $~lib/builtins/abort - unreachable + 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 $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 + 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) - local.get $3 - i32.const 1073741820 - i32.lt_u + global.get $~lib/rt/itcms/white + i32.eqz else - i32.const 0 + 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 - i32.const 0 - i32.const 256 - i32.const 274 - i32.const 14 - call $~lib/builtins/abort - unreachable + return end - local.get $3 - i32.const 256 - i32.lt_u - if + 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 273 + 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 464 + i32.const 275 + 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 @@ -241,8 +481,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 287 + i32.const 464 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -257,13 +497,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -349,7 +589,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -373,8 +613,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 200 + i32.const 464 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -390,8 +630,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 202 + i32.const 464 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -444,7 +684,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -485,8 +725,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 223 + i32.const 464 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -519,7 +759,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -528,7 +768,7 @@ 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 @@ -550,8 +790,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 238 + i32.const 464 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -568,8 +808,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 239 + i32.const 464 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -627,8 +867,8 @@ i32.eqz if i32.const 0 + i32.const 464 i32.const 256 - i32.const 255 i32.const 14 call $~lib/builtins/abort unreachable @@ -652,15 +892,15 @@ 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 @@ -688,7 +928,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -732,8 +972,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 380 + i32.const 464 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -775,8 +1015,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 387 + i32.const 464 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -808,8 +1048,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 400 + i32.const 464 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -846,13 +1086,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 @@ -863,7 +1103,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 @@ -890,6 +1130,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 @@ -932,7 +1174,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 @@ -1020,235 +1262,563 @@ local.get $3 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/computeSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 12 - i32.le_u + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.const 0 + i32.ne 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 192 - 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 + i32.eqz 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 + i32.const 0 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 + 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 333 - i32.const 14 + i32.const 464 + i32.const 565 + i32.const 3 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 + local.get $1 + ) + (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) i32.const 0 - local.set $7 - local.get $6 + 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.load i32.const 0 - i32.const -1 - i32.xor - local.get $2 - i32.const 1 + 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 - i32.shl - i32.and - local.set $5 - local.get $5 - i32.eqz - if + 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 - local.set $7 - else - local.get $5 - i32.ctz - local.set $2 + 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 - 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 + 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 + 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 + 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 $6 + 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 346 - i32.const 18 + i32.const 192 + i32.const 224 + i32.const 20 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 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 i32.add - i32.load offset=96 - local.set $7 + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 - 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.const 15 i32.add - i32.load offset=96 - local.set $7 + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub 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) + (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 464 + i32.const 462 + 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 464 + i32.const 334 + 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 347 + 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 @@ -1346,8 +1916,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 360 + i32.const 464 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1372,7 +1942,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 @@ -1385,7 +1955,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 @@ -1396,7 +1966,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 @@ -1426,7 +1996,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) @@ -1455,8 +2025,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 498 + i32.const 464 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1475,8 +2045,8 @@ i32.eqz if i32.const 0 - i32.const 256 - i32.const 500 + i32.const 464 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1504,62 +2074,298 @@ 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 192 - i32.const 64 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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/string/String#get:length (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + local.get $1 + i32.store offset=16 ) - (func $~lib/util/memory/memcpy (param $0 i32) (param $1 i32) (param $2 i32) + (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) - loop $while-continue|0 - local.get $2 - if (result i32) - local.get $1 + (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/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 256 + 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/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/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 @@ -2816,261 +3622,18 @@ call $~lib/memory/memory.copy local.get $3 ) - (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String.UTF16.byteLength - i32.const 0 - call $~lib/rt/pure/__new - local.set $1 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $1 - call $~lib/string/String.UTF16.encodeUnsafe - drop - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) (func $~lib/arraybuffer/ArrayBuffer#get:byteLength (param $0 i32) (result i32) local.get $0 i32.const 20 i32.sub i32.load offset=16 ) - (func $std/string-encoding/testUTF16Encode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - local.get $0 - local.set $1 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 12 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 15 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 16 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=1 - i32.const 216 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 17 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=2 - i32.const 55 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 18 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=3 - i32.const 220 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 19 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=4 - i32.const 104 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 20 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=5 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 21 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=6 - i32.const 105 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 22 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=7 - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 23 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=8 - i32.const 82 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 24 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=9 - i32.const 216 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 25 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=10 - i32.const 98 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 26 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load8_u offset=11 - i32.const 223 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 27 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 1 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF16.decode (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - call $~lib/string/String.UTF16.decodeUnsafe - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - ) - (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 $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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 @@ -3157,12 +3720,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 return end local.get $5 @@ -3177,278 +3734,22 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String.UTF8.byteLength (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.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + local.set $2 + local.get $2 local.get $0 - local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/string-encoding/testUTF16Decode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - local.get $0 - call $~lib/string/String.UTF16.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF16DecodeUnsafe - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.encode - local.set $0 - global.get $std/string-encoding/str - call $~lib/string/String.UTF16.byteLength - local.set $1 - local.get $0 - local.set $2 - local.get $2 - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $3 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $4 - global.get $std/string-encoding/str - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $5 - i32.const 352 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 44 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 2 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $6 - i32.const 384 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 45 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 4 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $7 - i32.const 416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 46 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 8 - i32.add - i32.const 4 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $8 - i32.const 448 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 12 - i32.add - i32.const 0 - call $~lib/string/String.UTF16.decodeUnsafe - local.tee $9 - i32.const 320 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.UTF8.byteLength (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.set $0 - local.get $0 - local.set $2 - local.get $2 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.add - local.set $3 + i32.const 20 + i32.sub + i32.load offset=16 + i32.add + local.set $3 local.get $1 i32.const 0 i32.ne @@ -3537,40 +3838,6 @@ end end local.get $4 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - ) - (func $std/string-encoding/testUTF8Length - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.byteLength - i32.const 10 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 55 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 11 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 56 - i32.const 3 - call $~lib/builtins/abort - unreachable - end ) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) @@ -3788,102 +4055,336 @@ local.get $2 i32.sub ) - (func $~lib/string/String.UTF8.encode (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/string/String.UTF8.byteLength - i32.const 0 - call $~lib/rt/pure/__new + i32.const 20 + i32.sub local.set $2 - local.get $0 - local.get $0 - call $~lib/string/String#get:length - local.get $2 local.get $1 - call $~lib/string/String.UTF8.encodeUnsafe - drop local.get $2 - call $~lib/rt/pure/__retain - local.set $3 + 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 - call $~lib/rt/pure/__release + 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 $std/string-encoding/testUTF8Encode + (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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) global.get $std/string-encoding/str + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 320 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 128 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (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 $~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 $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + unreachable + ) + (func $~start + call $start:std/string-encoding + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 37760 + i32.const 37808 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $std/string-encoding/testUTF16Length + (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 - call $~lib/string/String.UTF8.encode + i32.store + global.get $std/string-encoding/str local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/string/String.UTF16.byteLength + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.encode (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String.UTF16.byteLength + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + local.get $1 + call $~lib/string/String.UTF16.encodeUnsafe + drop + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/string-encoding/testUTF16Encode + (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 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 local.get $0 local.set $1 local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 10 + i32.const 12 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 63 + i32.const 64 + i32.const 15 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u - i32.const 240 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 128 i32.const 64 + i32.const 16 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=1 - i32.const 144 + i32.const 216 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 65 + i32.const 64 + i32.const 17 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=2 - i32.const 144 + i32.const 55 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 66 + i32.const 64 + i32.const 18 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=3 - i32.const 183 + i32.const 220 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 67 + i32.const 64 + i32.const 19 i32.const 3 call $~lib/builtins/abort unreachable @@ -3895,1299 +4396,1962 @@ i32.eqz if i32.const 0 - i32.const 128 - i32.const 68 + i32.const 64 + i32.const 20 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=5 - i32.const 105 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 69 + i32.const 64 + i32.const 21 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=6 - i32.const 240 + i32.const 105 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 70 + i32.const 64 + i32.const 22 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=7 - i32.const 164 + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 71 + i32.const 64 + i32.const 23 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=8 - i32.const 173 + i32.const 82 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 72 + i32.const 64 + i32.const 24 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load8_u offset=9 - i32.const 162 + i32.const 216 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 73 + i32.const 64 + i32.const 25 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8EncodeNullTerminated - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - local.set $1 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 11 + local.get $1 + i32.load8_u offset=10 + i32.const 98 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 80 + i32.const 64 + i32.const 26 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.load8_u - i32.const 240 + i32.load8_u offset=11 + i32.const 223 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 81 + i32.const 64 + i32.const 27 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decode (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 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + call $~lib/string/String.UTF16.decodeUnsafe + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 local.get $1 - i32.load8_u offset=1 - i32.const 144 i32.eq - i32.eqz + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 - i32.const 128 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 local.get $1 - i32.load8_u offset=2 - i32.const 144 - i32.eq - i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne if i32.const 0 - i32.const 128 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 local.get $1 - i32.load8_u offset=3 - i32.const 183 - i32.eq + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $std/string-encoding/testUTF16Decode + (local $0 i32) + (local $1 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 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/string/String.UTF16.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 84 + i32.const 64 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=4 - i32.const 104 - i32.eq + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF16DecodeUnsafe + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.encode + local.tee $0 + i32.store offset=4 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.byteLength + local.set $1 + local.get $0 + local.set $2 + local.get $2 + i32.const 0 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 85 + i32.const 64 + i32.const 42 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $2 local.get $1 - i32.load8_u offset=5 - i32.const 105 - i32.eq + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 86 + i32.const 64 + i32.const 43 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=6 - i32.const 240 - i32.eq + local.get $2 + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 560 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 87 + i32.const 64 + i32.const 44 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=7 - i32.const 164 - i32.eq + local.get $2 + i32.const 4 + i32.add + i32.const 2 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 592 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 88 + i32.const 64 + i32.const 45 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=8 - i32.const 173 - i32.eq + local.get $2 + i32.const 4 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 624 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 89 + i32.const 64 + i32.const 46 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=9 - i32.const 162 - i32.eq + local.get $2 + i32.const 8 + i32.add + i32.const 4 + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 90 + i32.const 64 + i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load8_u offset=10 + local.get $2 + i32.const 12 + i32.add i32.const 0 - i32.eq + call $~lib/string/String.UTF16.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 91 + i32.const 64 + i32.const 48 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 + (func $std/string-encoding/testUTF8Length + (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - local.set $1 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/string-encoding/str + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 + call $~lib/string/String.UTF8.byteLength + i32.const 10 + i32.eq + i32.eqz + if i32.const 0 + i32.const 64 + i32.const 55 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $std/string-encoding/str + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 11 + i32.eq i32.eqz if i32.const 0 - i32.const 256 - i32.const 563 + i32.const 64 + i32.const 56 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or + (func $~lib/string/String.UTF8.encode (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store + local.get $3 + local.get $1 + call $~lib/string/String.UTF8.byteLength i32.const 0 - drop + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 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 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 4 - i32.add + i32.store + local.get $3 + call $~lib/string/String#get:length + local.get $2 local.get $1 - i32.const 4 + call $~lib/string/String.UTF8.encodeUnsafe + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer 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) + (func $std/string-encoding/testUTF8Encode + (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 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str + local.set $2 + global.get $~lib/memory/__stack_pointer 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 + i32.store + local.get $2 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 10 + i32.eq + i32.eqz if - local.get $0 - local.get $1 - local.get $3 - call $~lib/rt/tlsf/prepareBlock i32.const 0 - drop - local.get $1 - return + i32.const 64 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + i32.load8_u + i32.const 240 + i32.eq + i32.eqz if - local.get $5 - i32.const 4 - i32.add - local.get $8 + i32.const 0 + i32.const 64 + i32.const 64 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 + call $~lib/builtins/abort + unreachable 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.load8_u offset=1 + i32.const 144 + i32.eq i32.eqz if - call $~lib/rt/tlsf/initialize + i32.const 0 + i32.const 64 + i32.const 65 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + local.get $1 + i32.load8_u offset=2 + i32.const 144 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 66 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + i32.load8_u offset=3 + i32.const 183 + i32.eq + i32.eqz if - i32.const 192 + i32.const 0 i32.const 64 - i32.const 288 - i32.const 30 + i32.const 67 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=4 + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 68 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=5 + i32.const 105 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=6 + i32.const 240 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 70 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=7 + i32.const 164 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 71 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load8_u offset=8 + i32.const 173 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 72 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 16 - i32.sub - i32.const 16 local.get $1 + i32.load8_u offset=9 + i32.const 162 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 73 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - call $~lib/rt/tlsf/__realloc + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8EncodeNullTerminated + (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 + global.get $~lib/memory/__stack_pointer + global.get $std/string-encoding/str local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 4 - i32.sub - local.get $1 - i32.store offset=16 + i32.store local.get $2 - i32.const 16 - i32.add - ) - (func $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + i32.const 1 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 local.get $0 - local.set $3 + local.set $1 local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 11 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 80 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.add - local.set $4 - local.get $4 - local.get $3 - i32.ge_u + i32.load8_u + i32.const 240 + i32.eq i32.eqz if i32.const 0 - i32.const 480 - i32.const 742 - i32.const 7 + i32.const 64 + i32.const 81 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $5 - local.get $5 - local.set $6 - block $while-break|0 - loop $while-continue|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $7 - local.get $7 - if - local.get $3 - i32.load8_u - local.set $8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 128 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.eqz - i32.and - if - br $while-break|0 - end - local.get $6 - local.get $8 - i32.store16 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $9 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 224 - i32.and - i32.const 192 - i32.eq - if - local.get $6 - local.get $8 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $9 - i32.or - i32.store16 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $3 - i32.load8_u - i32.const 63 - i32.and - local.set $10 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $8 - i32.const 240 - i32.and - i32.const 224 - i32.eq - if - local.get $8 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $9 - i32.const 6 - i32.shl - i32.or - local.get $10 - i32.or - local.set $8 - else - local.get $4 - local.get $3 - i32.eq - if - br $while-break|0 - end - local.get $8 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $9 - i32.const 12 - i32.shl - i32.or - local.get $10 - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.or - local.set $8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - end - local.get $8 - i32.const 65536 - i32.lt_u - if - local.get $6 - local.get $8 - i32.store16 - else - local.get $8 - i32.const 65536 - i32.sub - local.set $8 - local.get $8 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - local.set $11 - local.get $8 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - local.set $12 - local.get $6 - local.get $11 - local.get $12 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $6 - i32.const 2 - i32.add - local.set $6 - end - end - end - local.get $6 - i32.const 2 - i32.add - local.set $6 - br $while-continue|0 - end - end - end - local.get $5 - local.get $6 - local.get $5 - i32.sub - call $~lib/rt/pure/__renew - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String.UTF8.decode (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.get $1 - call $~lib/string/String.UTF8.decodeUnsafe - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/string-encoding/testUTF8Decode - (local $0 i32) - (local $1 i32) - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq + i32.load8_u offset=1 + i32.const 144 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 97 + i32.const 64 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeNullTerminated - (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 $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - local.get $0 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $1 - global.get $std/string-encoding/str - call $~lib/string/String.__eq + i32.load8_u offset=2 + i32.const 144 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 103 + i32.const 64 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 528 - local.set $2 - local.get $2 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 + local.get $1 + i32.load8_u offset=3 + i32.const 183 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 105 + i32.const 64 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - i32.const 4 + local.get $1 + i32.load8_u offset=4 + i32.const 104 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 107 + i32.const 64 + i32.const 85 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 576 - local.set $4 - local.get $4 - i32.const 1 - call $~lib/string/String.UTF8.byteLength - i32.const 4 + local.get $1 + i32.load8_u offset=5 + i32.const 105 i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 109 + i32.const 64 + i32.const 86 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $5 - local.get $4 - call $~lib/string/String.__eq + local.get $1 + i32.load8_u offset=6 + i32.const 240 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 110 + i32.const 64 + i32.const 87 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - call $~lib/string/String.UTF8.encode - local.set $6 - local.get $6 - i32.const 1 - call $~lib/string/String.UTF8.decode - local.tee $7 - local.get $4 - call $~lib/string/String.__eq + local.get $1 + i32.load8_u offset=7 + i32.const 164 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 112 + i32.const 64 + i32.const 88 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $std/string-encoding/testUTF8DecodeUnsafe - (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) - global.get $std/string-encoding/str - i32.const 1 - call $~lib/string/String.UTF8.encode - local.set $0 - global.get $std/string-encoding/str - i32.const 0 - call $~lib/string/String.UTF8.byteLength - local.set $1 - local.get $0 - local.set $2 - local.get $2 - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $3 - i32.const 320 - call $~lib/string/String.__eq + i32.load8_u offset=8 + i32.const 173 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 121 + i32.const 64 + i32.const 89 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 local.get $1 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $4 - global.get $std/string-encoding/str - call $~lib/string/String.__eq + i32.load8_u offset=9 + i32.const 162 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 122 + i32.const 64 + i32.const 90 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 4 + local.get $1 + i32.load8_u offset=10 i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $5 - i32.const 352 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 123 + i32.const 64 + i32.const 91 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.const 2 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF8.decode (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 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $6 - i32.const 416 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + local.get $0 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 6 - i32.add + i32.store + local.get $2 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.get $1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $2 + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/string-encoding/testUTF8Decode + (local $0 i32) + (local $1 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 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $7 - i32.const 448 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + global.get $std/string-encoding/str + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 125 + i32.const 64 + i32.const 97 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - i32.const 0 - i32.const 0 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $8 - i32.const 320 + global.set $~lib/memory/__stack_pointer + ) + (func $std/string-encoding/testUTF8DecodeNullTerminated + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + 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 + global.get $std/string-encoding/str + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.tee $0 + i32.store offset=4 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + global.get $std/string-encoding/str + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 126 + i32.const 64 + i32.const 103 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 4 - i32.add - i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 736 + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $9 - i32.const 608 - call $~lib/string/String.__eq + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 128 + i32.const 64 + i32.const 105 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 6 - i32.add - i32.const 100 - i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $10 - i32.const 448 - call $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.encode + local.tee $2 + i32.store offset=20 + local.get $2 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 129 + i32.const 64 + i32.const 107 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 784 + local.tee $3 + i32.store offset=24 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.byteLength + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 109 i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - i32.const 10 - i32.add - i32.const 100 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 i32.const 1 - call $~lib/string/String.UTF8.decodeUnsafe - local.tee $11 - i32.const 320 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 130 + i32.const 64 + i32.const 110 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $4 + i32.store offset=28 local.get $4 - call $~lib/rt/pure/__release + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + i32.store offset=12 + local.get $5 + i32.const 1 + call $~lib/string/String.UTF8.decode + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 112 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/string-encoding/testLarge (param $0 i32) + (func $std/string-encoding/testUTF8DecodeUnsafe + (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 + 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 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 1 call $~lib/string/String.UTF8.encode - local.set $1 - local.get $1 + local.tee $0 + i32.store offset=4 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 i32.const 0 - call $~lib/string/String.UTF8.decode - local.tee $2 + call $~lib/string/String.UTF8.byteLength + local.set $1 local.get $0 + local.set $2 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 136 + i32.const 64 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/string/String.UTF16.encode + local.get $2 + local.get $1 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + global.get $std/string-encoding/str + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $3 - call $~lib/string/String.UTF16.decode - local.tee $4 - local.get $0 call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 128 - i32.const 138 + i32.const 64 + i32.const 122 i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $start:std/string-encoding - call $std/string-encoding/testUTF16Length - call $std/string-encoding/testUTF16Encode - call $std/string-encoding/testUTF16Decode - call $std/string-encoding/testUTF16DecodeUnsafe - call $std/string-encoding/testUTF8Length - call $std/string-encoding/testUTF8Encode - call $std/string-encoding/testUTF8EncodeNullTerminated - call $std/string-encoding/testUTF8Decode - call $std/string-encoding/testUTF8DecodeNullTerminated - call $std/string-encoding/testUTF8DecodeUnsafe - i32.const 640 - call $std/string-encoding/testLarge - i32.const 13760 - call $std/string-encoding/testLarge - ) - (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) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and - local.set $2 + i32.const 4 i32.const 0 - drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 560 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 64 - i32.const 122 - i32.const 14 + i32.const 123 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - i32.const 1 - i32.eq + i32.const 4 + i32.add + i32.const 2 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 624 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 64 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 + i32.const 64 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable end - ) - (func $~start - call $start:std/string-encoding - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u + local.get $2 + i32.const 6 + i32.add + i32.const 4 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz if - return + i32.const 0 + i32.const 64 + i32.const 125 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 10 + i32.add + i32.const 0 + i32.const 0 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $2 + i32.const 4 + i32.add + i32.const 100 i32.const 1 - drop + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 816 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 128 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 6 + i32.add + i32.const 100 i32.const 1 - drop - local.get $1 + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 656 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 129 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 10 + i32.add + i32.const 100 i32.const 1 - i32.eq + call $~lib/string/String.UTF8.decodeUnsafe + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 64 - i32.const 69 - i32.const 16 + i32.const 130 + i32.const 3 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $std/string-encoding/testLarge (param $0 i32) + (local $1 i32) (local $2 i32) + (local $3 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 local.get $0 - i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + call $~lib/string/String.UTF8.encode + local.tee $1 + i32.store offset=4 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 0 + call $~lib/string/String.UTF8.decode + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String.UTF16.encode local.tee $2 + i32.store offset=16 + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $~lib/string/String.UTF16.decode + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 0 + i32.const 64 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) - 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 $invalid - end - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBuffer~visit - return + (func $start:std/string-encoding + (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 + call $std/string-encoding/testUTF16Length + 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 $std/string-encoding/testUTF16Encode + call $std/string-encoding/testUTF16Decode + call $std/string-encoding/testUTF16DecodeUnsafe + call $std/string-encoding/testUTF8Length + call $std/string-encoding/testUTF8Encode + call $std/string-encoding/testUTF8EncodeNullTerminated + call $std/string-encoding/testUTF8Decode + call $std/string-encoding/testUTF8DecodeNullTerminated + call $std/string-encoding/testUTF8DecodeUnsafe + i32.const 848 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/string-encoding/testLarge + i32.const 13968 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $std/string-encoding/testLarge + call $~lib/rt/itcms/__collect + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.UTF16.decodeUnsafe (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (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 + local.get $1 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/memory/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 $~lib/string/String.UTF8.decodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (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 + i32.const 0 + i32.store + local.get $0 + local.set $3 + local.get $0 + local.get $1 + i32.add + local.set $4 + local.get $4 + local.get $3 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 688 + i32.const 740 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store + local.get $5 + local.set $6 + block $while-break|0 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $3 + i32.load8_u + local.set $8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 128 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.eqz + i32.and + if + br $while-break|0 + end + local.get $6 + local.get $8 + i32.store16 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $9 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 224 + i32.and + i32.const 192 + i32.eq + if + local.get $6 + local.get $8 + i32.const 31 + i32.and + i32.const 6 + i32.shl + local.get $9 + i32.or + i32.store16 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $3 + i32.load8_u + i32.const 63 + i32.and + local.set $10 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $8 + i32.const 240 + i32.and + i32.const 224 + i32.eq + if + local.get $8 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $9 + i32.const 6 + i32.shl + i32.or + local.get $10 + i32.or + local.set $8 + else + local.get $4 + local.get $3 + i32.eq + if + br $while-break|0 + end + local.get $8 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $9 + i32.const 12 + i32.shl + i32.or + local.get $10 + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.or + local.set $8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + end + local.get $8 + i32.const 65536 + i32.lt_u + if + local.get $6 + local.get $8 + i32.store16 + else + local.get $8 + i32.const 65536 + i32.sub + local.set $8 + local.get $8 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $11 + local.get $8 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $12 + local.get $6 + local.get $11 + local.get $12 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $6 + i32.const 2 + i32.add + local.set $6 + end + end + end + local.get $6 + i32.const 2 + i32.add + local.set $6 + br $while-continue|0 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 - unreachable + local.get $5 + local.get $6 + local.get $5 + i32.sub + call $~lib/rt/itcms/__renew + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) ) diff --git a/tests/compiler/std/string.json b/tests/compiler/std/string.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/string.json +++ b/tests/compiler/std/string.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index d462213253..0b135e24b6 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -6,6 +6,7 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (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_i64_i32_=>_none (func (param i32 i64 i32))) @@ -13,451 +14,895 @@ (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i64_i32_i64_i32_i64_i32_=>_i32 (func (param i64 i32 i64 i32 i64 i32) (result i32))) - (type $i32_=>_i64 (func (param i32) (result i64))) + (type $none_=>_i64 (func (result i64))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (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\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g") - (data (i32.const 1100) ",\00\00\00\01\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\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df") - (data (i32.const 1180) "<\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 1244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\df\00\df") - (data (i32.const 1276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b") - (data (i32.const 1308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02") - (data (i32.const 1372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00a") - (data (i32.const 1404) "<\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 1468) "<\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 1532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006") - (data (i32.const 1564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df") - (data (i32.const 1596) ",\00\00\00\01\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 1644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\d8\06\df") - (data (i32.const 1676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i") - (data (i32.const 1708) "\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 1740) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1772) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m") - (data (i32.const 1804) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00 ") - (data (i32.const 1836) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00 \00 ") - (data (i32.const 1868) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") - (data (i32.const 1900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c") - (data (i32.const 1932) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c") - (data (i32.const 1996) ",\00\00\00\01\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 2044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 ") - (data (i32.const 2076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c") - (data (i32.const 2108) ",\00\00\00\01\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 2156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 2188) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00x") - (data (i32.const 2220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00,\00 \00I") - (data (i32.const 2252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00g") - (data (i32.const 2284) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00i") - (data (i32.const 2316) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00d") - (data (i32.const 2348) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d") - (data (i32.const 2380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c") - (data (i32.const 2412) ",\00\00\00\01\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 2460) ",\00\00\00\01\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 2508) ",\00\00\00\01\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 2556) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 2588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\000") - (data (i32.const 2620) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 2652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001") - (data (i32.const 2684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001") - (data (i32.const 2716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007") - (data (i32.const 2748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f") - (data (i32.const 2780) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F") - (data (i32.const 2812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\001\001") - (data (i32.const 2844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g") - (data (i32.const 2876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\001\002\003") - (data (i32.const 2908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\001\002\003") - (data (i32.const 2940) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003") - (data (i32.const 2972) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\000") - (data (i32.const 3004) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00b\001\001") - (data (i32.const 3036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\n\001") - (data (i32.const 3068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00( 1") - (data (i32.const 3100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00) 1") - (data (i32.const 3132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\000") - (data (i32.const 3164) ",\00\00\00\01\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 3212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F") - (data (i32.const 3244) "<\00\00\00\01\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 3308) "L\00\00\00\01\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 3388) "<\00\00\00\01\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 3452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd") - (data (i32.const 3484) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m") - (data (i32.const 3532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001") - (data (i32.const 3564) ",\00\00\00\01\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 3612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00-") - (data (i32.const 3644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00+") - (data (i32.const 3676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd") - (data (i32.const 3708) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m") - (data (i32.const 3740) ",\00\00\00\01\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 3788) "<\00\00\00\01\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 3862) "\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 4044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00.") - (data (i32.const 4076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\000\000") - (data (i32.const 4108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005") - (data (i32.const 4140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005") - (data (i32.const 4172) ",\00\00\00\01\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 4220) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002") - (data (i32.const 4268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001") - (data (i32.const 4300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000") - (data (i32.const 4332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\001") - (data (i32.const 4364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\002\005") - (data (i32.const 4396) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a") - (data (i32.const 4428) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000") - (data (i32.const 4476) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000") - (data (i32.const 4524) ",\00\00\00\01\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 4572) ",\00\00\00\01\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 4620) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008") - (data (i32.const 4652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009") - (data (i32.const 4684) ",\00\00\00\01\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 4732) ",\00\00\00\01\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 4780) ",\00\00\00\01\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 4828) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\000") - (data (i32.const 4860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\001") - (data (i32.const 4892) ",\00\00\00\01\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 4940) ",\00\00\00\01\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 4988) ",\00\00\00\01\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 5036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000") - (data (i32.const 5068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\006\000") - (data (i32.const 5100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00.\004\00e") - (data (i32.const 5132) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000") - (data (i32.const 5180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00x") - (data (i32.const 5212) ",\00\00\00\01\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 5260) ",\00\00\00\01\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 5308) ",\00\00\00\01\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 5356) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001") - (data (i32.const 5404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001") - (data (i32.const 5436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\005") - (data (i32.const 5468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\00D") - (data (i32.const 5500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001") - (data (i32.const 5532) "\1c\00\00\00\01\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 5564) "\1c\00\00\00\01\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 5596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001") - (data (i32.const 5628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001") - (data (i32.const 5660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000") - (data (i32.const 5692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a") - (data (i32.const 5724) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001") - (data (i32.const 5756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000") - (data (i32.const 5788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a") - (data (i32.const 5820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e") - (data (i32.const 5852) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001") - (data (i32.const 5900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000") - (data (i32.const 5932) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.") - (data (i32.const 5964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002") - (data (i32.const 5996) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00e\00x") - (data (i32.const 6028) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x") - (data (i32.const 6060) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x") - (data (i32.const 6092) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x") - (data (i32.const 6124) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x") - (data (i32.const 6172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\00.") - (data (i32.const 6204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\000") - (data (i32.const 6236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\00.") - (data (i32.const 6268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\001\00.") - (data (i32.const 6300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00.") - (data (i32.const 6332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00a") - (data (i32.const 6364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001") - (data (i32.const 6396) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001") - (data (i32.const 6428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001") - (data (i32.const 6460) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000") - (data (i32.const 6492) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000") - (data (i32.const 6524) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\000") - (data (i32.const 6556) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\000") - (data (i32.const 6588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\000") - (data (i32.const 6620) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00a") - (data (i32.const 6652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\00.\000") - (data (i32.const 6684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00.") - (data (i32.const 6716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00.") - (data (i32.const 6748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 6780) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0b") - (data (i32.const 6812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0e\18") - (data (i32.const 6844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001") - (data (i32.const 6876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001") - (data (i32.const 6908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0c") - (data (i32.const 6940) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00t\00r\00u\00e") - (data (i32.const 6972) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00f\00a\00l\00s\00e") - (data (i32.const 7004) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\002") - (data (i32.const 7036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002") - (data (i32.const 7068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\003") - (data (i32.const 7100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003") - (data (i32.const 7132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\007") - (data (i32.const 7164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007") - (data (i32.const 7196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\008") - (data (i32.const 7228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008") - (data (i32.const 7260) "<\00\00\00\01\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 7324) "L\00\00\00\01\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 7404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004") - (data (i32.const 7436) ",\00\00\00\01\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 7484) "\8c\00\00\00\01\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 7628) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005") - (data (i32.const 7676) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009") - (data (i32.const 7724) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005") - (data (i32.const 7772) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009") - (data (i32.const 7820) ",\00\00\00\01\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 7868) ",\00\00\00\01\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 7916) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000") - (data (i32.const 7948) ",\00\00\00\01\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 7996) ",\00\00\00\01\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 8044) ",\00\00\00\01\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 8092) ",\00\00\00\01\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 8140) ",\00\00\00\01\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 8188) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i") - (data (i32.const 8220) ",\00\00\00\01\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 8268) ",\00\00\00\01\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 8316) "\bc\00\00\00\01\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 8508) "\bc\00\00\00\01\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 8700) "\bc\00\00\00\01\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 8892) "\9c\00\00\00\01\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 9052) "\9c\00\00\00\01\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 9212) "\9c\00\00\00\01\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 9372) "\9c\00\00\00\01\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 9532) "\9c\00\00\00\01\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 9692) "l\00\00\00\01\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 9804) "l\00\00\00\01\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 9916) "l\00\00\00\01\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 10028) "l\00\00\00\01\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 10140) "l\00\00\00\01\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 10252) "l\00\00\00\01\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 10364) "l\00\00\00\01\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 10476) "l\00\00\00\01\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 10588) "l\00\00\00\01\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 10700) "l\00\00\00\01\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 10812) "l\00\00\00\01\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 10924) "l\00\00\00\01\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 11036) "l\00\00\00\01\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 11148) "l\00\00\00\01\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 11260) "l\00\00\00\01\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 11372) "l\00\00\00\01\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 11484) "l\00\00\00\01\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 11596) "l\00\00\00\01\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 11708) "l\00\00\00\01\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 11820) "l\00\00\00\01\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 11932) "l\00\00\00\01\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 12044) "l\00\00\00\01\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 12156) "l\00\00\00\01\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 12268) "l\00\00\00\01\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 12380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n") - (data (i32.const 12412) "\1c\00\00\00\01\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 12444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00b") - (data (i32.const 12476) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b") - (data (i32.const 12508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001") - (data (i32.const 12540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002") - (data (i32.const 12572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\001") - (data (i32.const 12604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\002") - (data (i32.const 12636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002") - (data (i32.const 12668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001") - (data (i32.const 12700) ",\00\00\00\01\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 12748) ",\00\00\00\01\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 12796) ",\00\00\00\01\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 12844) ",\00\00\00\01\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 12892) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a") - (data (i32.const 12924) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00a") - (data (i32.const 12956) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\000") - (data (i32.const 12988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001") - (data (i32.const 13020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\000\001") - (data (i32.const 13052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\002") - (data (i32.const 13084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004") - (data (i32.const 13116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\003") - (data (i32.const 13148) ",\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 13196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00a\00a") - (data (i32.const 13228) ",\00\00\00\01\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 13276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a") - (data (i32.const 13308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a") - (data (i32.const 13340) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a") - (data (i32.const 13388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c") - (data (i32.const 13420) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c") - (data (i32.const 13452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c") - (data (i32.const 13484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c") - (data (i32.const 13516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n") - (data (i32.const 13548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c") - (data (i32.const 13580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\00+") - (data (i32.const 13612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+") - (data (i32.const 13644) ",\00\00\00\01\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 13692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00+") - (data (i32.const 13724) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a") - (data (i32.const 13772) ",\00\00\00\01\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 13820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c") - (data (i32.const 13852) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c") - (data (i32.const 13884) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c") - (data (i32.const 13916) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+") - (data (i32.const 13948) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00e") - (data (i32.const 13980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00c") - (data (i32.const 14012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00+") - (data (i32.const 14044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c") - (data (i32.const 14076) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+") - (data (i32.const 14124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00d\00e") - (data (i32.const 14156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00-") - (data (i32.const 14188) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e") - (data (i32.const 14236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\00-\00-\00-\00-") - (data (i32.const 14268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00-") - (data (i32.const 14300) ",\00\00\00\01\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 14348) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00a") - (data (i32.const 14380) ",\00\00\00\01\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 14428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00n") - (data (i32.const 14460) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n") - (data (i32.const 14492) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g") - (data (i32.const 14524) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h") - (data (i32.const 14556) ",\00\00\00\01\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 14604) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i") - (data (i32.const 14652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00e\00f\00g") - (data (i32.const 14684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h") - (data (i32.const 14716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00d") - (data (i32.const 14748) ",\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 14796) "<\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 14860) "|\00\00\00\01\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 14988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c") - (data (i32.const 15020) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c") - (data (i32.const 15068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 ") - (data (i32.const 15100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c") - (data (i32.const 15132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c") - (data (i32.const 15164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,") - (data (i32.const 15196) "|\00\00\00\01\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 15324) "<\00\00\00\01\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 15388) "\\\00\00\00\01\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 15484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008") - (data (i32.const 15516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\002") - (data (i32.const 15548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000") - (data (i32.const 15580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005") - (data (i32.const 15612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006") - (data (i32.const 15644) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001") - (data (i32.const 15692) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007") - (data (i32.const 15740) ",\00\00\00\01\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 15788) ",\00\00\00\01\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 15836) ",\00\00\00\01\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 15884) ",\00\00\00\01\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 15932) ",\00\00\00\01\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 15980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001") - (data (i32.const 16012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\000\000\000") - (data (i32.const 16044) ",\00\00\00\01\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 16092) ",\00\00\00\01\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 16140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\007\00b") - (data (i32.const 16172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\00d\002") - (data (i32.const 16204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\003\000\003\009") - (data (i32.const 16236) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000") - (data (i32.const 16268) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007") - (data (i32.const 16300) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007") - (data (i32.const 16332) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e") - (data (i32.const 16364) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005") - (data (i32.const 16412) ",\00\00\00\01\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 16460) ",\00\00\00\01\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 16508) ",\00\00\00\01\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 16556) ",\00\00\00\01\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 16604) ",\00\00\00\01\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 16652) ",\00\00\00\01\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 16700) ",\00\00\00\01\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 16748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\001\001") - (data (i32.const 16780) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\001\001\000") - (data (i32.const 16812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001") - (data (i32.const 16844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001") - (data (i32.const 16876) ",\00\00\00\01\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 16924) "L\00\00\00\01\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 17004) "\\\00\00\00\01\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 17100) "\\\00\00\00\01\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 17196) "\\\00\00\00\01\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 17292) "\\\00\00\00\01\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 17388) ",\00\00\00\01\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 17436) "<\00\00\00\01\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 17500) "<\00\00\00\01\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 17564) ",\00\00\00\01\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 17612) ",\00\00\00\01\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 17660) ",\00\00\00\01\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 17708) ",\00\00\00\01\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 17756) ",\00\00\00\01\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 17804) ",\00\00\00\01\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 17852) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l") - (data (i32.const 17900) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v") - (data (i32.const 17948) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003") - (data (i32.const 17996) ",\00\00\00\01\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 18044) ",\00\00\00\01\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 18092) ",\00\00\00\01\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 18140) ",\00\00\00\01\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 18188) ",\00\00\00\01\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 18236) ",\00\00\00\01\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 18284) ",\00\00\00\01\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 18332) "<\00\00\00\01\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 18396) "<\00\00\00\01\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 18460) "<\00\00\00\01\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 18524) "<\00\00\00\01\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 18588) "<\00\00\00\01\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 18652) "<\00\00\00\01\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 18716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004") - (data (i32.const 18748) ",\00\00\00\01\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 18796) ",\00\00\00\01\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 18844) ",\00\00\00\01\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 18892) "<\00\00\00\01\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 18956) "<\00\00\00\01\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 19020) "<\00\00\00\01\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 19084) "<\00\00\00\01\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 19148) ",\00\00\00\01\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 19196) ",\00\00\00\01\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 19244) ",\00\00\00\01\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 19292) ",\00\00\00\01\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 19340) ",\00\00\00\01\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 19388) "<\00\00\00\01\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 19452) "<\00\00\00\01\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 19516) "<\00\00\00\01\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 19580) "<\00\00\00\01\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 19644) "<\00\00\00\01\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 19708) "<\00\00\00\01\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 19772) "|\00\00\00\01\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 19900) "\9c\00\00\00\01\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 20060) "\\\00\00\00\01\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 20156) "l\00\00\00\01\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 20268) "\\\00\00\00\01\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 20364) "L\00\00\00\01\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 20444) "<\00\00\00\01\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 20508) "<\00\00\00\01\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 20572) "<\00\00\00\01\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 20636) "<\00\00\00\01\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 20700) "<\00\00\00\01\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 20764) ",\00\00\00\01\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 20812) ",\00\00\00\01\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 20860) ",\00\00\00\01\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 20908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 20940) ",\00\00\00\01\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 21048) "\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\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) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u + i32.load offset=12 + local.tee $6 i32.const 1 - i32.shl + i32.add + local.tee $3 local.set $2 - loop $while-continue|0 - local.get $1 + local.get $3 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.const 2 + i32.shr_u + i32.gt_u + if local.get $2 - i32.lt_u - if (result i32) - local.get $0 - local.get $1 - i32.add - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end + i32.const 268435455 + i32.gt_u if - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|0 + i32.const 13376 + i32.const 14976 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable end - end - local.get $1 - i32.eqz - if + local.get $4 local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $2 - local.get $1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 1328 - return - end - local.get $2 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#trimEnd (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - 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 $2 - local.set $1 - loop $while-continue|0 - local.get $1 - if (result i32) + i32.load + local.tee $7 + local.get $2 + i32.const 2 + i32.shl + local.tee $5 + call $~lib/rt/itcms/__renew + local.tee $2 + i32.add + local.get $5 + local.get $4 + i32.sub + call $~lib/memory/memory.fill + local.get $2 + local.get $7 + i32.ne + if local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace - else + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 i32.const 0 + call $~lib/rt/itcms/__link end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.eqz - if - i32.const 1328 - return - end - local.get $1 - local.get $2 - i32.eq - if local.get $0 - call $~lib/rt/pure/__retain - return + local.get $5 + i32.store offset=8 end + local.get $0 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add local.get $1 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 + i32.store local.get $0 local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $3 + i32.store offset=12 ) - (func $~lib/string/String#trim (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.set $3 - local.get $1 + i32.const 10 + i32.ge_u i32.const 1 - i32.shl - local.set $1 - loop $while-continue|0 - local.get $1 - if (result i32) - local.get $0 - local.get $1 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - if - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|0 - end - end - loop $while-continue|1 - local.get $1 - local.get $2 - i32.gt_u - if (result i32) - local.get $0 - local.get $2 - i32.add - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - if - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $1 - i32.const 2 - i32.sub - local.set $1 - br $while-continue|1 - end + i32.add + local.get $0 + i32.const 10000 + i32.ge_u + i32.const 3 + i32.add + local.get $0 + i32.const 1000 + i32.ge_u + i32.add + local.get $0 + i32.const 100 + i32.lt_u + select + local.get $0 + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u + select + local.get $0 + i32.const 100000 + i32.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 + local.get $1 + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 end - local.get $1 - i32.eqz - if - i32.const 1328 - return + ) + (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + loop $do-continue|0 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 15 + i32.and + i32.const 48 + i32.or + local.tee $3 + i32.const 39 + i32.const 0 + local.get $3 + i32.const 57 + i32.gt_u + select + i32.add + i32.store16 + local.get $1 + i32.const 4 + i32.shr_u + local.tee $1 + br_if $do-continue|0 end - i32.const 0 + ) + (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (local $2 i64) + (local $3 i64) local.get $1 - local.get $3 + i32.popcnt i32.const 1 - i32.shl i32.eq - local.get $2 - select if + i32.const 63 local.get $0 - call $~lib/rt/pure/__retain + 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 - i32.const 1 - call $~lib/rt/pure/__new + i64.extend_i32_s local.tee $3 - local.get $0 - local.get $2 - i32.add - local.get $1 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - block $folding-inner0 + local.set $2 + i32.const 1 + local.set $1 + loop $while-continue|0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $3 - local.tee $4 - i32.load16_u - local.set $2 - loop $while-continue|0 - local.get $2 - call $~lib/util/string/isSpace - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $2 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end - f64.const 1 - local.set $5 - i32.const 1 - local.get $2 - i32.const 43 - i32.eq local.get $2 - i32.const 45 - i32.eq - select + i64.ge_u if local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - f64.const -1 - f64.const 1 local.get $2 - i32.const 45 - i32.eq - select - local.set $5 - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u + i64.div_u + local.set $0 + local.get $2 + local.get $2 + i64.mul local.set $2 + local.get $1 + i32.const 1 + i32.shl + local.set $1 + br $while-continue|0 end - local.get $1 + end + loop $while-continue|1 + local.get $0 + i64.const 1 + i64.ge_u if + local.get $0 + local.get $3 + i64.div_u + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|1 + end + end + local.get $1 + 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.get $3 + i64.extend_i32_s + local.set $4 + local.get $3 + local.get $3 + i32.const 1 + i32.sub + i32.and + if + loop $do-continue|1 + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 36 - i32.gt_s + local.get $4 local.get $1 - i32.const 2 - i32.lt_s - select - br_if $folding-inner0 + local.get $4 + i64.div_u + local.tee $1 + i64.mul + i64.sub + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 15552 + i32.add + i32.load16_u + i32.store16 local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 48 - i32.eq - i32.const 0 - local.get $0 - i32.const 2 - i32.gt_s - select - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - end - end - else + i64.const 0 + i64.ne + br_if $do-continue|1 + end + else + 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 $4 + loop $do-continue|0 local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 local.get $2 - i32.const 48 - i32.eq - select - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $2 - i32.const 98 - i32.ne - if - local.get $2 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $2 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $1 - end - end + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 10 + local.get $4 + i64.and + i32.wrap_i64 + i32.const 1 + i32.shl + i32.const 15552 + i32.add + i32.load16_u + i32.store16 local.get $1 - select - local.set $1 - end - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $1 - local.get $4 - i32.load16_u - local.tee $2 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $2 - i32.const 48 - i32.sub - else - local.get $2 - i32.const 55 - i32.sub - local.get $2 - i32.const 87 - i32.sub - local.get $2 - local.get $2 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select - local.get $2 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $2 - i32.le_u - if - local.get $6 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.gt_u - br_if $folding-inner0 - br $while-break|2 - end - local.get $6 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $2 - f64.convert_i32_u - f64.add - local.set $6 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end + local.get $5 + i64.shr_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 end - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - local.get $6 - f64.mul - return end - local.get $3 - call $~lib/rt/pure/__release - f64.const nan:0x8000000000000 ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) + (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/util/string/strtol + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/strtol (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - block $folding-inner1 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner1 + i64.const 10000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add + local.get $0 + i64.const 10000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 1000000000000 + i64.lt_u + select + local.get $0 + i64.const 10000000000000000 + i64.ge_u + i32.const 16 + i32.add + local.get $0 + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 + i32.add + local.get $0 + i64.const 1000000000000000000 + i64.ge_u + i32.add + local.get $0 + i64.const 100000000000000000 + i64.lt_u + select + local.get $0 + i64.const 1000000000000000 + i64.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) + loop $do-continue|0 + local.get $0 local.get $2 - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|0 - local.get $1 - call $~lib/util/string/isSpace - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 - end - end i32.const 1 - local.set $4 + i32.sub + local.tee $2 i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 43 - i32.eq + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 local.get $1 - i32.const 45 - i32.eq - select - if - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner1 - i32.const -1 - i32.const 1 - local.get $1 - i32.const 45 - i32.eq - select - local.set $4 - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - end + i64.const 10 + i64.div_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 + end + ) + (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i64) (param $2 i32) + (local $3 i64) + loop $do-continue|0 local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 - i32.const 48 - i32.eq + i64.const 15 + i64.and + i64.const 48 + i64.or + local.tee $3 + i64.const 39 + i64.const 0 + local.get $3 + i64.const 57 + i64.gt_u select + i64.add + i64.store16 + local.get $1 + i64.const 4 + i64.shr_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 + end + ) + (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i64) + local.get $2 + local.get $0 + i64.sub + local.set $8 + local.get $2 + i64.const 1 + i32.const 0 + local.get $3 + i32.sub + local.tee $9 + i64.extend_i32_s + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $11 + i64.and + local.set $6 + local.get $2 + local.get $9 + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.tee $1 + call $~lib/util/number/decimalCount32 + local.set $7 + loop $while-continue|0 + local.get $7 + i32.const 0 + i32.gt_s if block $break|1 - block $case2|1 - block $case1|1 - local.get $3 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $6 - end - end - local.get $6 - i32.const 10 - local.get $6 - select - local.set $6 - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $1 - if - local.get $6 - local.get $3 - i32.load16_u - local.tee $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $1 - i32.const 48 - i32.sub - else - local.get $1 - i32.const 55 - i32.sub - local.get $1 - i32.const 87 - i32.sub - local.get $1 + block $case10|1 + block $case9|1 + block $case8|1 + block $case7|1 + block $case6|1 + block $case5|1 + block $case4|1 + block $case3|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $7 + i32.const 1 + i32.sub + br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 + end + local.get $1 + i32.const 1000000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100000 + i32.div_u + local.set $3 + local.get $1 + i32.const 100000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 10000 + i32.div_u + local.set $3 + local.get $1 + i32.const 10000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 1000 + i32.div_u + local.set $3 + local.get $1 + i32.const 1000 + i32.rem_u + local.set $1 + br $break|1 + end + local.get $1 + i32.const 100 + i32.div_u + local.set $3 + local.get $1 + i32.const 100 + i32.rem_u + local.set $1 + br $break|1 + end local.get $1 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select + i32.const 10 + i32.div_u + local.set $3 local.get $1 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $1 - i32.le_u - if - local.get $5 - i32.eqz - br_if $folding-inner1 - br $while-break|2 + i32.const 10 + i32.rem_u + local.set $1 + br $break|1 end local.get $1 - local.get $5 - local.get $6 - i32.mul - i32.add - local.set $5 - local.get $3 - i32.const 2 - i32.add local.set $3 - br $while-continue|2 + i32.const 0 + local.set $1 + br $break|1 end + i32.const 0 + local.set $3 end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - local.get $5 - i32.mul - return - end - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/string/strtol (param $0 i32) (result i64) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) - (local $6 i32) - block $folding-inner0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $0 - i32.eqz - br_if $folding-inner0 - local.get $2 - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|0 - local.get $1 - call $~lib/util/string/isSpace + local.get $3 + local.get $5 + i32.or if + local.get $5 + i32.const 1 + i32.shl + i32.const 21136 + i32.add local.get $3 - i32.const 2 + i32.const 65535 + i32.and + i32.const 48 i32.add - local.tee $3 - i32.load16_u - local.set $1 - local.get $0 + i32.store16 + local.get $5 i32.const 1 - i32.sub - local.set $0 - br $while-continue|0 + i32.add + local.set $5 end - end - i64.const 1 - local.set $4 - i32.const 1 - local.get $1 - i32.const 43 - i32.eq - local.get $1 - i32.const 45 - i32.eq - select - if - local.get $0 + local.get $7 i32.const 1 i32.sub - local.tee $0 - i32.eqz - br_if $folding-inner0 - i64.const -1 - i64.const 1 + local.set $7 + local.get $6 local.get $1 - i32.const 45 - i32.eq - select - local.set $4 - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - end - local.get $0 - i32.const 2 - i32.gt_s - i32.const 0 - local.get $1 - i32.const 48 - i32.eq - select - if - block $break|1 - block $case2|1 - block $case1|1 - local.get $3 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.tee $1 - i32.const 98 - i32.ne - if - local.get $1 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $1 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 2 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 2 - i32.sub - local.set $0 - i32.const 8 - local.set $6 - br $break|1 - end - local.get $3 - i32.const 4 + i64.extend_i32_u + local.get $9 + i64.extend_i32_s + i64.shl + i64.add + local.tee $0 + local.get $4 + i64.le_u + if + local.get $7 + global.get $~lib/util/number/_K i32.add - local.set $3 - local.get $0 + global.set $~lib/util/number/_K + local.get $7 i32.const 2 - i32.sub - local.set $0 - i32.const 16 - local.set $6 - end - end - local.get $6 - i32.const 10 - local.get $6 - select - local.set $6 - loop $while-continue|2 - block $while-break|2 - local.get $0 - local.tee $1 + i32.shl + i32.const 22064 + i32.add + i64.load32_u + local.get $9 + i64.extend_i32_s + i64.shl + local.set $2 + local.get $5 i32.const 1 - i32.sub - local.set $0 - local.get $1 - if + i32.shl + i32.const 21134 + i32.add + local.tee $3 + i32.load16_u + local.set $1 + loop $while-continue|3 + i32.const 1 + local.get $8 + local.get $0 + i64.sub + local.get $0 + local.get $2 + i64.add + local.tee $6 + local.get $8 + i64.sub + i64.gt_u local.get $6 - local.get $3 - i32.load16_u - local.tee $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $1 - i32.const 48 - i32.sub - else - local.get $1 - i32.const 55 - i32.sub - local.get $1 - i32.const 87 - i32.sub - local.get $1 - local.get $1 - i32.const 97 - i32.sub - i32.const 25 - i32.le_u - select + local.get $8 + i64.lt_u + select + i32.const 0 + local.get $2 + local.get $4 + local.get $0 + i64.sub + i64.le_u + i32.const 0 + local.get $0 + local.get $8 + i64.lt_u + select + select + if local.get $1 - i32.const 65 + i32.const 1 i32.sub - i32.const 25 - i32.le_u - select - end - local.tee $1 - i32.le_u - if - local.get $5 - i64.eqz - br_if $folding-inner0 - br $while-break|2 + local.set $1 + local.get $0 + local.get $2 + i64.add + local.set $0 + br $while-continue|3 end - local.get $1 - i64.extend_i32_u - local.get $5 - local.get $6 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $while-continue|2 end + local.get $3 + local.get $1 + i32.store16 + local.get $5 + return end + br $while-continue|0 end - local.get $2 - call $~lib/rt/pure/__release + end + local.get $9 + i64.extend_i32_s + local.set $0 + loop $while-continue|4 local.get $4 - local.get $5 + i64.const 10 i64.mul - return - end - local.get $2 - call $~lib/rt/pure/__release - i64.const 0 - ) - (func $~lib/math/ipow32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - i32.const 5 - local.set $1 - i32.const 1 - local.set $2 - loop $while-continue|0 + local.set $4 + local.get $6 + i64.const 10 + i64.mul + local.tee $2 local.get $0 + i64.shr_u + local.tee $6 + local.get $5 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne if - local.get $1 - local.get $2 - i32.mul - local.get $2 - local.get $0 + local.get $5 i32.const 1 + i32.shl + i32.const 21136 + i32.add + local.get $6 + i32.wrap_i64 + i32.const 65535 i32.and - select - local.set $2 - local.get $0 + i32.const 48 + i32.add + i32.store16 + local.get $5 i32.const 1 - i32.shr_u - local.set $0 - local.get $1 - local.get $1 - i32.mul - local.set $1 - br $while-continue|0 + i32.add + local.set $5 end - end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - local.get $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $0 - local.get $1 - i32.const 1023 + local.get $7 + i32.const 1 i32.sub - local.tee $1 - i32.const 1023 - i32.gt_s - if (result f64) - local.get $1 - i32.const 1023 - i32.sub - local.tee $1 - i32.const 1023 + local.set $7 + local.get $4 + local.get $2 + local.get $11 + i64.and + local.tee $6 + i64.le_u + br_if $while-continue|4 + end + local.get $7 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $6 + local.set $0 + local.get $8 + i32.const 0 + local.get $7 + i32.sub + i32.const 2 + i32.shl + i32.const 22064 + i32.add + i64.load32_u + i64.mul + local.set $2 + local.get $5 + i32.const 1 + i32.shl + i32.const 21134 + i32.add + local.tee $3 + i32.load16_u + local.set $1 + loop $while-continue|6 + i32.const 1 + local.get $2 + local.get $0 + i64.sub + local.get $0 + local.get $10 + i64.add + local.tee $6 + local.get $2 + i64.sub + i64.gt_u + local.get $2 + local.get $6 + i64.gt_u + select + i32.const 0 + local.get $10 + local.get $4 + local.get $0 + i64.sub + i64.le_u + i32.const 0 + local.get $0 + local.get $2 + i64.lt_u + select + select + if local.get $1 - i32.const 1023 - i32.lt_s - select + i32.const 1 + i32.sub local.set $1 local.get $0 - f64.const 8988465674311579538646525e283 - f64.mul - else - local.get $0 - end - else - local.get $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul + local.get $10 + i64.add local.set $0 - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - i32.lt_s - if (result f64) - local.get $1 - i32.const 969 - i32.add - local.tee $1 - i32.const -1022 - local.get $1 - i32.const -1022 - i32.gt_s - select - local.set $1 - local.get $0 - f64.const 2.004168360008973e-292 - f64.mul - else - local.get $0 - end - else - local.get $0 + br $while-continue|6 end end + local.get $3 local.get $1 - i64.extend_i32_s - i64.const 1023 - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul + i32.store16 + local.get $5 ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (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 i64) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 f64) - (local $12 f64) - (local $13 i32) - (local $14 i64) - (local $15 i64) - block $folding-inner0 + local.get $2 + i32.eqz + if local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.const 20 - i32.sub - i32.load offset=16 + local.get $1 i32.const 1 - i32.shr_u - local.tee $7 - i32.eqz - br_if $folding-inner0 - local.get $5 - local.tee $0 - i32.load16_u - local.set $8 - f64.const 1 - local.set $12 - loop $while-continue|0 - local.get $7 - if (result i32) - local.get $8 - call $~lib/util/string/isSpace - else - i32.const 0 - end + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return + end + local.get $1 + local.get $2 + i32.add + local.tee $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $1 + local.get $3 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s if local.get $0 - i32.const 2 + local.get $1 + i32.const 1 + i32.shl i32.add - local.tee $0 - i32.load16_u - local.set $8 - local.get $7 + i32.const 48 + i32.store16 + local.get $1 i32.const 1 - i32.sub - local.set $7 - br $while-continue|0 + i32.add + local.set $1 + br $for-loop|0 end end - local.get $7 - i32.eqz - br_if $folding-inner0 - local.get $8 - i32.const 45 - i32.eq + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add + else + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select if (result i32) - local.get $7 + local.get $0 + local.get $3 i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 i32.sub - local.tee $7 - i32.eqz - br_if $folding-inner0 - f64.const -1 - local.set $12 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy local.get $0 - i32.const 2 + i32.const 46 + i32.store16 + local.get $1 + i32.const 1 i32.add - local.tee $0 - i32.load16_u else - local.get $8 - i32.const 43 - i32.eq - if (result i32) - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $8 - end - end - local.tee $8 - i32.const 73 - i32.eq - i32.const 0 - local.get $7 - i32.const 8 - i32.ge_s - select - if - local.get $0 - i64.load - i64.const 29555310648492105 - i64.eq + local.get $3 + i32.const 0 + i32.le_s + i32.const 0 + local.get $3 + i32.const -6 + i32.gt_s + select if (result i32) - local.get $0 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - local.get $5 - call $~lib/rt/pure/__release - local.get $12 - f64.const inf - f64.mul - return - end - br $folding-inner0 - end - local.get $8 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.const 0 - local.get $8 - i32.const 46 - i32.ne - select - br_if $folding-inner0 - local.get $0 - local.set $2 - loop $while-continue|1 - local.get $8 - i32.const 48 - i32.eq - if local.get $0 i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl i32.add - local.tee $0 - i32.load16_u - local.set $8 - local.get $7 + local.get $0 + local.get $1 i32.const 1 - i32.sub - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 0 - i32.le_s - if - local.get $5 - call $~lib/rt/pure/__release - f64.const 0 - return - end - local.get $8 - i32.const 46 - i32.eq - if - local.get $0 - local.get $2 - i32.eq - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.set $0 - i32.const 0 - local.get $2 - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - select - br_if $folding-inner0 - i32.const 1 - local.set $13 - loop $for-loop|2 + i32.shl + call $~lib/memory/memory.copy local.get $0 - i32.load16_u - local.tee $8 - i32.const 48 - i32.eq - if - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $for-loop|2 - end - end - local.get $7 - i32.const 0 - i32.le_s - if - local.get $5 - call $~lib/rt/pure/__release - f64.const 0 - return - end - local.get $8 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - i32.const 0 - i32.const 0 - local.get $2 - local.get $3 - select - select - br_if $folding-inner0 - end - local.get $8 - i32.const 48 - i32.sub - local.set $2 - loop $for-loop|3 - i32.const 1 - local.get $13 - i32.eqz - i32.const 0 - local.get $8 - i32.const 46 - i32.eq - select - local.get $2 - i32.const 10 - i32.lt_u - select - if - block $for-break3 + i32.const 3014704 + i32.store + i32.const 2 + local.set $2 + loop $for-loop|1 local.get $2 - i32.const 10 - i32.lt_u + local.get $3 + i32.lt_s if + local.get $0 local.get $2 - i64.extend_i32_u - local.get $6 - i64.const 10 - i64.mul - i64.add - local.get $6 - local.get $2 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or - local.get $1 - i32.const 19 - i32.lt_s - select - local.set $6 - local.get $1 i32.const 1 + i32.shl i32.add - local.set $1 - else - local.get $1 - local.set $3 + i32.const 48 + i32.store16 + local.get $2 i32.const 1 - local.set $13 + i32.add + local.set $2 + br $for-loop|1 end - local.get $7 - i32.const 1 - i32.sub - local.tee $7 - i32.eqz - br_if $for-break3 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $8 - i32.const 48 - i32.sub - local.set $2 - br $for-loop|3 end - end - end - block $~lib/util/string/scientific|inlined.0 (result f64) - f64.const 0 - i32.const 1 - local.get $3 - local.get $1 - local.get $13 - select - i32.const 19 - local.get $1 - local.get $1 - i32.const 19 - i32.gt_s - select - i32.sub - block $~lib/util/string/parseExp|inlined.0 (result i32) - i32.const 1 - local.set $1 - i32.const 0 - local.get $0 - i32.load16_u - i32.const 32 - i32.or - i32.const 101 - i32.ne - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const 0 - local.get $7 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 + local.get $1 + local.get $3 i32.add - local.tee $0 - i32.load16_u - local.tee $3 - i32.const 45 + else + local.get $1 + i32.const 1 i32.eq if (result i32) - i32.const 0 - local.get $2 + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $1 + i32.const 4 + i32.add + local.get $3 i32.const 1 i32.sub + local.tee $0 + i32.const 0 + i32.lt_s local.tee $2 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - i32.const -1 - local.set $1 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $3 - i32.const 43 - i32.eq - if (result i32) - i32.const 0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - else - local.get $3 - end - end - local.set $3 - loop $while-continue|4 - local.get $3 - i32.const 48 - i32.eq if i32.const 0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - br_if $~lib/util/string/parseExp|inlined.0 - drop local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.set $3 - br $while-continue|4 + i32.sub + local.set $0 end - end - local.get $3 - i32.const 48 - i32.sub - local.set $3 - loop $for-loop|5 - local.get $3 - i32.const 10 - i32.lt_u - i32.const 0 + local.get $0 + local.get $0 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + local.get $1 + i32.const 45 + i32.const 43 local.get $2 select - if - local.get $1 - i32.const 3200 - i32.mul - local.get $4 - i32.const 3200 - i32.ge_s - br_if $~lib/util/string/parseExp|inlined.0 - drop - local.get $3 - local.get $4 - i32.const 10 - i32.mul - i32.add - local.set $4 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - i32.const 48 - i32.sub - local.set $3 - br $for-loop|5 - end - end - local.get $1 - local.get $4 - i32.mul - end - i32.add - local.tee $0 - i32.const -342 - i32.lt_s - local.get $6 - i64.eqz - select - br_if $~lib/util/string/scientific|inlined.0 - drop - f64.const inf - local.get $0 - i32.const 308 - i32.gt_s - br_if $~lib/util/string/scientific|inlined.0 - drop - local.get $6 - f64.convert_i64_u - local.tee $11 - local.get $0 - i32.eqz - br_if $~lib/util/string/scientific|inlined.0 - drop - local.get $0 - i32.const 37 - i32.le_s - i32.const 0 - local.get $0 - i32.const 22 - i32.gt_s - select - if - local.get $11 - local.get $0 - i32.const 3 - i32.shl - i32.const 3680 - i32.add - f64.load - f64.mul - local.set $11 - i32.const 22 - local.set $0 - end - local.get $6 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $0 - i32.const 31 - i32.shr_s - local.tee $8 - local.get $0 - local.get $8 - i32.add - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if (result f64) - local.get $0 - i32.const 0 - i32.gt_s - if - local.get $11 + i32.store16 offset=4 local.get $0 - i32.const 3 - i32.shl - i32.const 3856 + i32.const 2 i32.add - f64.load - f64.mul - br $~lib/util/string/scientific|inlined.0 - end - local.get $11 - i32.const 0 - local.get $0 - i32.sub - i32.const 3 - i32.shl - i32.const 3856 - i32.add - f64.load - f64.div - else - local.get $0 - i32.const 0 - i32.lt_s - if (result f64) - local.get $6 - local.get $6 - i64.clz - local.tee $9 - i64.shl - local.set $6 + else local.get $0 - local.tee $1 - i64.extend_i32_s - local.get $9 - i64.sub - local.set $9 - loop $for-loop|6 - local.get $1 - i32.const -14 - i32.le_s - if - local.get $6 - i64.const 6103515625 - i64.rem_u - local.get $6 - i64.const 6103515625 - i64.div_u - local.tee $6 - i64.clz - local.tee $10 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.const 0.00004294967296 - f64.mul - f64.nearest - i64.trunc_f64_u - local.get $6 - local.get $10 - i64.shl - i64.add - local.set $6 - local.get $9 - local.get $10 - i64.sub - local.set $9 - local.get $1 - i32.const 14 - i32.add - local.set $1 - br $for-loop|6 - end - end - local.get $6 - i32.const 0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.tee $14 - i64.div_u - local.tee $15 - i64.clz - local.set $10 - local.get $6 - local.get $14 - i64.rem_u - f64.convert_i64_u - i64.reinterpret_f64 - local.get $10 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $14 - f64.convert_i64_u - f64.div - i64.trunc_f64_u - local.get $15 - local.get $10 - i64.shl - i64.add - f64.convert_i64_u - local.get $9 - local.get $10 - i64.sub - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - else - local.get $6 - local.get $6 - i64.ctz - local.tee $9 - i64.shr_u - local.set $6 - local.get $9 + call $~lib/memory/memory.copy local.get $0 - local.tee $4 - i64.extend_i32_s - i64.add - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $4 - i32.const 13 - i32.ge_s - if - i64.const 32 - local.get $6 - i64.const 32 - i64.shr_u - i64.const 1220703125 - i64.mul - local.get $6 - i64.const 4294967295 - i64.and - i64.const 1220703125 - i64.mul - local.tee $6 - i64.const 32 - i64.shr_u - i64.add - local.tee $9 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz - local.tee $0 - i64.extend_i32_u - i64.sub - local.tee $10 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $6 - local.get $0 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $9 - local.get $0 - i64.extend_i32_u - i64.shl - local.get $6 - i64.const 4294967295 - i64.and - local.get $10 - i64.shr_u - i64.or - i64.add - local.set $6 - local.get $4 - i32.const 13 - i32.sub - local.set $4 - br $for-loop|7 - end - end - local.get $4 - call $~lib/math/ipow32 - local.tee $0 - i64.extend_i32_u - local.get $6 - i64.const 4294967295 - i64.and - i64.mul - local.set $9 - i64.const 32 + i32.const 46 + i32.store16 offset=2 local.get $0 - i64.extend_i32_u - local.get $6 - i64.const 32 - i64.shr_u - i64.mul - local.get $9 - i64.const 32 - i64.shr_u - i64.add - local.tee $6 - i64.const 32 - i64.shr_u - i32.wrap_i64 - i32.clz + local.get $2 + i32.add local.tee $0 - i64.extend_i32_u - i64.sub - local.tee $10 - global.get $~lib/util/string/__fixmulShift - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $9 + i32.const 101 + i32.store16 offset=2 local.get $0 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - local.get $6 + local.tee $2 + i32.const 4 + i32.add + 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 - i64.extend_i32_u - i64.shl - local.get $9 - i64.const 4294967295 - i64.and - local.get $10 - i64.shr_u - i64.or - i64.add - f64.convert_i64_u - global.get $~lib/util/string/__fixmulShift - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn + local.get $0 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + 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 + i32.const 2 + i32.add end end end - local.get $5 - call $~lib/rt/pure/__release - local.get $12 - f64.copysign - return end - local.get $5 - call $~lib/rt/pure/__release - f64.const nan:0x8000000000000 - ) - (func $~lib/string/parseFloat (param $0 i32) (result f64) - (local $1 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/util/string/strtod - local.get $0 - call $~lib/rt/pure/__release ) - (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) + (local $1 i64) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $3 i64) + (local $4 i64) + (local $5 i64) (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i64) + (local $10 i64) + (local $11 i64) local.get $0 - call $~lib/rt/pure/__retain - local.tee $2 - i32.const 1728 - 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 1728 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__release - end - i32.const 1728 - 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 1328 - local.set $0 - br $__inlined_func$~lib/string/String#concat - end + f64.const 0 + f64.lt + local.tee $8 + if (result f64) + i32.const 21136 + i32.const 45 + i32.store16 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 + f64.neg + else 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 + i64.reinterpret_f64 + local.tee $3 + i64.const 9218868437227405312 + i64.and + i64.const 52 + i64.shr_u + i32.wrap_i64 + local.tee $6 + i32.const 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $3 + i64.const 4503599627370495 + i64.and + i64.add + local.tee $1 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $3 + i64.clz + i32.wrap_i64 + local.set $2 + local.get $3 local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - ) - (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $6 + i32.const 1 + local.get $6 + select + i32.const 1075 + i32.sub + local.tee $6 + i32.const 1 + i32.sub + local.get $2 + i32.sub + local.set $2 local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/string/String.__eq - i32.eqz - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + 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 $6 + local.get $7 + i32.sub + local.get $2 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $2 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $0 + i32.trunc_f64_s + local.tee $2 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $4 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - i32.const 0 - i32.gt_s - local.get $2 - local.get $3 - i32.gt_s - local.get $4 - select - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - i32.const 1 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eqz - i32.const 1 - local.get $0 - i32.eqz - local.get $0 - local.get $1 - i32.eq - select - select - br_if $folding-inner0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - i32.eqz - br_if $folding-inner0 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return - end - local.get $0 - i32.const 0 - local.get $1 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - local.tee $3 - select - call $~lib/util/string/compareImpl - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - i32.const 0 - i32.lt_s - local.get $3 - local.get $2 - select - return - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/string/String.__lt - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/string/String.__gt - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + local.get $2 + f64.convert_i32_s + f64.ne + i32.add + i32.const 3 + i32.shr_s i32.const 1 - local.get $0 - i32.const 20 + i32.add + local.tee $2 + i32.const 3 + i32.shl + local.tee $7 i32.sub - i32.load offset=16 + global.set $~lib/util/number/_K + local.get $7 + i32.const 21192 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + local.get $2 i32.const 1 - i32.shr_u - local.tee $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s + i32.shl + i32.const 21888 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $4 + i64.const 32 + i64.shr_u + local.set $3 + local.get $4 + i64.const 4294967295 + i64.and + local.tee $4 + global.get $~lib/util/number/_frc_plus + local.tee $5 + i64.const 32 + i64.shr_u + local.tee $10 i64.mul - i64.const 268435456 - i64.gt_u - local.get $1 - i32.const 0 - i32.lt_s - select - if - i32.const 13168 - i32.const 1616 - i32.const 324 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.eqz + local.get $4 + local.get $5 + i64.const 4294967295 + i64.and + local.tee $11 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.set $5 + local.get $8 i32.const 1 + i32.shl + i32.const 21136 + i32.add + local.get $3 local.get $1 - select - if - i32.const 1328 - return - end local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__retain - return - end + i64.clz + i32.wrap_i64 + local.tee $2 + i64.extend_i32_s + i64.shl + local.tee $1 + i64.const 32 + i64.shr_u + local.tee $9 + i64.mul + local.get $4 + local.get $9 + i64.mul + local.get $4 local.get $1 - local.get $2 - i32.mul - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl + i64.const 4294967295 + i64.and + local.tee $1 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $9 + i64.const 32 + i64.shr_u + i64.add local.get $1 - call $~lib/memory/memory.repeat local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $3 - i32.ge_u - if - local.get $3 - local.get $5 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 + i64.mul + local.get $9 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $7 + local.get $6 + local.get $2 + i32.sub + i32.add + i32.const -64 + i32.sub + local.get $3 + local.get $10 + i64.mul + local.get $5 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $11 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.tee $1 + local.get $7 + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub + local.get $1 + local.get $3 + global.get $~lib/util/number/_frc_minus + local.tee $1 + i64.const 32 + i64.shr_u + local.tee $5 + i64.mul + local.get $4 + local.get $5 + i64.mul + local.get $4 + local.get $1 + i64.const 4294967295 + i64.and + local.tee $4 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $1 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $4 + i64.mul + local.get $1 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.add + i64.sub + local.get $8 + call $~lib/util/number/genDigits + local.get $8 + i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $8 + i32.add + ) + (func $std/string/getString (result i32) + global.get $std/string/str + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $invalid + block $~lib/array/Array + 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 $~lib/array/Array<~lib/string/String> $~lib/array/Array $invalid + end + return + end + return + end local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return end - local.set $0 - br $folding-inner0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.tee $4 - i32.const -1 - i32.xor - if - local.get $2 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - local.get $3 - local.get $5 - i32.sub - local.tee $7 + 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.tee $3 - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - local.tee $8 - call $~lib/memory/memory.copy - local.get $3 - local.get $8 - i32.add + local.set $2 + loop $while-continue|0 + local.get $1 local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $4 - local.get $6 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $4 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - br $folding-inner0 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end local.get $0 - call $~lib/rt/pure/__retain - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + i32.load + call $~lib/rt/itcms/__visit return end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $0 + unreachable ) - (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 + (func $~start + call $start:std/string + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 24012 + i32.lt_s if - i32.const 0 - i32.const 1488 - i32.const 563 - i32.const 3 + i32.const 40416 + i32.const 40464 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - ) - (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/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store 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 23820 - i32.ge_u + i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 + i32.const 0 local.get $1 - call $~lib/rt/tlsf/freeBlock + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/rt/pure/__renew (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/string/String.__not (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.eqz + else + i32.const 1 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~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) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1073741804 - i32.gt_u + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz if - i32.const 1424 - i32.const 1200 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + return end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 16 + i32.store + local.get $0 + i32.const 20 i32.sub - local.set $0 - global.get $~lib/rt/tlsf/ROOT + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 i32.eqz if - call $~lib/rt/tlsf/initialize + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + return end - local.get $1 - i32.const 16 - i32.add + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select local.set $2 - local.get $0 - i32.const 23820 - i32.lt_u - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/checkUsedBlock + local.get $3 + local.get $4 + i32.sub + local.set $3 + loop $for-loop|0 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 $3 + i32.le_s + if + global.get $~lib/memory/__stack_pointer 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.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/tlsf/moveBlock - local.set $0 - br $__inlined_func$~lib/rt/tlsf/reallocateBlock + return end - local.get $3 - local.get $0 - local.get $5 - call $~lib/rt/tlsf/prepareBlock + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 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 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 ) - (func $~lib/string/String#replaceAll (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#padStart (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 $1 - call $~lib/rt/pure/__retain - local.set $6 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner1 (result i32) + i32.store + i32.const 1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + local.get $3 + i32.const 1 + i32.shl + local.tee $5 + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + i32.gt_u + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $4 + local.get $3 + local.get $5 + i32.sub + local.tee $3 + i32.lt_u + if + local.get $1 + local.get $2 + local.get $4 + local.get $3 + i32.const 2 + i32.sub + local.get $4 + i32.div_u + local.tee $6 + call $~lib/memory/memory.repeat + local.get $1 + local.get $4 local.get $6 - i32.const 20 + i32.mul + local.tee $4 + i32.add + local.get $2 + local.get $3 + local.get $4 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $10 + call $~lib/memory/memory.copy + else + local.get $1 + local.get $2 + local.get $3 + call $~lib/memory/memory.copy + end + local.get $1 + local.get $3 + i32.add + local.get $0 + local.get $5 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + i32.const 1 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.tee $4 + i32.eqz + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $1 + i32.const 1 + i32.shl + local.tee $5 + i32.gt_u + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.const 20 + return + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $4 + local.get $5 + local.get $3 + i32.sub + local.tee $0 + i32.lt_u + if + local.get $1 + local.get $3 + i32.add + local.tee $3 + local.get $2 + local.get $4 + local.get $0 + i32.const 2 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $4 - i32.ge_u - if - local.get $4 - local.get $10 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $5 - local.get $0 - local.get $6 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - br $folding-inner1 - end + local.get $4 + i32.div_u + local.tee $5 + call $~lib/memory/memory.repeat + local.get $3 + local.get $4 local.get $5 + i32.mul + local.tee $4 + i32.add + local.get $2 + local.get $0 + local.get $4 + i32.sub + call $~lib/memory/memory.copy + else + local.get $1 + local.get $3 + i32.add + local.get $2 + local.get $0 + call $~lib/memory/memory.copy + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String#lastIndexOf (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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $2 - block $folding-inner0 - local.get $10 - i32.eqz - if - local.get $2 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - br $folding-inner1 - end - local.get $4 - local.get $2 - local.get $4 - i32.const 1 - i32.add - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $9 - i32.gt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $3 - local.get $1 - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $1 - local.get $2 - i32.add - local.set $1 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - br $folding-inner0 - end - local.get $2 - local.get $10 - i32.eq - if - local.get $4 - i32.const 1 - i32.shl - local.tee $3 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $0 - local.get $3 - call $~lib/memory/memory.copy - loop $while-continue|1 - local.get $0 - local.get $6 - local.get $7 - call $~lib/string/String#indexOf - local.tee $3 - i32.const -1 - i32.xor - if - local.get $1 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $10 - i32.add - local.set $7 - br $while-continue|1 - end - end - local.get $1 - call $~lib/rt/pure/__retain - br $folding-inner1 - end - local.get $4 - local.set $1 - loop $while-continue|2 - local.get $0 - local.get $6 - local.get $7 - call $~lib/string/String#indexOf - local.tee $9 - i32.const -1 - i32.xor - if - local.get $3 - i32.eqz - if - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - end - local.get $1 - local.get $2 - local.get $8 - local.get $9 - local.get $7 - i32.sub - local.tee $11 - i32.add - i32.add - i32.lt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $3 - end - local.get $3 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $3 - local.get $8 - local.get $11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $7 - i32.add - local.set $8 - local.get $9 - local.get $10 - i32.add - local.set $7 - br $while-continue|2 - end - end - local.get $8 - if - local.get $1 - local.get $8 - local.get $4 - local.get $7 - i32.sub - local.tee $2 - i32.add - i32.lt_u - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $3 - end - local.get $2 - if - local.get $3 - local.get $8 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $2 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $1 - local.get $2 - local.get $8 - i32.add - local.tee $0 - i32.gt_u - if - local.get $3 - local.get $0 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $3 - end - br $folding-inner0 - end - local.get $0 - call $~lib/rt/pure/__retain - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return end - local.get $6 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 + local.tee $3 + local.set $5 + local.get $3 + i32.eqz + if + 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 + return end - local.set $1 local.get $2 i32.const 0 - i32.lt_s - if (result i32) + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $5 + local.get $4 + i32.sub + local.tee $3 + local.get $2 + local.get $3 + i32.lt_s + select + local.set $2 + loop $for-loop|0 local.get $2 - local.get $3 - i32.add - local.tee $2 i32.const 0 + i32.ge_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $1 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $~lib/string/String#localeCompare (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + local.get $0 + local.get $1 + i32.eq + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $3 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + i32.const -1 + local.get $2 + local.get $3 + i32.lt_s + select + return + end local.get $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 + local.get $1 local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $1 - i32.sub - local.tee $2 - i32.const 0 - i32.le_s - if - i32.const 1328 + call $~lib/util/string/compareImpl + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end - local.get $2 - i32.const 1 - i32.shl - local.tee $2 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#trimStart (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $3 + i32.const 1 + i32.shl + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if (result i32) + local.get $0 + local.get $1 + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|0 + end + end local.get $1 - i32.const 0 - i32.lt_s + i32.eqz if - local.get $1 - local.get $3 + 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 - local.set $1 + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + local.get $2 local.get $1 i32.sub - local.tee $3 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl local.tee $2 - i32.const 0 - i32.le_s + i32.eqz if - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 return end + global.get $~lib/memory/__stack_pointer local.get $2 i32.const 1 - call $~lib/rt/pure/__new + call $~lib/rt/itcms/__new local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 local.get $1 - i32.const 1 - i32.shl i32.add local.get $2 call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__retain ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $3 + (func $~lib/string/String#trimEnd (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $1 - local.get $1 - local.get $3 - i32.gt_s - select - local.tee $3 - local.get $2 - i32.const 0 - local.get $2 - i32.const 0 - i32.gt_s - select - local.tee $2 - local.get $1 - local.get $1 - local.get $2 - i32.gt_s - select - local.tee $2 - local.get $2 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - select i32.const 1 i32.shl local.tee $2 - i32.sub - local.tee $3 + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + local.get $1 i32.eqz if - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 return end - i32.const 0 - local.get $4 local.get $1 - i32.const 1 - i32.shl - i32.eq local.get $2 - select + i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain return end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 local.get $2 - i32.add - local.get $3 - call $~lib/memory/memory.copy + local.get $0 local.get $1 - call $~lib/rt/pure/__retain + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/rt/__newArray (param $0 i32) (result i32) + (func $~lib/string/String#trim (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 16 - i32.const 3 - call $~lib/rt/pure/__new - local.tee $1 + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - i32.const 2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.set $3 + local.get $1 + i32.const 1 i32.shl - local.tee $2 + local.set $1 + loop $while-continue|0 + local.get $1 + if (result i32) + local.get $0 + local.get $1 + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $1 + local.get $2 + i32.gt_u + if (result i32) + local.get $0 + local.get $2 + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + return + end i32.const 0 - call $~lib/rt/pure/__new - local.tee $3 - call $~lib/rt/pure/__retain - i32.store local.get $1 local.get $3 - i32.store offset=4 - local.get $1 + i32.const 1 + i32.shl + i32.eq local.get $2 - i32.store offset=8 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 local.get $0 - i32.store offset=12 + local.get $2 + i32.add local.get $1 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) (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 $3 i32) + (local $4 f64) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $folding-inner0 local.get $0 - local.get $1 - i32.add - i32.const 4 + i32.const 20 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 + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + br_if $folding-inner0 local.get $0 - i32.const 0 - i32.store8 offset=2 - local.get $2 - i32.const 0 - i32.store8 offset=2 + i32.load16_u + local.set $2 + loop $while-continue|0 + local.get $2 + call $~lib/util/string/isSpace + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $2 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|0 + end + end + f64.const 1 + local.set $4 + i32.const 1 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 + i32.const 43 + i32.eq local.get $2 - i32.const 0 - i32.store8 + i32.const 45 + i32.eq + select + if + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.eqz + br_if $folding-inner0 + f64.const -1 + f64.const 1 + local.get $2 + i32.const 45 + i32.eq + select + local.set $4 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $2 + end 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/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $3 - local.set $1 - local.get $3 - local.get $0 - i32.load offset=8 - local.tee $4 - i32.const 2 - i32.shr_u - i32.gt_u - if - local.get $1 - i32.const 268435455 - i32.gt_u - if - i32.const 13168 - i32.const 14768 - i32.const 14 - i32.const 48 - call $~lib/builtins/abort - unreachable - end - local.get $4 - local.get $0 - i32.load - local.tee $7 - local.get $1 - i32.const 2 - i32.shl - local.tee $5 - call $~lib/rt/pure/__renew - local.tee $1 - i32.add - local.get $5 - local.get $4 - i32.sub - call $~lib/memory/memory.fill - local.get $1 - local.get $7 - i32.ne if - local.get $0 + i32.const 1 local.get $1 - i32.store - local.get $0 + i32.const 36 + i32.gt_s local.get $1 - i32.store offset=4 - end - local.get $0 - local.get $5 - i32.store offset=8 - end - local.get $0 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $2 - call $~lib/rt/pure/__retain - i32.store - local.get $0 - local.get $3 - i32.store offset=12 - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $5 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 + i32.const 2 + i32.lt_s + select + br_if $folding-inner0 + local.get $1 + i32.const 16 + i32.eq + if local.get $2 - i32.eqz - br_if $folding-inner0 - local.get $5 - i32.eqz + i32.const 48 + i32.eq + i32.const 0 + local.get $3 + i32.const 2 + i32.gt_s + select + if (result i32) + local.get $0 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end if - i32.const 1 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=4 + local.get $3 + i32.const 2 + i32.sub + local.set $3 local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $1 + i32.const 4 + i32.add local.set $0 - br $folding-inner1 end - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.set $3 - i32.const 2147483647 - local.get $2 - local.get $2 - i32.const 0 - i32.lt_s - select - local.set $2 - local.get $5 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $1 - local.set $8 - local.get $1 - if - local.get $3 - i32.eqz - if - i32.const 1 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=4 - i32.const 1328 - i32.store - br $folding-inner1 - end - else - local.get $3 - i32.eqz - br_if $folding-inner0 - local.get $3 - local.get $2 - local.get $2 - local.get $3 - i32.gt_s - select - local.tee $2 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=4 - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - i32.const 2 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 + end + else + local.get $3 + i32.const 2 + i32.gt_s + i32.const 0 + local.get $2 + i32.const 48 + i32.eq + select + if + block $break|1 + block $case2|1 + block $case1|1 local.get $0 - local.get $6 - i32.const 1 - i32.shl + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $2 + i32.const 98 + i32.ne + if + local.get $2 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $2 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $0 + i32.const 4 i32.add - i32.load16_u - i32.store16 + local.set $0 local.get $3 - local.get $6 i32.const 2 - i32.shl - i32.add - local.get $1 - i32.store - local.get $1 - call $~lib/rt/pure/__retain - drop - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - return - end - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $1 - loop $while-continue|1 - local.get $0 - local.get $5 - local.get $4 - call $~lib/string/String#indexOf - local.tee $6 - i32.const -1 - i32.xor - if - local.get $6 - local.get $4 - i32.sub - local.tee $7 - i32.const 0 - i32.gt_s - if - local.get $7 - i32.const 1 - i32.shl - local.tee $7 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $9 - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.get $7 - call $~lib/memory/memory.copy - local.get $1 - local.get $9 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $1 - i32.const 1328 - call $~lib/array/Array<~lib/string/String>#push + i32.sub + local.set $3 + i32.const 2 + local.set $1 + br $break|1 end - local.get $10 - i32.const 1 - i32.add - local.tee $10 - local.get $2 - i32.eq - br_if $folding-inner2 - local.get $6 - local.get $8 + local.get $0 + i32.const 4 i32.add - local.set $4 - br $while-continue|1 + local.set $0 + local.get $3 + i32.const 2 + i32.sub + local.set $3 + i32.const 8 + local.set $1 + br $break|1 end - end - local.get $4 - i32.eqz - if - local.get $1 local.get $0 - call $~lib/array/Array<~lib/string/String>#push - br $folding-inner2 + i32.const 4 + i32.add + local.set $0 + local.get $3 + i32.const 2 + i32.sub + local.set $3 + i32.const 16 + local.set $1 end + end + local.get $1 + i32.const 10 + local.get $1 + select + local.set $1 + end + loop $while-continue|2 + block $while-break|2 local.get $3 - local.get $4 - i32.sub local.tee $2 - i32.const 0 - i32.gt_s + i32.const 1 + i32.sub + local.set $3 + local.get $2 if - local.get $2 - i32.const 1 - i32.shl + local.get $1 + local.get $0 + i32.load16_u local.tee $2 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + local.get $2 + i32.const 48 + i32.sub + else + local.get $2 + i32.const 55 + i32.sub + local.get $2 + i32.const 87 + i32.sub + local.get $2 + local.get $2 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + local.get $2 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + select + end + local.tee $2 + i32.le_u + if + local.get $5 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.gt_u + br_if $folding-inner0 + br $while-break|2 + end + local.get $5 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $2 + f64.convert_i32_u + f64.add + local.set $5 local.get $0 - local.get $4 - i32.const 1 - i32.shl + i32.const 2 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - local.get $3 - call $~lib/array/Array<~lib/string/String>#push - else - local.get $1 - i32.const 1328 - call $~lib/array/Array<~lib/string/String>#push + local.set $0 + br $while-continue|2 end - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - return end - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 local.get $5 - call $~lib/rt/pure/__release - local.get $0 + f64.mul return end - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 14816 - i32.const 14768 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load - call $~lib/rt/pure/__retain - local.tee $0 - i32.eqz - if - i32.const 14880 - i32.const 14768 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add - local.get $0 - i32.const 10000 - i32.ge_u - i32.const 3 - i32.add - local.get $0 - i32.const 1000 - i32.ge_u - i32.add - local.get $0 - i32.const 100 - i32.lt_u - select - local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.store local.get $0 - i32.const 100000000 - i32.ge_u + local.get $1 + call $~lib/util/string/strtol + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $0 - i32.const 10000000 - i32.lt_u - select - local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/string/strtol (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + (local $4 i32) + (local $5 i32) + i32.const 3968 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.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 3968 + i32.store + block $folding-inner0 + i32.const 3964 + i32.load i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 15 - i32.and - i32.const 48 - i32.or - local.tee $3 - i32.const 39 - i32.const 0 - local.get $3 - i32.const 57 - i32.gt_u - select - i32.add - i32.store16 - local.get $1 - i32.const 4 i32.shr_u local.tee $1 - br_if $do-continue|0 - end - ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) - (local $2 i64) - (local $3 i64) - local.get $1 - i32.popcnt - i32.const 1 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 31 - local.get $1 - i32.clz - i32.sub - i32.div_u - i32.const 1 - i32.add - return - end - local.get $1 - i64.extend_i32_s - local.tee $3 - local.set $2 - i32.const 1 - local.set $1 - loop $while-continue|0 - local.get $0 - local.get $2 - i64.ge_u - if + i32.eqz + br_if $folding-inner0 + i32.const 3968 + i32.load16_u + local.set $0 + loop $while-continue|0 local.get $0 - local.get $2 - i64.div_u - local.set $0 - local.get $2 - local.get $2 - i64.mul - local.set $2 - local.get $1 - i32.const 1 - i32.shl - local.set $1 - br $while-continue|0 + call $~lib/util/string/isSpace + if + local.get $5 + i32.const 2 + i32.add + local.tee $5 + i32.load16_u + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end end - end - loop $while-continue|1 + i32.const 1 + local.set $2 + i32.const 1 local.get $0 - i64.const 1 - i64.ge_u + i32.const 43 + i32.eq + local.get $0 + i32.const 45 + i32.eq + select if - local.get $0 - local.get $3 - i64.div_u - local.set $0 local.get $1 i32.const 1 + i32.sub + local.tee $1 + i32.eqz + br_if $folding-inner0 + i32.const -1 + i32.const 1 + local.get $0 + i32.const 45 + i32.eq + select + local.set $2 + local.get $5 + i32.const 2 i32.add - local.set $1 - br $while-continue|1 + local.tee $5 + i32.load16_u + local.set $0 + end + local.get $1 + i32.const 2 + i32.gt_s + i32.const 0 + local.get $0 + i32.const 48 + i32.eq + select + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $5 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $0 + i32.const 98 + i32.ne + if + local.get $0 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $0 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 2 + local.set $4 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 8 + local.set $4 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 16 + local.set $4 + end + end + local.get $4 + i32.const 10 + local.get $4 + select + local.set $4 + loop $while-continue|2 + block $while-break|2 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + local.get $4 + local.get $5 + i32.load16_u + local.tee $0 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + local.get $0 + i32.const 48 + i32.sub + else + local.get $0 + i32.const 55 + i32.sub + local.get $0 + i32.const 87 + i32.sub + local.get $0 + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + local.get $0 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + select + end + local.tee $0 + i32.le_u + if + local.get $3 + i32.eqz + br_if $folding-inner0 + br $while-break|2 + end + local.get $0 + local.get $3 + local.get $4 + i32.mul + i32.add + local.set $3 + local.get $5 + i32.const 2 + i32.add + local.set $5 + br $while-continue|2 + end + end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i32.mul + return end - local.get $1 - i32.const 1 - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $~lib/util/number/utoa64_any_core (param $0 i32) (param $1 i64) (param $2 i32) (param $3 i32) - (local $4 i64) - (local $5 i64) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 + (func $~lib/util/string/strtol (result i64) + (local $0 i32) + (local $1 i32) + (local $2 i64) + (local $3 i64) + (local $4 i32) + (local $5 i32) + i32.const 4016 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.and - if - loop $do-continue|1 + 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 4016 + i32.store + block $folding-inner0 + i32.const 4012 + i32.load + i32.const 1 + i32.shr_u + local.tee $1 + i32.eqz + br_if $folding-inner0 + i32.const 4016 + i32.load16_u + local.set $0 + loop $while-continue|0 local.get $0 - local.get $2 + call $~lib/util/string/isSpace + if + local.get $5 + i32.const 2 + i32.add + local.tee $5 + i32.load16_u + local.set $0 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end + end + i64.const 1 + local.set $2 + i32.const 1 + local.get $0 + i32.const 43 + i32.eq + local.get $0 + i32.const 45 + i32.eq + select + if + local.get $1 i32.const 1 i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - local.get $1 - local.get $4 - i64.div_u local.tee $1 - i64.mul - i64.sub - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 15408 + i32.eqz + br_if $folding-inner0 + i64.const -1 + i64.const 1 + local.get $0 + i32.const 45 + i32.eq + select + local.set $2 + local.get $5 + i32.const 2 i32.add + local.tee $5 i32.load16_u - i32.store16 - local.get $1 - i64.const 0 - i64.ne - br_if $do-continue|1 + local.set $0 end - else - 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 $4 - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl - i32.const 15408 - i32.add - i32.load16_u - i32.store16 - local.get $1 - local.get $5 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 + local.get $1 + i32.const 2 + i32.gt_s + i32.const 0 + local.get $0 + i32.const 48 + i32.eq + select + if + block $break|1 + block $case2|1 + block $case1|1 + local.get $5 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.tee $0 + i32.const 98 + i32.ne + if + local.get $0 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $0 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 2 + local.set $4 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 8 + local.set $4 + br $break|1 + end + local.get $5 + i32.const 4 + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.sub + local.set $1 + i32.const 16 + local.set $4 + end + end + local.get $4 + i32.const 10 + local.get $4 + select + local.set $4 + loop $while-continue|2 + block $while-break|2 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $0 + if + local.get $4 + local.get $5 + i32.load16_u + local.tee $0 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if (result i32) + local.get $0 + i32.const 48 + i32.sub + else + local.get $0 + i32.const 55 + i32.sub + local.get $0 + i32.const 87 + i32.sub + local.get $0 + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + select + local.get $0 + i32.const 65 + i32.sub + i32.const 25 + i32.le_u + select + end + local.tee $0 + i32.le_u + if + local.get $3 + i64.eqz + br_if $folding-inner0 + br $while-break|2 + end + local.get $0 + i64.extend_i32_u + local.get $3 + local.get $4 + i64.extend_i32_s + i64.mul + i64.add + local.set $3 + local.get $5 + i32.const 2 + i32.add + local.set $5 + br $while-continue|2 + end + end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $3 + i64.mul + return end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i64.const 0 ) - (func $~lib/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtod (param $0 i32) (result f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 15216 - i32.const 15344 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 2576 - return - end - i32.const 0 - local.get $0 + (local $5 i64) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 f64) + (local $11 f64) + (local $12 i32) + (local $13 i64) + (local $14 i64) + global.get $~lib/memory/__stack_pointer + i32.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 - local.get $0 - i32.const 31 - i32.shr_u - local.tee $2 - select - local.set $0 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - else - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 31 + i32.store + block $folding-inner1 + block $folding-inner0 local.get $0 - i32.clz + i32.const 20 i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - i32.add - local.tee $1 - i32.const 1 - i32.shl + i32.load offset=16 i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else + i32.shr_u + local.tee $6 + i32.eqz + br_if $folding-inner0 local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - i64.extend_i32_u - local.get $4 - 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/rt/pure/__retain - ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 15216 - i32.const 15344 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 2576 - return - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - 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.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - i64.extend_i32_u - local.get $1 - call $~lib/util/number/ulog_base - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $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 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add - local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 1000000000000 - i64.lt_u - select - local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add - local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add - local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 100000000000000000 - i64.lt_u - select - local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa_hex_simple (param $0 i32) (param $1 i64) (param $2 i32) - (local $3 i64) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 15 - i64.and - i64.const 48 - i64.or - local.tee $3 - i64.const 39 - i64.const 0 - local.get $3 - i64.const 57 - i64.gt_u - select - i64.add - i64.store16 - local.get $1 - i64.const 4 - i64.shr_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 15216 - i32.const 15344 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if - i32.const 2576 - return - end - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $1 - local.get $3 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - else - local.get $1 - i32.const 16 - i32.eq - if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 + i32.load16_u + local.set $7 + f64.const 1 + local.set $11 + loop $while-continue|0 + local.get $6 + if (result i32) + local.get $7 + call $~lib/util/string/isSpace + else + i32.const 0 + end + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end + end + local.get $6 + i32.eqz + br_if $folding-inner0 + local.get $7 + i32.const 45 + i32.eq + if (result i32) + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.eqz + br_if $folding-inner0 + f64.const -1 + local.set $11 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $7 + i32.const 43 + i32.eq + if (result i32) + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.eqz + br_if $folding-inner0 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $7 + end + end + local.tee $7 + i32.const 73 + i32.eq + i32.const 0 + local.get $6 + i32.const 8 + i32.ge_s + select + if + local.get $0 + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $0 + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else + i32.const 0 + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + f64.const inf + f64.mul + return + end + br $folding-inner0 + end + local.get $7 + i32.const 48 i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core - end - end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 1 - local.get $1 - i32.const 36 - i32.gt_s - local.get $1 - i32.const 2 - i32.lt_s - select - if - i32.const 15216 - i32.const 15344 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.eqz - if - i32.const 2576 - return - end - i64.const 0 - local.get $0 - i64.sub - local.get $0 - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $2 - select - local.set $0 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - i64.const 4294967295 - i64.le_u - if - local.get $0 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $1 - local.get $4 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - end - else - local.get $1 - i32.const 16 - i32.eq - if - local.get $2 - i32.const 63 + i32.const 10 + i32.ge_u + i32.const 0 + local.get $7 + i32.const 46 + i32.ne + select + br_if $folding-inner0 local.get $0 - i64.clz - i32.wrap_i64 + local.set $2 + loop $while-continue|1 + local.get $7 + i32.const 48 + i32.eq + if + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.set $7 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|1 + end + end + local.get $6 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $7 + i32.const 46 + i32.eq + if + local.get $0 + local.get $2 + i32.eq + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.set $0 + i32.const 0 + local.get $2 + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + select + br_if $folding-inner0 + i32.const 1 + local.set $12 + loop $for-loop|2 + local.get $0 + i32.load16_u + local.tee $7 + i32.const 48 + i32.eq + if + local.get $6 + i32.const 1 + i32.sub + local.set $6 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $6 + i32.const 0 + i32.le_s + br_if $folding-inner1 + local.get $7 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + i32.const 0 + i32.const 0 + local.get $2 + local.get $3 + select + select + br_if $folding-inner0 + end + local.get $7 + i32.const 48 i32.sub - i32.const 2 - i32.shr_s - i32.const 1 - i32.add - i32.add - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $1 - call $~lib/util/number/utoa_hex_simple - else - local.get $0 - local.get $1 - call $~lib/util/number/ulog_base - local.get $2 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $3 - local.get $0 - local.get $4 - 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/rt/pure/__retain - ) - (func $~lib/util/number/genDigits (param $0 i64) (param $1 i32) (param $2 i64) (param $3 i32) (param $4 i64) (param $5 i32) (result i32) - (local $6 i64) - (local $7 i32) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i64) - local.get $2 - local.get $0 - i64.sub - local.set $8 - local.get $2 - i64.const 1 - i32.const 0 - local.get $3 - i32.sub - local.tee $9 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $11 - i64.and - local.set $6 - local.get $2 - local.get $9 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.set $7 - loop $while-continue|0 - local.get $7 - i32.const 0 - i32.gt_s - if - block $break|1 - block $case10|1 - block $case9|1 - block $case8|1 - block $case7|1 - block $case6|1 - block $case5|1 - block $case4|1 - block $case3|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $7 - i32.const 1 - i32.sub - br_table $case9|1 $case8|1 $case7|1 $case6|1 $case5|1 $case4|1 $case3|1 $case2|1 $case1|1 $case0|1 $case10|1 - end - local.get $1 - i32.const 1000000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 100000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 100000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 10000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 10000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 1000000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 100000 - i32.div_u - local.set $3 - local.get $1 - i32.const 100000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 10000 - i32.div_u - local.set $3 - local.get $1 - i32.const 10000 - i32.rem_u - local.set $1 - br $break|1 - end - local.get $1 - i32.const 1000 - i32.div_u - local.set $3 - local.get $1 - i32.const 1000 - i32.rem_u - local.set $1 - br $break|1 - end + local.set $2 + loop $for-loop|3 + i32.const 1 + local.get $12 + i32.eqz + i32.const 0 + local.get $7 + i32.const 46 + i32.eq + select + local.get $2 + i32.const 10 + i32.lt_u + select + if + block $for-break3 + local.get $2 + i32.const 10 + i32.lt_u + if + local.get $2 + i64.extend_i32_u + local.get $5 + i64.const 10 + i64.mul + i64.add + local.get $5 + local.get $2 + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or local.get $1 - i32.const 100 - i32.div_u + i32.const 19 + i32.lt_s + select + local.set $5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + else + local.get $1 + local.set $3 + i32.const 1 + local.set $12 + end + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.eqz + br_if $for-break3 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $7 + i32.const 48 + i32.sub + local.set $2 + br $for-loop|3 + end + end + end + block $~lib/util/string/scientific|inlined.0 (result f64) + f64.const 0 + i32.const 1 + local.get $3 + local.get $1 + local.get $12 + select + i32.const 19 + local.get $1 + local.get $1 + i32.const 19 + i32.gt_s + select + i32.sub + block $~lib/util/string/parseExp|inlined.0 (result i32) + i32.const 1 + local.set $1 + i32.const 0 + local.get $0 + i32.load16_u + i32.const 32 + i32.or + i32.const 101 + i32.ne + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const 0 + local.get $6 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + local.tee $3 + i32.const 45 + i32.eq + if (result i32) + i32.const 0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + i32.const -1 + local.set $1 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + i32.const 43 + i32.eq + if (result i32) + i32.const 0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + else + local.get $3 + end + end + local.set $3 + loop $while-continue|4 + local.get $3 + i32.const 48 + i32.eq + if + i32.const 0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u local.set $3 - local.get $1 - i32.const 100 - i32.rem_u - local.set $1 - br $break|1 + br $while-continue|4 end - local.get $1 - i32.const 10 - i32.div_u - local.set $3 - local.get $1 + end + local.get $3 + i32.const 48 + i32.sub + local.set $3 + loop $for-loop|5 + local.get $3 i32.const 10 - i32.rem_u - local.set $1 - br $break|1 + i32.lt_u + i32.const 0 + local.get $2 + select + if + local.get $1 + i32.const 3200 + i32.mul + local.get $4 + i32.const 3200 + i32.ge_s + br_if $~lib/util/string/parseExp|inlined.0 + drop + local.get $3 + local.get $4 + i32.const 10 + i32.mul + i32.add + local.set $4 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + i32.const 2 + i32.add + local.tee $0 + i32.load16_u + i32.const 48 + i32.sub + local.set $3 + br $for-loop|5 + end end local.get $1 - local.set $3 - i32.const 0 - local.set $1 - br $break|1 + local.get $4 + i32.mul end - i32.const 0 - local.set $3 - end - local.get $3 - local.get $5 - i32.or - if - local.get $5 - i32.const 1 - i32.shl - i32.const 20992 - i32.add - local.get $3 - i32.const 65535 - i32.and - i32.const 48 i32.add - i32.store16 + local.tee $0 + i32.const -342 + i32.lt_s local.get $5 - i32.const 1 - i32.add - local.set $5 - end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $6 - local.get $1 - i64.extend_i32_u - local.get $9 - i64.extend_i32_s - i64.shl - i64.add - local.tee $0 - local.get $4 - i64.le_u - if - local.get $7 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $7 - i32.const 2 - i32.shl - i32.const 21920 - i32.add - i64.load32_u - local.get $9 - i64.extend_i32_s - i64.shl - local.set $2 + i64.eqz + select + br_if $~lib/util/string/scientific|inlined.0 + drop + f64.const inf + local.get $0 + i32.const 308 + i32.gt_s + br_if $~lib/util/string/scientific|inlined.0 + drop local.get $5 - i32.const 1 - i32.shl - i32.const 20990 - i32.add - local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|3 - i32.const 1 - local.get $8 + f64.convert_i64_u + local.tee $10 + local.get $0 + i32.eqz + br_if $~lib/util/string/scientific|inlined.0 + drop + local.get $0 + i32.const 37 + i32.le_s + i32.const 0 + local.get $0 + i32.const 22 + i32.gt_s + select + if + local.get $10 local.get $0 - i64.sub + i32.const 3 + i32.shl + i32.const 3888 + i32.add + f64.load + f64.mul + local.set $10 + i32.const 22 + local.set $0 + end + local.get $5 + i64.const 9007199254740991 + i64.le_u + if (result i32) local.get $0 - local.get $2 - i64.add - local.tee $6 - local.get $8 - i64.sub - i64.gt_u - local.get $6 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $2 - local.get $4 + i32.const 31 + i32.shr_s + local.tee $7 local.get $0 - i64.sub - i64.le_u + local.get $7 + i32.add + i32.xor + i32.const 22 + i32.le_s + else i32.const 0 + end + if (result f64) local.get $0 - local.get $8 - i64.lt_u - select - select + i32.const 0 + i32.gt_s if + local.get $10 + local.get $0 + i32.const 3 + i32.shl + i32.const 4064 + i32.add + f64.load + f64.mul + br $~lib/util/string/scientific|inlined.0 + end + local.get $10 + i32.const 0 + local.get $0 + i32.sub + i32.const 3 + i32.shl + i32.const 4064 + i32.add + f64.load + f64.div + else + local.get $0 + i32.const 0 + i32.lt_s + if (result f64) + local.get $5 + local.get $5 + i64.clz + local.tee $8 + i64.shl + local.set $5 + local.get $0 + local.tee $1 + i64.extend_i32_s + local.get $8 + i64.sub + local.set $8 + loop $for-loop|6 + local.get $1 + i32.const -14 + i32.le_s + if + local.get $5 + i64.const 6103515625 + i64.rem_u + local.get $5 + i64.const 6103515625 + i64.div_u + local.tee $5 + i64.clz + local.tee $9 + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.const 0.00004294967296 + f64.mul + f64.nearest + i64.trunc_f64_u + local.get $5 + local.get $9 + i64.shl + i64.add + local.set $5 + local.get $8 + local.get $9 + i64.sub + local.set $8 + local.get $1 + i32.const 14 + i32.add + local.set $1 + br $for-loop|6 + end + end + local.get $5 + i32.const 0 local.get $1 - i32.const 1 i32.sub - local.set $1 + call $~lib/math/ipow32 + i64.extend_i32_s + local.tee $13 + i64.div_u + local.tee $14 + i64.clz + local.set $9 + local.get $5 + local.get $13 + i64.rem_u + f64.convert_i64_u + i64.reinterpret_f64 + local.get $9 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $13 + f64.convert_i64_u + f64.div + i64.trunc_f64_u + local.get $14 + local.get $9 + i64.shl + i64.add + f64.convert_i64_u + local.get $8 + local.get $9 + i64.sub + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + else + local.get $5 + local.get $5 + i64.ctz + local.tee $8 + i64.shr_u + local.set $5 + local.get $8 local.get $0 - local.get $2 + local.tee $4 + i64.extend_i32_s i64.add - local.set $0 - br $while-continue|3 + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $4 + i32.const 13 + i32.ge_s + if + i64.const 32 + local.get $5 + i64.const 32 + i64.shr_u + i64.const 1220703125 + i64.mul + local.get $5 + i64.const 4294967295 + i64.and + i64.const 1220703125 + i64.mul + local.tee $5 + i64.const 32 + i64.shr_u + i64.add + local.tee $8 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + local.tee $0 + i64.extend_i32_u + i64.sub + local.tee $9 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $5 + local.get $0 + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $8 + local.get $0 + i64.extend_i32_u + i64.shl + local.get $5 + i64.const 4294967295 + i64.and + local.get $9 + i64.shr_u + i64.or + i64.add + local.set $5 + local.get $4 + i32.const 13 + i32.sub + local.set $4 + br $for-loop|7 + end + end + local.get $4 + call $~lib/math/ipow32 + local.tee $0 + i64.extend_i32_u + local.get $5 + i64.const 4294967295 + i64.and + i64.mul + local.set $8 + i64.const 32 + local.get $0 + i64.extend_i32_u + local.get $5 + i64.const 32 + i64.shr_u + i64.mul + local.get $8 + i64.const 32 + i64.shr_u + i64.add + local.tee $5 + i64.const 32 + i64.shr_u + i32.wrap_i64 + i32.clz + local.tee $0 + i64.extend_i32_u + i64.sub + local.tee $9 + global.get $~lib/util/string/__fixmulShift + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $8 + local.get $0 + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + local.get $5 + local.get $0 + i64.extend_i32_u + i64.shl + local.get $8 + i64.const 4294967295 + i64.and + local.get $9 + i64.shr_u + i64.or + i64.add + f64.convert_i64_u + global.get $~lib/util/string/__fixmulShift + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn end end - local.get $3 - local.get $1 - i32.store16 - local.get $5 - return end - br $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + f64.copysign + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const nan:0x8000000000000 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + f64.const 0 + ) + (func $~lib/string/parseFloat (param $0 i32) (result f64) + (local $1 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $~lib/util/string/strtod + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1936 + local.get $0 + select + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store + i32.const 1936 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/string/String#concat + local.get $2 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + 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 offset=8 + local.get $2 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/memory/memory.copy + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__ne (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + select + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.gt_s + local.get $2 + local.get $3 + i32.gt_s + local.get $0 + select + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__lt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $folding-inner0 + i32.const 1 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + i32.eqz + local.get $0 + local.get $1 + i32.eq + select + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.const 0 + local.get $1 + local.get $3 + local.get $2 + local.get $2 + local.get $3 + i32.gt_s + local.tee $1 + select + call $~lib/util/string/compareImpl + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.lt_s + local.get $1 + local.get $0 + select + return end - local.get $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/string/String.__gte (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__lt + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__lte (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__gt + i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#repeat (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 1 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 i64.extend_i32_s - local.set $0 - loop $while-continue|4 + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 268435456 + i64.gt_u + local.get $1 + i32.const 0 + i32.lt_s + select + if + i32.const 13376 + i32.const 1824 + i32.const 324 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.eqz + i32.const 1 + local.get $1 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + return + end + local.get $1 + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $2 + i32.mul + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + local.get $1 + call $~lib/memory/memory.repeat + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $4 + local.get $3 + i32.ge_u + if + local.get $3 local.get $4 - i64.const 10 - i64.mul - local.set $4 - local.get $6 - i64.const 10 - i64.mul - local.tee $2 + i32.ge_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i64.shr_u + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/string/String#indexOf + local.tee $1 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $5 + local.get $3 + local.get $4 + i32.sub local.tee $6 - local.get $5 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne + i32.add + local.tee $3 if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + local.get $3 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + local.tee $7 + call $~lib/memory/memory.copy + local.get $3 + local.get $7 + i32.add + local.get $2 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $3 + local.get $1 local.get $5 + i32.add i32.const 1 i32.shl - i32.const 20992 i32.add - local.get $6 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 + local.get $0 + local.get $1 + local.get $4 i32.add - i32.store16 - local.get $5 i32.const 1 + i32.shl i32.add - local.set $5 + local.get $6 + local.get $1 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - local.get $7 - i32.const 1 - i32.sub - local.set $7 - local.get $4 - local.get $2 - local.get $11 - i64.and - local.tee $6 - i64.le_u - br_if $while-continue|4 end - local.get $7 - global.get $~lib/util/number/_K + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - global.set $~lib/util/number/_K - local.get $6 - local.set $0 - local.get $8 - i32.const 0 - local.get $7 + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/string/String#replaceAll (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 16 i32.sub - i32.const 2 - i32.shl - i32.const 21920 - i32.add - i64.load32_u - i64.mul - local.set $2 - local.get $5 + 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 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.shl - i32.const 20990 - i32.add + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.tee $3 - i32.load16_u - local.set $1 - loop $while-continue|6 + i32.store + block $folding-inner0 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - local.get $2 - local.get $0 - i64.sub - local.get $0 - local.get $10 - i64.add - local.tee $6 - local.get $2 - i64.sub - i64.gt_u - local.get $2 - local.get $6 - i64.gt_u - select - i32.const 0 - local.get $10 + i32.shr_u + local.tee $7 local.get $4 - local.get $0 - i64.sub - i64.le_u - i32.const 0 - local.get $0 - local.get $2 - i64.lt_u - select - select + local.tee $1 + i32.ge_u if local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $0 - local.get $10 - i64.add - local.set $0 - br $while-continue|6 - end - end - local.get $3 - local.get $1 - i32.store16 - local.get $5 - ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - i32.eqz - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return - end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s + local.get $7 + i32.ge_u if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $3 + local.get $0 + call $~lib/string/String.__eq + select + local.set $0 end + br $folding-inner0 end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s - i32.const 0 - local.get $3 - i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + local.get $7 + i32.eqz + if + local.get $4 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $4 + local.get $1 i32.const 1 - i32.shl i32.add - local.tee $0 - i32.const 2 + i32.mul i32.add - local.get $0 - i32.const 0 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 local.get $2 - i32.sub + local.get $4 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 - else - local.get $3 - i32.const 0 - i32.le_s - i32.const 0 - local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - 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 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else + local.get $4 + local.set $3 + loop $for-loop|0 local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add + local.get $9 + i32.gt_u + if + local.get $5 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 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 + i32.shl i32.add local.get $0 - i32.const 2 - i32.add - local.get $1 + local.get $9 i32.const 1 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 - i32.add - local.tee $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $2 - i32.const 4 i32.add + i32.load16_u + i32.store16 + local.get $5 local.get $3 i32.const 1 - i32.sub - local.tee $0 - i32.const 0 - i32.lt_s + i32.add local.tee $3 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - local.get $0 - local.get $0 - call $~lib/util/number/decimalCount32 i32.const 1 + i32.shl i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple local.get $2 - i32.const 45 - i32.const 43 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy local.get $3 - select - i32.store16 offset=4 - local.get $0 + local.get $4 + i32.add + local.set $3 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $4 + local.get $7 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $5 + call $~lib/memory/memory.copy + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $10 + call $~lib/string/String#indexOf + local.tee $5 + i32.const -1 + i32.xor + if local.get $1 + local.get $5 + i32.const 1 + i32.shl i32.add - i32.const 2 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $5 + local.get $7 i32.add + local.set $10 + br $while-continue|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $1 + local.set $5 + loop $while-continue|2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $10 + call $~lib/string/String#indexOf + local.tee $9 + i32.const -1 + i32.xor + if + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=12 + end + local.get $5 + local.get $4 + local.get $8 + local.get $9 + local.get $10 + i32.sub + local.tee $6 + i32.add + i32.add + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=12 end + local.get $11 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $11 + local.get $6 + local.get $8 + i32.add + local.tee $10 + 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 $4 + local.get $10 + i32.add + local.set $8 + local.get $7 + local.get $9 + i32.add + local.set $10 + br $while-continue|2 + end + end + local.get $11 + if + local.get $5 + local.get $8 + local.get $1 + local.get $10 + i32.sub + local.tee $1 + i32.add + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $5 + i32.const 1 + i32.shl + local.tee $5 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=12 + end + local.get $1 + if + local.get $11 + local.get $8 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $10 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + local.get $5 + local.get $1 + local.get $8 + i32.add + local.tee $0 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $11 + local.get $0 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $11 + i32.store offset=12 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $~lib/util/number/dtoa_core (param $0 f64) (result i32) - (local $1 i64) - (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i64) - (local $11 i64) + (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.lt - local.tee $8 - if (result f64) - i32.const 20992 - i32.const 45 - i32.store16 - local.get $0 - f64.neg + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select else - local.get $0 + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select end - i64.reinterpret_f64 - local.tee $3 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.tee $6 + local.set $1 + local.get $2 i32.const 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add local.get $3 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $1 - i64.const 1 - i64.shl - i64.const 1 - i64.add + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $2 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $3 + local.get $1 + i32.const 0 + i32.lt_s + if + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.set $1 + end + local.get $1 + i32.sub local.tee $3 - i64.clz - i32.wrap_i64 - local.set $2 + local.get $2 local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $2 + i32.const 0 + i32.le_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + return + end + global.get $~lib/memory/__stack_pointer local.get $2 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $6 i32.const 1 - local.get $6 - select - i32.const 1075 - i32.sub - local.tee $6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 i32.const 1 - i32.sub + i32.shl + i32.add local.get $2 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $2 + 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 $0 + i32.store local.get $1 + i32.const 0 local.get $1 - 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 $6 - local.get $7 + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $0 + i32.const 20 i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $1 + local.get $1 + local.get $3 + i32.gt_s + select + local.tee $3 local.get $2 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus + i32.const 0 local.get $2 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $0 - i32.trunc_f64_s + i32.const 0 + i32.gt_s + select local.tee $2 - local.get $0 + local.get $1 + local.get $1 local.get $2 - f64.convert_i32_s - f64.ne - i32.add - i32.const 3 - i32.shr_s - i32.const 1 - i32.add + i32.gt_s + select local.tee $2 - i32.const 3 - i32.shl - local.tee $7 - i32.sub - global.set $~lib/util/number/_K - local.get $7 - i32.const 21048 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow local.get $2 + local.get $3 + i32.lt_s + select i32.const 1 i32.shl - i32.const 21744 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $4 - i64.const 32 - i64.shr_u - local.set $3 - local.get $4 - i64.const 4294967295 - i64.and local.tee $4 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $10 - i64.mul - local.get $4 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $11 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.set $5 - local.get $8 - i32.const 1 - i32.shl - i32.const 20992 - i32.add - local.get $3 - local.get $1 - local.get $1 - i64.clz - i32.wrap_i64 - local.tee $2 - i64.extend_i32_s - i64.shl - local.tee $1 - i64.const 32 - i64.shr_u - local.tee $9 - i64.mul - local.get $4 - local.get $9 - i64.mul - local.get $4 - local.get $1 - i64.const 4294967295 - i64.and - local.tee $1 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $9 - i64.const 32 - i64.shr_u - i64.add - local.get $1 local.get $3 - i64.mul - local.get $9 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $7 - local.get $6 local.get $2 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $3 - local.get $10 - i64.mul - local.get $5 - i64.const 32 - i64.shr_u - i64.add + local.get $2 local.get $3 - local.get $11 - i64.mul - local.get $5 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.tee $1 - local.get $7 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $2 i32.sub - local.get $1 - local.get $3 - global.get $~lib/util/number/_frc_minus - local.tee $1 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $4 - local.get $5 - i64.mul + local.tee $3 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1264 + return + end + i32.const 0 local.get $4 local.get $1 - i64.const 4294967295 - i64.and - local.tee $4 - i64.mul - i64.const 32 - i64.shr_u - i64.add + i32.const 1 + i32.shl + i32.eq + local.get $2 + select + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new local.tee $1 - i64.const 32 - i64.shr_u - i64.add + i32.store offset=4 + local.get $1 + local.get $0 + local.get $2 + i32.add local.get $3 - local.get $4 - i64.mul + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.add - i64.sub - local.get $8 - call $~lib/util/number/genDigits - local.get $8 + ) + (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $8 + 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 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.eqz + br_if $folding-inner0 + local.get $1 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/__newArray + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $1 + local.set $0 + br $folding-inner1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + i32.const 2147483647 + local.get $2 + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $6 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.tee $2 + local.set $8 + local.get $2 + if + local.get $4 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/rt/__newArray + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1264 + i32.store + br $folding-inner1 + end + else + local.get $4 + i32.eqz + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $6 + local.get $4 + local.get $6 + i32.lt_s + select + local.tee $5 + call $~lib/rt/__newArray + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + local.get $2 + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/rt/__newArray + local.tee $2 + i32.store offset=16 + loop $while-continue|1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + local.get $5 + call $~lib/string/String#indexOf + local.tee $7 + i32.const -1 + i32.xor + if + local.get $7 + local.get $5 + i32.sub + local.tee $3 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + local.tee $9 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=24 + local.get $3 + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $9 + call $~lib/memory/memory.copy + 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=20 + local.get $2 + local.get $3 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=20 + local.get $2 + i32.const 1264 + call $~lib/array/Array<~lib/string/String>#push + end + local.get $10 + i32.const 1 + i32.add + local.tee $10 + local.get $6 + i32.eq + br_if $folding-inner2 + local.get $7 + local.get $8 + i32.add + local.set $5 + br $while-continue|1 + end + end + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#push + br $folding-inner2 + end + local.get $4 + local.get $5 + i32.sub + local.tee $1 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + local.tee $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $4 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $2 + local.get $1 + call $~lib/array/Array<~lib/string/String>#push + else + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=20 + local.get $2 + i32.const 1264 + call $~lib/array/Array<~lib/string/String>#push + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 0 + call $~lib/rt/__newArray + local.set $0 + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 28 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 local.get $0 - f64.const 0 - f64.eq + i32.load offset=12 + i32.ge_u if - i32.const 20928 - return + i32.const 1552 + i32.const 14976 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - f64.sub - f64.const 0 - f64.ne + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz if - local.get $0 - local.get $0 - f64.ne - if - i32.const 6768 - return - end - i32.const 8064 - i32.const 20960 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return + i32.const 15024 + i32.const 14976 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.tee $1 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 20992 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain ) (func $start:std/string (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 f64) + (local $2 f64) + (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 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 i64) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i32) - (local $92 i32) - (local $93 i32) - (local $94 i32) - (local $95 i32) - (local $96 i32) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) - (local $101 i32) - (local $102 i32) - (local $103 i32) - (local $104 i32) - (local $105 i32) - (local $106 i32) - (local $107 i32) - (local $108 i32) - (local $109 i32) - (local $110 i32) - (local $111 i32) - (local $112 i32) - (local $113 i32) - (local $114 i32) - (local $115 i32) - (local $116 i32) - (local $117 i32) - (local $118 i32) - (local $119 i32) - (local $120 i32) - (local $121 i32) - (local $122 i32) - (local $123 i32) - (local $124 i32) - (local $125 i32) - (local $126 i32) - (local $127 i32) - (local $128 i32) - (local $129 i32) - (local $130 i32) - (local $131 i32) - (local $132 i32) - (local $133 i32) - (local $134 i32) - (local $135 i32) - (local $136 i32) - (local $137 i32) - (local $138 i32) - (local $139 i32) - (local $140 i32) - (local $141 i32) - (local $142 i32) - (local $143 i32) - (local $144 i32) - (local $145 i32) - (local $146 i32) - (local $147 i32) - (local $148 i32) - (local $149 i32) - (local $150 i32) - (local $151 i32) - (local $152 i32) - (local $153 i32) - (local $154 i32) - (local $155 i32) - (local $156 i32) - (local $157 i32) - (local $158 i32) - (local $159 i32) - (local $160 i32) - (local $161 i32) - (local $162 i32) - (local $163 i32) - (local $164 i32) - (local $165 i32) - (local $166 i32) - (local $167 i32) - (local $168 i32) - (local $169 i32) - (local $170 i32) - (local $171 i32) - (local $172 i32) - (local $173 i32) - (local $174 i32) - (local $175 i32) - (local $176 i32) - (local $177 i32) - (local $178 i32) - (local $179 i32) - (local $180 i32) - (local $181 i32) - (local $182 i32) - (local $183 i32) - (local $184 i32) - (local $185 i32) - (local $186 i32) - (local $187 i32) - (local $188 i32) - (local $189 i32) - (local $190 i32) - (local $191 i32) - (local $192 i32) - (local $193 i32) - (local $194 i32) - (local $195 i32) - (local $196 i32) - (local $197 i32) - (local $198 i32) - (local $199 i32) - (local $200 i32) - (local $201 i32) - (local $202 i32) - (local $203 i32) - (local $204 i32) - (local $205 i32) - (local $206 i32) - (local $207 i32) - (local $208 i32) - (local $209 i32) - (local $210 i32) - (local $211 i32) - (local $212 i32) - (local $213 i32) - (local $214 i32) - (local $215 i32) - (local $216 i32) - (local $217 i32) - (local $218 i32) - (local $219 i32) - (local $220 i32) - (local $221 i32) - (local $222 i32) - (local $223 i32) - (local $224 i32) - (local $225 i32) - (local $226 i32) - (local $227 i32) - (local $228 i32) - (local $229 i32) - (local $230 i32) - (local $231 i32) - (local $232 i32) - (local $233 i32) - (local $234 i32) - (local $235 i32) - (local $236 i32) - (local $237 i32) - (local $238 i32) - (local $239 i32) - (local $240 i32) - (local $241 i32) - (local $242 i32) - (local $243 i32) - (local $244 i32) - (local $245 i32) - (local $246 i32) - (local $247 i32) - (local $248 i32) - (local $249 i32) - (local $250 i32) - (local $251 i32) - (local $252 i32) - (local $253 i32) - (local $254 i32) - (local $255 i32) - (local $256 i32) - (local $257 i32) - (local $258 i32) - (local $259 i32) - (local $260 i32) - (local $261 i32) - (local $262 i32) - (local $263 i32) - (local $264 i32) - (local $265 i32) - (local $266 i32) - (local $267 i32) - (local $268 i32) - (local $269 i32) - (local $270 i32) - (local $271 i32) - (local $272 i32) - (local $273 i32) - (local $274 i32) - (local $275 i32) - (local $276 i32) - (local $277 i32) - (local $278 i32) - (local $279 i32) - (local $280 i32) - (local $281 i32) - (local $282 i32) - (local $283 i32) - (local $284 i32) - (local $285 i32) - (local $286 i32) - (local $287 i32) - (local $288 i32) - (local $289 i32) - (local $290 i32) - (local $291 i32) - (local $292 i32) - (local $293 i32) - (local $294 i32) - (local $295 i32) - (local $296 i32) - (local $297 i32) - (local $298 i32) - (local $299 i32) - (local $300 i32) - (local $301 i32) - (local $302 i32) - (local $303 i32) + (local $5 f32) + (local $6 i64) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 global.get $std/string/str i32.const 1056 i32.ne @@ -8056,6 +8728,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 i32.const 1168 i32.const 1168 call $~lib/string/String.__eq @@ -8068,8 +8746,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1264 - i32.const 1264 + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 + i32.const 1200 + i32.const 1200 call $~lib/string/String.__eq i32.eqz if @@ -8080,8 +8764,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1296 - i32.const 1296 + global.get $~lib/memory/__stack_pointer + i32.const 1232 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1232 + i32.store offset=4 + i32.const 1232 + i32.const 1232 call $~lib/string/String.__eq i32.eqz if @@ -8092,7 +8782,11 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store + local.get $0 i32.const 20 i32.sub i32.load offset=16 @@ -8108,21 +8802,47 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/string/String#charCodeAt (result i32) - i32.const -1 - global.get $std/string/str - local.tee $0 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.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.store + block $__inlined_func$~lib/string/String#charCodeAt + local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u i32.eqz - br_if $__inlined_func$~lib/string/String#charCodeAt - drop + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + local.set $0 + br $__inlined_func$~lib/string/String#charCodeAt + end local.get $0 i32.load16_u + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end + local.get $0 i32.const 104 i32.ne if @@ -8133,7 +8853,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 call $~lib/string/String.__not i32.eqz if @@ -8144,7 +8867,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + i32.const 1296 call $~lib/string/String.__not if i32.const 0 @@ -8154,7 +8880,10 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + i32.const 1328 call $~lib/string/String.__not if i32.const 0 @@ -8164,12 +8893,28 @@ call $~lib/builtins/abort unreachable end + i32.const 1472 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1504 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1648 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 1 global.set $~argumentsLength i32.const 0 call $~lib/string/String.fromCharCode@varargs - local.tee $10 - i32.const 1360 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + local.get $0 + i32.const 1296 call $~lib/string/String.__eq i32.eqz if @@ -8184,8 +8929,15 @@ global.set $~argumentsLength i32.const 54 call $~lib/string/String.fromCharCode@varargs - local.tee $11 - i32.const 1552 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + local.get $0 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -8200,8 +8952,15 @@ global.set $~argumentsLength i32.const 65590 call $~lib/string/String.fromCharCode@varargs - local.tee $12 - i32.const 1552 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + local.get $0 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -8215,8 +8974,15 @@ i32.const 55296 i32.const 57088 call $~lib/string/String.fromCharCode - local.tee $13 - i32.const 1584 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1792 + i32.store offset=4 + local.get $0 + i32.const 1792 call $~lib/string/String.__eq i32.eqz if @@ -8229,8 +8995,15 @@ end i32.const 0 call $~lib/string/String.fromCodePoint - local.tee $14 - i32.const 1360 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 + local.get $0 + i32.const 1296 call $~lib/string/String.__eq i32.eqz if @@ -8243,8 +9016,15 @@ end i32.const 54 call $~lib/string/String.fromCodePoint - local.tee $15 - i32.const 1552 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + local.get $0 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -8257,8 +9037,15 @@ end i32.const 119558 call $~lib/string/String.fromCodePoint - local.tee $16 - i32.const 1664 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1872 + i32.store offset=4 + local.get $0 + i32.const 1872 call $~lib/string/String.__eq i32.eqz if @@ -8269,54 +9056,83 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/string/String#startsWith (result i32) - global.get $std/string/str - local.set $2 - i32.const 1696 - if (result i32) - i32.const 1696 - else - i32.const 1696 - call $~lib/rt/pure/__release - i32.const 1728 - end - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + i32.const 1900 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + local.set $4 + block $__inlined_func$~lib/string/String#startsWith + local.get $1 + local.get $3 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 $0 + local.get $1 + local.get $1 + i32.const 0 + i32.gt_s select - local.tee $4 + local.tee $1 i32.add - local.get $0 - i32.gt_s + i32.lt_s if - i32.const 1696 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 + local.set $0 br $__inlined_func$~lib/string/String#startsWith end - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 1904 local.get $4 - i32.const 1696 - local.get $6 call $~lib/util/string/compareImpl i32.eqz - i32.const 1696 - call $~lib/rt/pure/__release + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer end + local.get $0 i32.eqz if i32.const 0 @@ -8326,50 +9142,80 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store + i32.const 1964 + i32.load + i32.const 1 + i32.shr_u + local.tee $3 + local.set $4 block $__inlined_func$~lib/string/String#endsWith - i32.const 1756 - i32.load - i32.const 1 - i32.shr_u - local.tee $2 - local.set $4 i32.const 536870910 local.get $1 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - local.get $5 + local.get $1 i32.const 536870910 - i32.gt_u + i32.gt_s select - local.get $2 + local.get $3 i32.sub - local.tee $2 + local.tee $1 i32.const 0 - i32.lt_s + i32.ge_s if - i32.const 1760 - call $~lib/rt/pure/__release - i32.const 0 - local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 1968 + local.get $4 + call $~lib/util/string/compareImpl + i32.eqz + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer br $__inlined_func$~lib/string/String#endsWith end - local.get $1 - local.get $2 - i32.const 1760 - local.get $4 - call $~lib/util/string/compareImpl - i32.eqz - local.set $1 - i32.const 1760 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + local.set $0 end - local.get $1 + local.get $0 i32.eqz if i32.const 0 @@ -8379,14 +9225,37 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 1792 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2000 + i32.store offset=4 + local.get $0 + i32.const 2000 i32.const 0 call $~lib/string/String#indexOf i32.const -1 i32.ne - i32.const 1792 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz if i32.const 0 @@ -8396,12 +9265,27 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + local.get $0 i32.const 0 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padStart - local.tee $4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -8412,12 +9296,27 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + local.get $0 i32.const 15 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padStart - local.tee $5 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -8428,12 +9327,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + i32.const 1264 i32.const 3 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padStart - local.tee $6 - i32.const 1856 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store offset=4 + local.get $0 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if @@ -8444,12 +9356,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 1264 i32.const 10 - i32.const 1328 + i32.const 1264 call $~lib/string/String#padStart - local.tee $17 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -8460,12 +9385,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 i32.const 1328 + i32.const 100 + i32.const 1264 call $~lib/string/String#padStart - local.tee $18 - i32.const 1392 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if @@ -8476,12 +9414,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + i32.const 2096 i32.const 5 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padStart - local.tee $19 - i32.const 1920 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2128 + i32.store offset=4 + local.get $0 + i32.const 2128 call $~lib/string/String.__eq i32.eqz if @@ -8492,12 +9443,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=12 + i32.const 2096 i32.const 6 - i32.const 1952 + i32.const 2160 call $~lib/string/String#padStart - local.tee $20 - i32.const 1984 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2192 + i32.store offset=4 + local.get $0 + i32.const 2192 call $~lib/string/String.__eq i32.eqz if @@ -8508,12 +9472,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=12 + i32.const 2096 i32.const 8 - i32.const 1952 + i32.const 2160 call $~lib/string/String#padStart - local.tee $21 - i32.const 2016 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2224 + i32.store offset=4 + local.get $0 + i32.const 2224 call $~lib/string/String.__eq i32.eqz if @@ -8524,12 +9501,27 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + local.get $0 i32.const 0 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padEnd - local.tee $22 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -8540,12 +9532,27 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + local.get $0 i32.const 15 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padEnd - local.tee $23 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -8556,12 +9563,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + i32.const 1264 i32.const 3 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padEnd - local.tee $24 - i32.const 1856 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store offset=4 + local.get $0 + i32.const 2064 call $~lib/string/String.__eq i32.eqz if @@ -8572,12 +9592,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 1264 i32.const 10 - i32.const 1328 + i32.const 1264 call $~lib/string/String#padEnd - local.tee $25 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -8588,12 +9621,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 i32.const 1328 + i32.const 100 + i32.const 1264 call $~lib/string/String#padEnd - local.tee $26 - i32.const 1392 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if @@ -8604,12 +9650,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2032 + i32.store offset=12 + i32.const 2096 i32.const 5 - i32.const 1824 + i32.const 2032 call $~lib/string/String#padEnd - local.tee $27 - i32.const 2064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2272 + i32.store offset=4 + local.get $0 + i32.const 2272 call $~lib/string/String.__eq i32.eqz if @@ -8620,12 +9679,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=12 + i32.const 2096 i32.const 6 - i32.const 1888 - call $~lib/string/String#padEnd - local.tee $28 i32.const 2096 + call $~lib/string/String#padEnd + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store offset=4 + local.get $0 + i32.const 2304 call $~lib/string/String.__eq i32.eqz if @@ -8636,12 +9708,25 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=12 + i32.const 2096 i32.const 8 - i32.const 1888 + i32.const 2096 call $~lib/string/String#padEnd - local.tee $29 - i32.const 2128 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2336 + i32.store offset=4 + local.get $0 + i32.const 2336 call $~lib/string/String.__eq i32.eqz if @@ -8652,8 +9737,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 i32.const 0 call $~lib/string/String#indexOf if @@ -8664,8 +9755,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1696 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + i32.const 1264 + i32.const 1904 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -8678,8 +9775,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + i32.const 1328 + i32.const 1328 i32.const 0 call $~lib/string/String#indexOf if @@ -8690,8 +9793,16 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 i32.const 0 call $~lib/string/String#indexOf if @@ -8702,8 +9813,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 1328 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 i32.const 0 call $~lib/string/String#indexOf if @@ -8714,8 +9832,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 0 call $~lib/string/String#indexOf i32.const 2 @@ -8728,8 +9853,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2208 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2416 + i32.store offset=4 + local.get $0 + i32.const 2416 i32.const 0 call $~lib/string/String#indexOf i32.const -1 @@ -8742,8 +9874,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 2 call $~lib/string/String#indexOf i32.const 2 @@ -8756,8 +9895,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 3 call $~lib/string/String#indexOf i32.const -1 @@ -8770,8 +9916,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2240 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2448 + i32.store offset=4 + local.get $0 + i32.const 2448 i32.const -1 call $~lib/string/String#indexOf i32.const 2 @@ -8784,8 +9937,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 i32.const 2147483647 call $~lib/string/String#lastIndexOf if @@ -8796,8 +9955,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1696 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + i32.const 1264 + i32.const 1904 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8810,11 +9975,22 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 1328 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 i32.const 2147483647 call $~lib/string/String#lastIndexOf + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $1 + i32.store + local.get $1 i32.const 20 i32.sub i32.load offset=16 @@ -8829,8 +10005,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8843,8 +10026,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2208 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2416 + i32.store offset=4 + local.get $0 + i32.const 2416 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8857,8 +10047,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2272 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2480 + i32.store offset=4 + local.get $0 + i32.const 2480 i32.const 2147483647 call $~lib/string/String#lastIndexOf i32.const 15 @@ -8871,8 +10068,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 2 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8885,8 +10089,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2176 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + local.get $0 + i32.const 2384 i32.const 3 call $~lib/string/String#lastIndexOf i32.const 2 @@ -8899,8 +10110,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2240 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2448 + i32.store offset=4 + local.get $0 + i32.const 2448 i32.const -1 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8913,8 +10131,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2304 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2512 + i32.store offset=4 + local.get $0 + i32.const 2512 i32.const 0 call $~lib/string/String#lastIndexOf i32.const -1 @@ -8927,8 +10152,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 1696 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store offset=4 + local.get $0 + i32.const 1904 i32.const 0 call $~lib/string/String#lastIndexOf if @@ -8939,8 +10171,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 call $~lib/string/String#localeCompare if i32.const 0 @@ -8950,8 +10188,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 i32.const 1328 + i32.const 1264 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -8963,8 +10207,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + i32.const 1264 i32.const 1328 - i32.const 1392 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -8976,8 +10226,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1728 - i32.const 1728 + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1936 + i32.store offset=4 + i32.const 1936 + i32.const 1936 call $~lib/string/String#localeCompare if i32.const 0 @@ -8987,8 +10243,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 2336 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2544 + i32.store offset=4 + i32.const 2096 + i32.const 2544 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -9000,8 +10262,14 @@ call $~lib/builtins/abort unreachable end - i32.const 2336 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2544 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 2544 + i32.const 2096 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -9013,8 +10281,14 @@ call $~lib/builtins/abort unreachable end - i32.const 2368 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 2576 + i32.const 2096 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -9026,8 +10300,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 2368 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=4 + i32.const 2096 + i32.const 2576 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -9039,8 +10319,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1856 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2064 + i32.store offset=4 + i32.const 1264 + i32.const 2064 call $~lib/string/String#localeCompare i32.const -1 i32.ne @@ -9052,8 +10338,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1296 + i32.const 1264 call $~lib/string/String#localeCompare i32.const 1 i32.ne @@ -9065,10 +10357,20 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + i32.const 1264 call $~lib/string/String#trimStart - local.tee $30 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -9079,10 +10381,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2400 + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=8 + i32.const 2608 call $~lib/string/String#trimStart - local.tee $31 - i32.const 2400 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=4 + local.get $0 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if @@ -9093,10 +10405,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2432 + global.get $~lib/memory/__stack_pointer + i32.const 2640 + i32.store offset=8 + i32.const 2640 call $~lib/string/String#trimStart - local.tee $32 - i32.const 2480 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2688 + i32.store offset=4 + local.get $0 + i32.const 2688 call $~lib/string/String.__eq i32.eqz if @@ -9107,10 +10429,20 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + i32.const 1264 call $~lib/string/String#trimEnd - local.tee $33 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -9121,10 +10453,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2400 + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=8 + i32.const 2608 call $~lib/string/String#trimEnd - local.tee $34 - i32.const 2400 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=4 + local.get $0 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if @@ -9135,10 +10477,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2432 + global.get $~lib/memory/__stack_pointer + i32.const 2640 + i32.store offset=8 + i32.const 2640 call $~lib/string/String#trimEnd - local.tee $35 - i32.const 2528 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2736 + i32.store offset=4 + local.get $0 + i32.const 2736 call $~lib/string/String.__eq i32.eqz if @@ -9149,10 +10501,20 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + i32.const 1264 call $~lib/string/String#trim - local.tee $36 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -9163,10 +10525,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2400 + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=8 + i32.const 2608 call $~lib/string/String#trim - local.tee $37 - i32.const 2400 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2608 + i32.store offset=4 + local.get $0 + i32.const 2608 call $~lib/string/String.__eq i32.eqz if @@ -9177,10 +10549,20 @@ call $~lib/builtins/abort unreachable end - i32.const 2432 + global.get $~lib/memory/__stack_pointer + i32.const 2640 + i32.store offset=8 + i32.const 2640 call $~lib/string/String#trim - local.tee $38 - i32.const 1888 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if @@ -9191,7 +10573,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2576 + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store + i32.const 2784 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -9204,7 +10589,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2608 + global.get $~lib/memory/__stack_pointer + i32.const 2816 + i32.store + i32.const 2816 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -9217,7 +10605,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2640 + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store + i32.const 2848 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9230,7 +10621,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2672 + global.get $~lib/memory/__stack_pointer + i32.const 2880 + i32.store + i32.const 2880 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9243,7 +10637,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2704 + global.get $~lib/memory/__stack_pointer + i32.const 2912 + i32.store + i32.const 2912 i32.const 0 call $~lib/string/parseInt f64.const 5 @@ -9256,7 +10653,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2736 + global.get $~lib/memory/__stack_pointer + i32.const 2944 + i32.store + i32.const 2944 i32.const 0 call $~lib/string/parseInt f64.const 455 @@ -9269,7 +10669,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2768 + global.get $~lib/memory/__stack_pointer + i32.const 2976 + i32.store + i32.const 2976 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -9282,7 +10685,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2800 + global.get $~lib/memory/__stack_pointer + i32.const 3008 + i32.store + i32.const 3008 i32.const 0 call $~lib/string/parseInt f64.const 3855 @@ -9295,7 +10701,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2832 + global.get $~lib/memory/__stack_pointer + i32.const 3040 + i32.store + i32.const 3040 i32.const 0 call $~lib/string/parseInt f64.const 11 @@ -9308,7 +10717,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2864 + global.get $~lib/memory/__stack_pointer + i32.const 3072 + i32.store + i32.const 3072 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9321,7 +10733,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2896 + global.get $~lib/memory/__stack_pointer + i32.const 3104 + i32.store + i32.const 3104 i32.const 0 call $~lib/string/parseInt f64.const -123 @@ -9334,7 +10749,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2928 + global.get $~lib/memory/__stack_pointer + i32.const 3136 + i32.store + i32.const 3136 i32.const 0 call $~lib/string/parseInt f64.const 123 @@ -9347,7 +10765,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2960 + global.get $~lib/memory/__stack_pointer + i32.const 3168 + i32.store + i32.const 3168 i32.const 0 call $~lib/string/parseInt f64.const -12 @@ -9360,7 +10781,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2576 + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store + i32.const 2784 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -9373,7 +10797,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2992 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store + i32.const 3200 i32.const 0 call $~lib/string/parseInt f64.const 0 @@ -9386,7 +10813,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3024 + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store + i32.const 3232 i32.const 16 call $~lib/string/parseInt f64.const 2833 @@ -9399,7 +10829,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3056 + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store + i32.const 3264 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9412,7 +10845,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3088 + global.get $~lib/memory/__stack_pointer + i32.const 3296 + i32.store + i32.const 3296 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9425,7 +10861,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3120 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store + i32.const 3328 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9438,7 +10877,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3152 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + i32.const 3360 i32.const 0 call $~lib/string/parseInt i64.reinterpret_f64 @@ -9453,12 +10895,20 @@ call $~lib/builtins/abort unreachable end - i32.const 3184 + global.get $~lib/memory/__stack_pointer + i32.const 3392 + i32.store + i32.const 3392 i32.const 0 call $~lib/string/parseInt - i32.const 3232 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store + i32.const 3440 i32.const 16 call $~lib/string/parseInt + local.get $2 f64.ne if i32.const 0 @@ -9468,7 +10918,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3264 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store + i32.const 3472 i32.const 0 call $~lib/string/parseInt f64.const 36893488147419103232 @@ -9481,7 +10934,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3264 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store + i32.const 3472 i32.const 13 call $~lib/string/parseInt f64.const 5135857308667095285760 @@ -9494,7 +10950,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3328 + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store + i32.const 3536 i32.const 10 call $~lib/string/parseInt f64.const -1.e+24 @@ -9507,7 +10966,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3408 + global.get $~lib/memory/__stack_pointer + i32.const 3616 + i32.store + i32.const 3616 i32.const 16 call $~lib/string/parseInt f64.const 75557863725914323419136 @@ -9520,7 +10982,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3472 + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store + i32.const 3680 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9533,7 +10998,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3504 + global.get $~lib/memory/__stack_pointer + i32.const 3712 + i32.store + i32.const 3712 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -9546,7 +11014,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3552 + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store + i32.const 3760 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -9559,7 +11030,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3584 + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store + i32.const 3792 i32.const 0 call $~lib/string/parseInt f64.const 2 @@ -9572,11 +11046,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9586,11 +11063,14 @@ call $~lib/builtins/abort unreachable end - i32.const 3632 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store + i32.const 3840 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9600,11 +11080,14 @@ call $~lib/builtins/abort unreachable end - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3872 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9614,11 +11097,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1952 + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + i32.const 2160 i32.const 37 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9628,11 +11114,14 @@ call $~lib/builtins/abort unreachable end - i32.const 3696 + global.get $~lib/memory/__stack_pointer + i32.const 3904 + i32.store + i32.const 3904 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9642,11 +11131,14 @@ call $~lib/builtins/abort unreachable end - i32.const 3728 + global.get $~lib/memory/__stack_pointer + i32.const 3936 + i32.store + i32.const 3936 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9656,15 +11148,31 @@ call $~lib/builtins/abort unreachable end - i32.const 3728 + global.get $~lib/memory/__stack_pointer + i32.const 3936 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 3936 + i32.store + i32.const 3936 i32.const 0 call $~lib/util/string/strtol f32.demote_f64 - local.set $9 - i32.const 3728 - call $~lib/rt/pure/__release - local.get $9 - local.get $9 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + local.get $5 f32.eq if i32.const 0 @@ -9674,11 +11182,14 @@ call $~lib/builtins/abort unreachable end - i32.const 3728 + global.get $~lib/memory/__stack_pointer + i32.const 3936 + i32.store + i32.const 3936 i32.const 0 call $~lib/string/parseInt - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9688,10 +11199,25 @@ call $~lib/builtins/abort unreachable end - i32.const 3760 + global.get $~lib/memory/__stack_pointer + i32.const 3968 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 3968 + i32.store call $~lib/util/string/strtol - i32.const 3760 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 2147483647 i32.ne if @@ -9702,10 +11228,25 @@ call $~lib/builtins/abort unreachable end - i32.const 3808 + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store + global.get $~lib/memory/__stack_pointer + i32.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 4016 + i32.store call $~lib/util/string/strtol - i32.const 3808 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i64.const 9223372036854775807 i64.ne if @@ -9716,7 +11257,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2576 + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store + i32.const 2784 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -9728,7 +11272,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2640 + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store + i32.const 2848 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -9740,7 +11287,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4064 + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store + i32.const 4272 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -9752,7 +11302,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4096 + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store + i32.const 4304 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -9764,7 +11317,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4128 + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store + i32.const 4336 call $~lib/string/parseFloat f64.const 1e-05 f64.ne @@ -9776,7 +11332,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4160 + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store + i32.const 4368 call $~lib/string/parseFloat f64.const -1e-05 f64.ne @@ -9788,7 +11347,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4192 + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store + i32.const 4400 call $~lib/string/parseFloat f64.const -3e-23 f64.ne @@ -9800,7 +11362,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4240 + global.get $~lib/memory/__stack_pointer + i32.const 4448 + i32.store + i32.const 4448 call $~lib/string/parseFloat f64.const 3e21 f64.ne @@ -9812,7 +11377,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4288 + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store + i32.const 4496 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -9824,7 +11392,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4320 + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store + i32.const 4528 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -9836,7 +11407,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4352 + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store + i32.const 4560 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -9848,7 +11422,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4384 + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store + i32.const 4592 call $~lib/string/parseFloat f64.const 0.25 f64.ne @@ -9860,7 +11437,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4416 + global.get $~lib/memory/__stack_pointer + i32.const 4624 + i32.store + i32.const 4624 call $~lib/string/parseFloat f64.const 1e3 f64.ne @@ -9872,7 +11452,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4448 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store + i32.const 4656 call $~lib/string/parseFloat f64.const 1e-10 f64.ne @@ -9884,7 +11467,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4496 + global.get $~lib/memory/__stack_pointer + i32.const 4704 + i32.store + i32.const 4704 call $~lib/string/parseFloat f64.const 1e-30 f64.ne @@ -9896,7 +11482,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4544 + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store + i32.const 4752 call $~lib/string/parseFloat f64.const 1e-323 f64.ne @@ -9908,7 +11497,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4592 + global.get $~lib/memory/__stack_pointer + i32.const 4800 + i32.store + i32.const 4800 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -9920,7 +11512,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4640 + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store + i32.const 4848 call $~lib/string/parseFloat f64.const 1.e+308 f64.ne @@ -9932,7 +11527,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4672 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store + i32.const 4880 call $~lib/string/parseFloat f64.const inf f64.ne @@ -9944,10 +11542,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + i32.const 1264 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -9957,7 +11558,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4704 + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store + i32.const 4912 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -9969,7 +11573,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4752 + global.get $~lib/memory/__stack_pointer + i32.const 4960 + i32.store + i32.const 4960 call $~lib/string/parseFloat f64.const 1e-10 f64.ne @@ -9981,7 +11588,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4800 + global.get $~lib/memory/__stack_pointer + i32.const 5008 + i32.store + i32.const 5008 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -9993,7 +11603,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4848 + global.get $~lib/memory/__stack_pointer + i32.const 5056 + i32.store + i32.const 5056 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10005,7 +11618,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4880 + global.get $~lib/memory/__stack_pointer + i32.const 5088 + i32.store + i32.const 5088 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10017,7 +11633,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4912 + global.get $~lib/memory/__stack_pointer + i32.const 5120 + i32.store + i32.const 5120 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10029,7 +11648,10 @@ call $~lib/builtins/abort unreachable end - i32.const 4960 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store + i32.const 5168 call $~lib/string/parseFloat f64.const 123456789 f64.ne @@ -10041,7 +11663,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5008 + global.get $~lib/memory/__stack_pointer + i32.const 5216 + i32.store + i32.const 5216 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10053,7 +11678,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5056 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store + i32.const 5264 call $~lib/string/parseFloat f64.const 1e-60 f64.ne @@ -10065,7 +11693,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5088 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store + i32.const 5296 call $~lib/string/parseFloat f64.const 1.e+60 f64.ne @@ -10077,7 +11708,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5120 + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store + i32.const 5328 call $~lib/string/parseFloat f64.const 123.4 f64.ne @@ -10089,7 +11723,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5152 + global.get $~lib/memory/__stack_pointer + i32.const 5360 + i32.store + i32.const 5360 call $~lib/string/parseFloat f64.const -0 f64.ne @@ -10101,7 +11738,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5200 + global.get $~lib/memory/__stack_pointer + i32.const 5408 + i32.store + i32.const 5408 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10113,7 +11753,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5232 + global.get $~lib/memory/__stack_pointer + i32.const 5440 + i32.store + i32.const 5440 call $~lib/string/parseFloat f64.const -1.1 f64.ne @@ -10125,7 +11768,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5280 + global.get $~lib/memory/__stack_pointer + i32.const 5488 + i32.store + i32.const 5488 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10137,7 +11783,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5328 + global.get $~lib/memory/__stack_pointer + i32.const 5536 + i32.store + i32.const 5536 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10149,7 +11798,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5376 + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store + i32.const 5584 call $~lib/string/parseFloat f64.const 0.022 f64.ne @@ -10161,7 +11813,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5424 + global.get $~lib/memory/__stack_pointer + i32.const 5632 + i32.store + i32.const 5632 call $~lib/string/parseFloat f64.const 11 f64.ne @@ -10173,7 +11828,10 @@ call $~lib/builtins/abort unreachable end - i32.const 2992 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store + i32.const 3200 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10185,7 +11843,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5456 + global.get $~lib/memory/__stack_pointer + i32.const 5664 + i32.store + i32.const 5664 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10197,7 +11858,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5488 + global.get $~lib/memory/__stack_pointer + i32.const 5696 + i32.store + i32.const 5696 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10209,7 +11873,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5520 + global.get $~lib/memory/__stack_pointer + i32.const 5728 + i32.store + i32.const 5728 call $~lib/string/parseFloat f64.const 1.1 f64.ne @@ -10221,7 +11888,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5552 + global.get $~lib/memory/__stack_pointer + i32.const 5760 + i32.store + i32.const 5760 call $~lib/string/parseFloat f64.const -1.1 f64.ne @@ -10233,7 +11903,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5584 + global.get $~lib/memory/__stack_pointer + i32.const 5792 + i32.store + i32.const 5792 call $~lib/string/parseFloat f64.const -1.1 f64.ne @@ -10245,7 +11918,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5616 + global.get $~lib/memory/__stack_pointer + i32.const 5824 + i32.store + i32.const 5824 call $~lib/string/parseFloat f64.const -1.1 f64.ne @@ -10257,7 +11933,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5648 + global.get $~lib/memory/__stack_pointer + i32.const 5856 + i32.store + i32.const 5856 call $~lib/string/parseFloat f64.const -1.1 f64.ne @@ -10269,7 +11948,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5680 + global.get $~lib/memory/__stack_pointer + i32.const 5888 + i32.store + i32.const 5888 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10281,7 +11963,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5712 + global.get $~lib/memory/__stack_pointer + i32.const 5920 + i32.store + i32.const 5920 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10293,7 +11978,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5744 + global.get $~lib/memory/__stack_pointer + i32.const 5952 + i32.store + i32.const 5952 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10305,7 +11993,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5776 + global.get $~lib/memory/__stack_pointer + i32.const 5984 + i32.store + i32.const 5984 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10317,7 +12008,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5808 + global.get $~lib/memory/__stack_pointer + i32.const 6016 + i32.store + i32.const 6016 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10329,7 +12023,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5840 + global.get $~lib/memory/__stack_pointer + i32.const 6048 + i32.store + i32.const 6048 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10341,7 +12038,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5872 + global.get $~lib/memory/__stack_pointer + i32.const 6080 + i32.store + i32.const 6080 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10353,7 +12053,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5920 + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.store + i32.const 6128 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10365,7 +12068,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5952 + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store + i32.const 6160 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10377,7 +12083,10 @@ call $~lib/builtins/abort unreachable end - i32.const 5984 + global.get $~lib/memory/__stack_pointer + i32.const 6192 + i32.store + i32.const 6192 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -10389,7 +12098,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6016 + global.get $~lib/memory/__stack_pointer + i32.const 6224 + i32.store + i32.const 6224 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10401,7 +12113,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6048 + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store + i32.const 6256 call $~lib/string/parseFloat f64.const 10 f64.ne @@ -10413,7 +12128,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6080 + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store + i32.const 6288 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10425,7 +12143,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6112 + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store + i32.const 6320 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -10437,7 +12158,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6144 + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store + i32.const 6352 call $~lib/string/parseFloat f64.const 0.01 f64.ne @@ -10449,7 +12173,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6192 + global.get $~lib/memory/__stack_pointer + i32.const 6400 + i32.store + i32.const 6400 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10461,7 +12188,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6224 + global.get $~lib/memory/__stack_pointer + i32.const 6432 + i32.store + i32.const 6432 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10473,7 +12203,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6256 + global.get $~lib/memory/__stack_pointer + i32.const 6464 + i32.store + i32.const 6464 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10485,7 +12218,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6288 + global.get $~lib/memory/__stack_pointer + i32.const 6496 + i32.store + i32.const 6496 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -10497,7 +12233,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6320 + global.get $~lib/memory/__stack_pointer + i32.const 6528 + i32.store + i32.const 6528 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10509,7 +12248,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6352 + global.get $~lib/memory/__stack_pointer + i32.const 6560 + i32.store + i32.const 6560 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10521,7 +12263,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6384 + global.get $~lib/memory/__stack_pointer + i32.const 6592 + i32.store + i32.const 6592 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10533,7 +12278,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6416 + global.get $~lib/memory/__stack_pointer + i32.const 6624 + i32.store + i32.const 6624 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -10545,7 +12293,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6448 + global.get $~lib/memory/__stack_pointer + i32.const 6656 + i32.store + i32.const 6656 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10557,7 +12308,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6480 + global.get $~lib/memory/__stack_pointer + i32.const 6688 + i32.store + i32.const 6688 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10569,7 +12323,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6512 + global.get $~lib/memory/__stack_pointer + i32.const 6720 + i32.store + i32.const 6720 call $~lib/string/parseFloat f64.const -0 f64.ne @@ -10581,7 +12338,10 @@ call $~lib/builtins/abort unreachable end - i32.const 6544 + global.get $~lib/memory/__stack_pointer + i32.const 6752 + i32.store + i32.const 6752 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10593,7 +12353,10 @@ call $~lib/builtins/abort unreachable end - i32.const 3152 + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store + i32.const 3360 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10605,10 +12368,13 @@ call $~lib/builtins/abort unreachable end - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3872 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10618,10 +12384,13 @@ call $~lib/builtins/abort unreachable end - i32.const 3632 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store + i32.const 3840 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10631,10 +12400,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6576 + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store + i32.const 6784 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10644,10 +12416,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6608 + global.get $~lib/memory/__stack_pointer + i32.const 6816 + i32.store + i32.const 6816 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10657,10 +12432,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6640 + global.get $~lib/memory/__stack_pointer + i32.const 6848 + i32.store + i32.const 6848 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10670,10 +12448,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6672 + global.get $~lib/memory/__stack_pointer + i32.const 6880 + i32.store + i32.const 6880 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10683,10 +12464,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6704 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store + i32.const 6912 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10696,10 +12480,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6736 + global.get $~lib/memory/__stack_pointer + i32.const 6944 + i32.store + i32.const 6944 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10709,10 +12496,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6768 + global.get $~lib/memory/__stack_pointer + i32.const 6976 + i32.store + i32.const 6976 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10722,10 +12512,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6800 + global.get $~lib/memory/__stack_pointer + i32.const 7008 + i32.store + i32.const 7008 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10735,10 +12528,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6832 + global.get $~lib/memory/__stack_pointer + i32.const 7040 + i32.store + i32.const 7040 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10748,10 +12544,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6864 + global.get $~lib/memory/__stack_pointer + i32.const 7072 + i32.store + i32.const 7072 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10761,10 +12560,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6896 + global.get $~lib/memory/__stack_pointer + i32.const 7104 + i32.store + i32.const 7104 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10774,10 +12576,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6928 + global.get $~lib/memory/__stack_pointer + i32.const 7136 + i32.store + i32.const 7136 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10787,10 +12592,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6960 + global.get $~lib/memory/__stack_pointer + i32.const 7168 + i32.store + i32.const 7168 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10800,10 +12608,13 @@ call $~lib/builtins/abort unreachable end - i32.const 6992 + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store + i32.const 7200 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -10813,7 +12624,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7024 + global.get $~lib/memory/__stack_pointer + i32.const 7232 + i32.store + i32.const 7232 call $~lib/string/parseFloat f64.const 1e22 f64.ne @@ -10825,7 +12639,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7056 + global.get $~lib/memory/__stack_pointer + i32.const 7264 + i32.store + i32.const 7264 call $~lib/string/parseFloat f64.const 1e-22 f64.ne @@ -10837,7 +12654,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7088 + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store + i32.const 7296 call $~lib/string/parseFloat f64.const 1.e+23 f64.ne @@ -10849,7 +12669,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7120 + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store + i32.const 7328 call $~lib/string/parseFloat f64.const 1e-23 f64.ne @@ -10861,7 +12684,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7152 + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store + i32.const 7360 call $~lib/string/parseFloat f64.const 1.e+37 f64.ne @@ -10873,7 +12699,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7184 + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store + i32.const 7392 call $~lib/string/parseFloat f64.const 1e-37 f64.ne @@ -10885,7 +12714,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7216 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + i32.const 7424 call $~lib/string/parseFloat f64.const 1.e+38 f64.ne @@ -10897,7 +12729,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7248 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store + i32.const 7456 call $~lib/string/parseFloat f64.const 1e-38 f64.ne @@ -10909,7 +12744,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7280 + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store + i32.const 7488 call $~lib/string/parseFloat f64.const 2.220446049250313e-16 f64.ne @@ -10921,7 +12759,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7344 + global.get $~lib/memory/__stack_pointer + i32.const 7552 + i32.store + i32.const 7552 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 f64.ne @@ -10933,7 +12774,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7424 + global.get $~lib/memory/__stack_pointer + i32.const 7632 + i32.store + i32.const 7632 call $~lib/string/parseFloat f64.const 5e-324 f64.ne @@ -10945,7 +12789,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7456 + global.get $~lib/memory/__stack_pointer + i32.const 7664 + i32.store + i32.const 7664 call $~lib/string/parseFloat f64.const 1.e+308 f64.ne @@ -10957,7 +12804,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7504 + global.get $~lib/memory/__stack_pointer + i32.const 7712 + i32.store + i32.const 7712 call $~lib/string/parseFloat f64.const 1 f64.ne @@ -10969,7 +12819,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7648 + global.get $~lib/memory/__stack_pointer + i32.const 7856 + i32.store + i32.const 7856 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -10981,7 +12834,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7696 + global.get $~lib/memory/__stack_pointer + i32.const 7904 + i32.store + i32.const 7904 call $~lib/string/parseFloat f64.const inf f64.ne @@ -10993,7 +12849,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7744 + global.get $~lib/memory/__stack_pointer + i32.const 7952 + i32.store + i32.const 7952 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -11005,7 +12864,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7792 + global.get $~lib/memory/__stack_pointer + i32.const 8000 + i32.store + i32.const 8000 call $~lib/string/parseFloat f64.const -inf f64.ne @@ -11017,7 +12879,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7840 + global.get $~lib/memory/__stack_pointer + i32.const 8048 + i32.store + i32.const 8048 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -11029,7 +12894,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7888 + global.get $~lib/memory/__stack_pointer + i32.const 8096 + i32.store + i32.const 8096 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11041,7 +12909,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7936 + global.get $~lib/memory/__stack_pointer + i32.const 8144 + i32.store + i32.const 8144 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11053,7 +12924,10 @@ call $~lib/builtins/abort unreachable end - i32.const 7968 + global.get $~lib/memory/__stack_pointer + i32.const 8176 + i32.store + i32.const 8176 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11065,7 +12939,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8016 + global.get $~lib/memory/__stack_pointer + i32.const 8224 + i32.store + i32.const 8224 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11077,7 +12954,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8064 + global.get $~lib/memory/__stack_pointer + i32.const 8272 + i32.store + i32.const 8272 call $~lib/string/parseFloat f64.const -inf f64.ne @@ -11089,7 +12969,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8112 + global.get $~lib/memory/__stack_pointer + i32.const 8320 + i32.store + i32.const 8320 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11101,7 +12984,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8160 + global.get $~lib/memory/__stack_pointer + i32.const 8368 + i32.store + i32.const 8368 call $~lib/string/parseFloat f64.const inf f64.ne @@ -11113,10 +12999,13 @@ call $~lib/builtins/abort unreachable end - i32.const 8208 + global.get $~lib/memory/__stack_pointer + i32.const 8416 + i32.store + i32.const 8416 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -11126,10 +13015,13 @@ call $~lib/builtins/abort unreachable end - i32.const 8240 + global.get $~lib/memory/__stack_pointer + i32.const 8448 + i32.store + i32.const 8448 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -11139,10 +13031,13 @@ call $~lib/builtins/abort unreachable end - i32.const 8288 + global.get $~lib/memory/__stack_pointer + i32.const 8496 + i32.store + i32.const 8496 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -11152,7 +13047,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8336 + global.get $~lib/memory/__stack_pointer + i32.const 8544 + i32.store + i32.const 8544 call $~lib/string/parseFloat f64.const 0 f64.ne @@ -11164,7 +13062,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8528 + global.get $~lib/memory/__stack_pointer + i32.const 8736 + i32.store + i32.const 8736 call $~lib/string/parseFloat f64.const 1e-323 f64.ne @@ -11176,7 +13077,10 @@ call $~lib/builtins/abort unreachable end - i32.const 8720 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store + i32.const 8928 call $~lib/string/parseFloat f64.const 2.225073858507202e-308 f64.ne @@ -11188,19 +13092,50 @@ call $~lib/builtins/abort unreachable end - i32.const 8912 - i32.const 9072 + global.get $~lib/memory/__stack_pointer + i32.const 9120 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 9280 + i32.store offset=32 + i32.const 9120 + i32.const 9280 call $~lib/string/String.__concat - local.tee $40 - i32.const 9232 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 9440 + i32.store offset=24 + local.get $0 + i32.const 9440 call $~lib/string/String.__concat - local.tee $41 - i32.const 9392 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 9600 + i32.store offset=12 + local.get $0 + i32.const 9600 call $~lib/string/String.__concat - local.tee $42 - i32.const 9552 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9760 + i32.store offset=8 + local.get $0 + i32.const 9760 call $~lib/string/String.__concat - local.tee $43 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $~lib/string/parseFloat f64.const 1797693134862315708145274e284 f64.ne @@ -11212,7 +13147,10 @@ call $~lib/builtins/abort unreachable end - i32.const 9712 + global.get $~lib/memory/__stack_pointer + i32.const 9920 + i32.store + i32.const 9920 call $~lib/string/parseFloat f64.const 9.753531888799502e-104 f64.ne @@ -11224,7 +13162,10 @@ call $~lib/builtins/abort unreachable end - i32.const 9824 + global.get $~lib/memory/__stack_pointer + i32.const 10032 + i32.store + i32.const 10032 call $~lib/string/parseFloat f64.const 0.5961860348131807 f64.ne @@ -11236,7 +13177,10 @@ call $~lib/builtins/abort unreachable end - i32.const 9936 + global.get $~lib/memory/__stack_pointer + i32.const 10144 + i32.store + i32.const 10144 call $~lib/string/parseFloat f64.const 0.18150131692180388 f64.ne @@ -11248,7 +13192,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10048 + global.get $~lib/memory/__stack_pointer + i32.const 10256 + i32.store + i32.const 10256 call $~lib/string/parseFloat f64.const 0.42070823575344535 f64.ne @@ -11260,7 +13207,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10160 + global.get $~lib/memory/__stack_pointer + i32.const 10368 + i32.store + i32.const 10368 call $~lib/string/parseFloat f64.const 0.6654686306516261 f64.ne @@ -11272,7 +13222,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10272 + global.get $~lib/memory/__stack_pointer + i32.const 10480 + i32.store + i32.const 10480 call $~lib/string/parseFloat f64.const 0.6101852922970868 f64.ne @@ -11284,7 +13237,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10384 + global.get $~lib/memory/__stack_pointer + i32.const 10592 + i32.store + i32.const 10592 call $~lib/string/parseFloat f64.const 0.7696695208236968 f64.ne @@ -11296,7 +13252,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10496 + global.get $~lib/memory/__stack_pointer + i32.const 10704 + i32.store + i32.const 10704 call $~lib/string/parseFloat f64.const 0.25050653222286823 f64.ne @@ -11308,7 +13267,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10608 + global.get $~lib/memory/__stack_pointer + i32.const 10816 + i32.store + i32.const 10816 call $~lib/string/parseFloat f64.const 0.2740037230228005 f64.ne @@ -11320,7 +13282,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10720 + global.get $~lib/memory/__stack_pointer + i32.const 10928 + i32.store + i32.const 10928 call $~lib/string/parseFloat f64.const 0.20723093500497428 f64.ne @@ -11332,7 +13297,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10832 + global.get $~lib/memory/__stack_pointer + i32.const 11040 + i32.store + i32.const 11040 call $~lib/string/parseFloat f64.const 7.900280238081605 f64.ne @@ -11344,7 +13312,10 @@ call $~lib/builtins/abort unreachable end - i32.const 10944 + global.get $~lib/memory/__stack_pointer + i32.const 11152 + i32.store + i32.const 11152 call $~lib/string/parseFloat f64.const 98.22860653737297 f64.ne @@ -11356,7 +13327,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11056 + global.get $~lib/memory/__stack_pointer + i32.const 11264 + i32.store + i32.const 11264 call $~lib/string/parseFloat f64.const 746.894972319037 f64.ne @@ -11368,7 +13342,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11168 + global.get $~lib/memory/__stack_pointer + i32.const 11376 + i32.store + i32.const 11376 call $~lib/string/parseFloat f64.const 1630.2683202827284 f64.ne @@ -11380,7 +13357,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11280 + global.get $~lib/memory/__stack_pointer + i32.const 11488 + i32.store + i32.const 11488 call $~lib/string/parseFloat f64.const 46371.68629719171 f64.ne @@ -11392,7 +13372,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11392 + global.get $~lib/memory/__stack_pointer + i32.const 11600 + i32.store + i32.const 11600 call $~lib/string/parseFloat f64.const 653780.5944497711 f64.ne @@ -11404,7 +13387,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11504 + global.get $~lib/memory/__stack_pointer + i32.const 11712 + i32.store + i32.const 11712 call $~lib/string/parseFloat f64.const 234632.43565024371 f64.ne @@ -11416,7 +13402,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11616 + global.get $~lib/memory/__stack_pointer + i32.const 11824 + i32.store + i32.const 11824 call $~lib/string/parseFloat f64.const 97094817.16420048 f64.ne @@ -11428,7 +13417,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11728 + global.get $~lib/memory/__stack_pointer + i32.const 11936 + i32.store + i32.const 11936 call $~lib/string/parseFloat f64.const 499690852.20518744 f64.ne @@ -11440,7 +13432,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11840 + global.get $~lib/memory/__stack_pointer + i32.const 12048 + i32.store + i32.const 12048 call $~lib/string/parseFloat f64.const 7925201200557245595648 f64.ne @@ -11452,7 +13447,10 @@ call $~lib/builtins/abort unreachable end - i32.const 11952 + global.get $~lib/memory/__stack_pointer + i32.const 12160 + i32.store + i32.const 12160 call $~lib/string/parseFloat f64.const 6096564585983177528398588e5 f64.ne @@ -11464,7 +13462,10 @@ call $~lib/builtins/abort unreachable end - i32.const 12064 + global.get $~lib/memory/__stack_pointer + i32.const 12272 + i32.store + i32.const 12272 call $~lib/string/parseFloat f64.const 4800416117477028695992383e42 f64.ne @@ -11476,7 +13477,10 @@ call $~lib/builtins/abort unreachable end - i32.const 12176 + global.get $~lib/memory/__stack_pointer + i32.const 12384 + i32.store + i32.const 12384 call $~lib/string/parseFloat f64.const 8524829079817968137287277e80 f64.ne @@ -11488,7 +13492,10 @@ call $~lib/builtins/abort unreachable end - i32.const 12288 + global.get $~lib/memory/__stack_pointer + i32.const 12496 + i32.store + i32.const 12496 call $~lib/string/parseFloat f64.const 3271239291709782092398754e243 f64.ne @@ -11500,10 +13507,13 @@ call $~lib/builtins/abort unreachable end - i32.const 12400 + global.get $~lib/memory/__stack_pointer + i32.const 12608 + i32.store + i32.const 12608 call $~lib/string/parseFloat - local.tee $3 - local.get $3 + local.tee $2 + local.get $2 f64.eq if i32.const 0 @@ -11513,7 +13523,10 @@ call $~lib/builtins/abort unreachable end - i32.const 12432 + global.get $~lib/memory/__stack_pointer + i32.const 12640 + i32.store + i32.const 12640 call $~lib/string/parseFloat f64.const 0.1 f64.ne @@ -11525,13 +13538,26 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 12464 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.const 12672 call $~lib/string/String.__concat local.tee $0 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 12496 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=4 + local.get $0 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if @@ -11542,8 +13568,14 @@ call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 + i32.const 1328 call $~lib/string/String.__ne i32.eqz if @@ -11554,12 +13586,14 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if @@ -11570,7 +13604,13 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + i32.const 1264 i32.const 0 call $~lib/string/String.__ne i32.eqz @@ -11582,8 +13622,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 0 + i32.const 1264 call $~lib/string/String.__ne i32.eqz if @@ -11594,8 +13640,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 12464 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + i32.const 1328 + i32.const 12672 call $~lib/string/String.__ne i32.eqz if @@ -11606,8 +13658,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + i32.const 1328 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if @@ -11618,8 +13676,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12528 - i32.const 12560 + global.get $~lib/memory/__stack_pointer + i32.const 12736 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12768 + i32.store offset=4 + i32.const 12736 + i32.const 12768 call $~lib/string/String.__ne i32.eqz if @@ -11630,8 +13694,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12528 - i32.const 12528 + global.get $~lib/memory/__stack_pointer + i32.const 12736 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12736 + i32.store offset=4 + i32.const 12736 + i32.const 12736 call $~lib/string/String.__eq i32.eqz if @@ -11642,8 +13712,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12592 - i32.const 12624 + global.get $~lib/memory/__stack_pointer + i32.const 12800 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12832 + i32.store offset=4 + i32.const 12800 + i32.const 12832 call $~lib/string/String.__ne i32.eqz if @@ -11654,8 +13730,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12656 - i32.const 12688 + global.get $~lib/memory/__stack_pointer + i32.const 12864 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12896 + i32.store offset=4 + i32.const 12864 + i32.const 12896 call $~lib/string/String.__ne i32.eqz if @@ -11666,8 +13748,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12720 - i32.const 12720 + global.get $~lib/memory/__stack_pointer + i32.const 12928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12928 + i32.store offset=4 + i32.const 12928 + i32.const 12928 call $~lib/string/String.__eq i32.eqz if @@ -11678,8 +13766,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12720 - i32.const 12768 + global.get $~lib/memory/__stack_pointer + i32.const 12928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12976 + i32.store offset=4 + i32.const 12928 + i32.const 12976 call $~lib/string/String.__ne i32.eqz if @@ -11690,8 +13784,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12816 - i32.const 12864 + global.get $~lib/memory/__stack_pointer + i32.const 13024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13072 + i32.store offset=4 + i32.const 13024 + i32.const 13072 call $~lib/string/String.__ne i32.eqz if @@ -11702,8 +13802,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12464 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + i32.const 12672 + i32.const 1328 call $~lib/string/String.__gt i32.eqz if @@ -11714,8 +13820,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 13120 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + i32.const 13120 + i32.const 1328 call $~lib/string/String.__gt i32.eqz if @@ -11726,8 +13838,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 12944 + global.get $~lib/memory/__stack_pointer + i32.const 13120 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13152 + i32.store offset=4 + i32.const 13120 + i32.const 13152 call $~lib/string/String.__gte i32.eqz if @@ -11738,8 +13856,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 12496 + global.get $~lib/memory/__stack_pointer + i32.const 13120 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=4 + i32.const 13120 + i32.const 12704 call $~lib/string/String.__gt i32.eqz if @@ -11750,8 +13874,14 @@ call $~lib/builtins/abort unreachable end - i32.const 12912 - i32.const 12496 + global.get $~lib/memory/__stack_pointer + i32.const 13120 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=4 + i32.const 13120 + i32.const 12704 call $~lib/string/String.__lt if i32.const 0 @@ -11761,7 +13891,13 @@ call $~lib/builtins/abort unreachable end - i32.const 12464 + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + i32.const 12672 i32.const 0 call $~lib/string/String.__lt if @@ -11772,8 +13908,14 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 i32.const 0 - i32.const 12464 + i32.const 12672 call $~lib/string/String.__lt if i32.const 0 @@ -11783,8 +13925,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 2096 + i32.const 1264 call $~lib/string/String.__gt i32.eqz if @@ -11795,8 +13943,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 1264 + i32.const 2096 call $~lib/string/String.__lt i32.eqz if @@ -11807,8 +13961,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 2096 + i32.const 1264 call $~lib/string/String.__gte i32.eqz if @@ -11819,5924 +13979,8789 @@ call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 1264 + i32.const 2096 + call $~lib/string/String.__lte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 374 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 2096 + i32.const 1264 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 375 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + i32.const 1264 + i32.const 2096 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 376 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 377 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 378 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 + call $~lib/string/String.__gte + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + i32.const 1264 + i32.const 1264 call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 374 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store offset=4 + i32.const 2848 + i32.const 13184 + call $~lib/string/String.__lt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 382 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + i32.const 13184 + i32.const 2848 + call $~lib/string/String.__gt + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 383 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store offset=4 + i32.const 13216 + i32.const 13184 + call $~lib/string/String.__lt + if + i32.const 0 + i32.const 1120 + i32.const 384 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13184 + i32.const 13216 + call $~lib/string/String.__gt + if + i32.const 0 + i32.const 1120 + i32.const 385 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - call $~lib/string/String.__lt + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store offset=4 + i32.const 13216 + i32.const 13184 + call $~lib/string/String.__gt + i32.eqz if i32.const 0 i32.const 1120 - i32.const 375 + i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1888 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13184 + i32.const 13216 + call $~lib/string/String.__lt + i32.eqz if i32.const 0 i32.const 1120 - i32.const 376 + i32.const 387 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13216 + i32.const 13216 call $~lib/string/String.__lt if i32.const 0 i32.const 1120 - i32.const 377 + i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13216 + i32.const 13216 call $~lib/string/String.__gt if i32.const 0 i32.const 1120 - i32.const 378 + i32.const 389 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13216 + i32.const 13216 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 1120 - i32.const 379 + i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13216 + i32.const 13216 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 380 + i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 12976 - call $~lib/string/String.__lt - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13248 + i32.store offset=4 + i32.const 13184 + i32.const 13248 + call $~lib/string/String.__gte if i32.const 0 i32.const 1120 - i32.const 382 + i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 2640 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 13248 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store offset=4 + i32.const 13248 + i32.const 13184 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 1120 - i32.const 383 + i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 12976 - call $~lib/string/String.__lt + global.get $~lib/memory/__stack_pointer + i32.const 13184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13248 + i32.store offset=4 + i32.const 13184 + i32.const 13248 + call $~lib/string/String.__lte + i32.eqz if i32.const 0 i32.const 1120 - i32.const 384 + i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 13008 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + i32.const 2848 + i32.const 2848 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 385 + i32.const 395 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 12976 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + i32.const 13216 + i32.const 13216 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 386 + i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 13008 - call $~lib/string/String.__lt + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=4 + i32.const 2160 + i32.const 2160 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 387 + i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 13008 - call $~lib/string/String.__lt + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13280 + i32.store offset=4 + i32.const 2160 + i32.const 13280 + call $~lib/string/String.__ne + i32.eqz if i32.const 0 i32.const 1120 - i32.const 388 + i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 13008 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 13312 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13312 + i32.store offset=4 + i32.const 13312 + i32.const 13312 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 389 + i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 13008 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 13344 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13312 + i32.store offset=4 + i32.const 13344 + i32.const 13312 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 1120 - i32.const 390 + i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 13008 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $1 + local.get $3 + call $~lib/string/String.__concat + local.tee $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 1120 - i32.const 391 - i32.const 1 + i32.const 407 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 13040 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store + i32.const 2156 + i32.load + i32.const 1 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 i32.const 1120 - i32.const 392 + i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13040 - i32.const 12976 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + i32.const 1264 + i32.const 100 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 393 + i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12976 - i32.const 13040 - call $~lib/string/String.__lte + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 0 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 394 + i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 2640 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 1 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 + i32.const 1328 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 395 + i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13008 - i32.const 13008 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 2 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13152 + i32.store offset=4 + local.get $0 + i32.const 13152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 396 + i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 - i32.const 1952 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 3 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13424 + i32.store offset=4 + local.get $0 + i32.const 13424 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 397 + i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1952 - i32.const 13072 - call $~lib/string/String.__ne + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=8 + i32.const 12704 + i32.const 4 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13456 + i32.store offset=4 + local.get $0 + i32.const 13456 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 399 + i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13104 - i32.const 13104 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 5 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13504 + i32.store offset=4 + local.get $0 + i32.const 13504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 400 + i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13136 - i32.const 13104 - call $~lib/string/String.__ne + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 6 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13536 + i32.store offset=4 + local.get $0 + i32.const 13536 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 402 + i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.tee $1 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $0 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $2 - call $~lib/string/String.__concat - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $8 - call $~lib/string/String.__gt + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=8 + i32.const 1328 + i32.const 7 + call $~lib/string/String#repeat + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13568 + i32.store offset=4 + local.get $0 + i32.const 13568 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 407 - i32.const 3 + i32.const 420 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 1264 + i32.const 1264 + i32.const 1264 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 1948 - i32.load - i32.const 1 - i32.shr_u - i32.const 3 - i32.ne + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 410 + i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 100 - call $~lib/string/String#repeat - local.tee $7 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 1264 + i32.const 1264 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 412 + i32.const 423 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 0 - call $~lib/string/String#repeat - local.tee $8 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 3872 + i32.const 3872 + i32.const 1264 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 413 + i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 1 - call $~lib/string/String#repeat - local.tee $44 - i32.const 1392 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 3872 + i32.const 1264 + i32.const 1264 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 414 + i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 2 - call $~lib/string/String#repeat - local.tee $45 - i32.const 12944 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 3840 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 415 + i32.const 426 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 3 - call $~lib/string/String#repeat - local.tee $46 - i32.const 13216 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 2096 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 416 + i32.const 427 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12496 - i32.const 4 - call $~lib/string/String#repeat - local.tee $47 - i32.const 13248 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 2576 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 417 + i32.const 428 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 5 - call $~lib/string/String#repeat - local.tee $48 - i32.const 13296 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=12 + i32.const 2096 + i32.const 12704 + i32.const 12704 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 418 + i32.const 429 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 6 - call $~lib/string/String#repeat - local.tee $49 - i32.const 13328 + global.get $~lib/memory/__stack_pointer + i32.const 13616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 13616 + i32.const 3840 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13648 + i32.store offset=4 + local.get $0 + i32.const 13648 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 419 + i32.const 430 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1392 - i32.const 7 - call $~lib/string/String#repeat - local.tee $50 - i32.const 13360 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 1264 + i32.const 3872 + call $~lib/string/String#replace + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13680 + i32.store offset=4 + local.get $0 + i32.const 13680 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 420 + i32.const 431 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 13712 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 13744 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 13712 + i32.const 13744 + i32.const 3872 call $~lib/string/String#replace - local.tee $51 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13680 + i32.store offset=4 + local.get $0 + i32.const 13680 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 422 + i32.const 432 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13808 + i32.store offset=12 + i32.const 2096 + i32.const 13776 + i32.const 13808 call $~lib/string/String#replace - local.tee $52 - i32.const 3664 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13840 + i32.store offset=4 + local.get $0 + i32.const 13840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 423 + i32.const 433 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3664 - i32.const 3664 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 2096 + i32.const 13776 + i32.const 1264 call $~lib/string/String#replace - local.tee $53 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=4 + local.get $0 + i32.const 12704 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 424 + i32.const 434 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3664 - i32.const 1328 - i32.const 1328 - call $~lib/string/String#replace - local.tee $54 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=12 + i32.const 1264 + i32.const 1264 + i32.const 2096 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 425 + i32.const 436 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 3632 - i32.const 3664 - call $~lib/string/String#replace - local.tee $55 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 3840 + i32.const 3872 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 426 + i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1888 - i32.const 3664 - call $~lib/string/String#replace - local.tee $56 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2304 + i32.const 2096 + i32.const 3872 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13808 + i32.store offset=4 + local.get $0 + i32.const 13808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 427 + i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 2368 - i32.const 3664 - call $~lib/string/String#replace - local.tee $57 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 13872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 13872 + i32.const 2096 + i32.const 3872 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13920 + i32.store offset=4 + local.get $0 + i32.const 13920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 428 + i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 12496 - i32.const 12496 - call $~lib/string/String#replace - local.tee $58 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=12 + i32.const 2304 + i32.const 12704 + i32.const 12704 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store offset=4 + local.get $0 + i32.const 2304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 429 + i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13408 - i32.const 3632 - i32.const 3664 - call $~lib/string/String#replace - local.tee $59 - i32.const 13440 + global.get $~lib/memory/__stack_pointer + i32.const 13952 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13920 + i32.store offset=12 + i32.const 13952 + i32.const 1328 + i32.const 13920 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14000 + i32.store offset=4 + local.get $0 + i32.const 14000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 430 + i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const 3664 - call $~lib/string/String#replace - local.tee $60 - i32.const 13472 + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13808 + i32.store offset=12 + i32.const 2304 + i32.const 12704 + i32.const 13808 + call $~lib/string/String#replaceAll + 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=4 + local.get $0 + i32.const 14048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 431 + i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13504 - i32.const 13536 - i32.const 3664 - call $~lib/string/String#replace - local.tee $61 - i32.const 13472 + global.get $~lib/memory/__stack_pointer + i32.const 14080 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 14112 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13808 + i32.store offset=12 + i32.const 14080 + i32.const 14112 + i32.const 13808 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14144 + i32.store offset=4 + local.get $0 + i32.const 14144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 432 + i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 13568 - i32.const 13600 - call $~lib/string/String#replace - local.tee $62 - i32.const 13632 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 2576 + i32.const 3872 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 433 + i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 13568 - i32.const 1328 - call $~lib/string/String#replace - local.tee $63 - i32.const 12496 + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 14176 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 13808 + i32.store offset=12 + i32.const 2576 + i32.const 14176 + i32.const 13808 + call $~lib/string/String#replaceAll + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=4 + local.get $0 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 434 + i32.const 446 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 14208 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 14208 + i32.const 3872 call $~lib/string/String#replaceAll - local.tee $64 - i32.const 1888 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14240 + i32.store offset=4 + local.get $0 + i32.const 14240 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 436 + i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 3632 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 12704 + i32.const 12704 + i32.const 3872 call $~lib/string/String#replaceAll - local.tee $65 - i32.const 1888 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 437 + i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 - i32.const 1888 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 13616 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 13616 + i32.const 3840 + i32.const 3872 call $~lib/string/String#replaceAll - local.tee $66 - i32.const 13600 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14272 + i32.store offset=4 + local.get $0 + i32.const 14272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 439 + i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13664 - i32.const 1888 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 1264 + i32.const 1264 + i32.const 1264 call $~lib/string/String#replaceAll - local.tee $67 - i32.const 13712 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 440 + i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 - i32.const 12496 - i32.const 12496 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 1264 + i32.const 1264 + i32.const 3872 call $~lib/string/String#replaceAll - local.tee $68 - i32.const 2096 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 441 + i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13744 - i32.const 1392 - i32.const 13712 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 3872 + i32.const 3872 + i32.const 1264 call $~lib/string/String#replaceAll - local.tee $69 - i32.const 13792 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 442 + i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 - i32.const 12496 - i32.const 13600 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 3872 + i32.const 1264 + i32.const 1264 call $~lib/string/String#replaceAll - local.tee $70 - i32.const 13840 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + local.get $0 + i32.const 3872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 443 + i32.const 454 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13872 - i32.const 13904 - i32.const 13600 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=12 + i32.const 2096 + i32.const 2096 + i32.const 3840 call $~lib/string/String#replaceAll - local.tee $71 - i32.const 13936 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=4 + local.get $0 + i32.const 3840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 444 + i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 2368 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2544 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3840 + i32.store offset=12 + i32.const 2096 + i32.const 2544 + i32.const 3840 call $~lib/string/String#replaceAll - local.tee $72 - i32.const 1888 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 445 + i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2368 - i32.const 13968 - i32.const 13600 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=12 + i32.const 2096 + i32.const 1264 + i32.const 3872 call $~lib/string/String#replaceAll - local.tee $73 - i32.const 2368 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14304 + i32.store offset=4 + local.get $0 + i32.const 14304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 446 + i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 14000 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=12 + i32.const 2096 + i32.const 1264 + i32.const 1264 call $~lib/string/String#replaceAll - local.tee $74 - i32.const 14032 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store offset=4 + local.get $0 + i32.const 2096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 447 + i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12496 - i32.const 12496 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 14352 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 14384 + i32.store offset=12 + i32.const 14352 + i32.const 1328 + i32.const 14384 call $~lib/string/String#replaceAll - local.tee $75 - i32.const 3664 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14416 + i32.store offset=4 + local.get $0 + i32.const 14416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 448 + i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13408 - i32.const 3632 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12704 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 14464 + i32.store offset=12 + i32.const 12704 + i32.const 12704 + i32.const 14464 call $~lib/string/String#replaceAll - local.tee $76 - i32.const 14064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14464 + i32.store offset=4 + local.get $0 + i32.const 14464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 449 + i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 13424 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 1328 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 14496 + i32.store offset=12 + i32.const 13424 i32.const 1328 - i32.const 1328 + i32.const 14496 call $~lib/string/String#replaceAll - local.tee $77 - i32.const 1328 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14528 + i32.store offset=4 + local.get $0 + i32.const 14528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 451 + i32.const 463 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + i32.const 13424 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 13152 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 14384 + i32.store offset=12 + i32.const 13424 + i32.const 13152 + i32.const 14384 call $~lib/string/String#replaceAll - local.tee $78 - i32.const 3664 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14576 + i32.store offset=4 + local.get $0 + i32.const 14576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 452 + i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3664 - i32.const 3664 - i32.const 1328 - call $~lib/string/String#replaceAll - local.tee $79 - i32.const 1328 + i32.const 14608 + global.set $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=8 + i32.const 14608 + i32.const 0 + i32.const 2147483647 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 453 + i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3664 - i32.const 1328 - i32.const 1328 - call $~lib/string/String#replaceAll - local.tee $80 - i32.const 3664 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -1 + i32.const 2147483647 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14656 + i32.store offset=4 + local.get $0 + i32.const 14656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 454 + i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1888 - i32.const 3632 - call $~lib/string/String#replaceAll - local.tee $81 - i32.const 3632 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -5 + i32.const 2147483647 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14688 + i32.store offset=4 + local.get $0 + i32.const 14688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 455 + i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 2336 - i32.const 3632 - call $~lib/string/String#replaceAll - local.tee $82 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14720 + i32.store offset=4 + local.get $0 + i32.const 14720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 456 + i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const 3664 - call $~lib/string/String#replaceAll - local.tee $83 - i32.const 14096 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14752 + i32.store offset=4 + local.get $0 + i32.const 14752 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 457 + i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const 1328 - call $~lib/string/String#replaceAll - local.tee $84 - i32.const 1888 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 458 + i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14144 - i32.const 1392 - i32.const 14176 - call $~lib/string/String#replaceAll - local.tee $85 - i32.const 14208 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14784 + i32.store offset=4 + local.get $0 + i32.const 14784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 461 + i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12496 - i32.const 12496 - i32.const 14256 - call $~lib/string/String#replaceAll - local.tee $86 - i32.const 14256 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 462 + i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13216 - i32.const 1392 - i32.const 14288 - call $~lib/string/String#replaceAll - local.tee $87 - i32.const 14320 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -1 + i32.const 2147483647 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14656 + i32.store offset=4 + local.get $0 + i32.const 14656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 463 + i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13216 - i32.const 12944 - i32.const 14176 - call $~lib/string/String#replaceAll - local.tee $88 - i32.const 14368 + global.get $~lib/memory/__stack_pointer + global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -5 + i32.const 2147483647 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14688 + i32.store offset=4 + local.get $0 + i32.const 14688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 464 + i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - call $~lib/rt/pure/__release - i32.const 14400 - global.set $std/string/str - i32.const 14400 - i32.const 0 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $89 - i32.const 14400 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14832 + i32.store offset=4 + local.get $0 + i32.const 14832 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 468 + i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $90 - i32.const 14448 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 469 + i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const -5 - i32.const 2147483647 - call $~lib/string/String#slice - local.tee $91 - i32.const 14480 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14880 + i32.store offset=4 + local.get $0 + i32.const 14880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 470 + i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $92 - i32.const 14512 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const -1 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 471 + i32.const 482 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $93 - i32.const 14544 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 472 + i32.const 483 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $94 - i32.const 1328 + i32.const 4 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14912 + i32.store offset=4 + local.get $0 + i32.const 14912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 473 + i32.const 484 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $95 - i32.const 14576 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 474 + i32.const 485 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 i32.const 2147483647 - call $~lib/string/String#substr - local.tee $96 - i32.const 14400 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 476 + i32.const 487 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const -1 i32.const 2147483647 - call $~lib/string/String#substr - local.tee $97 - i32.const 14448 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 477 + i32.const 488 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const -5 i32.const 2147483647 - call $~lib/string/String#substr - local.tee $98 - i32.const 14480 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 478 + i32.const 489 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 2 i32.const 7 - call $~lib/string/String#substr - local.tee $99 - i32.const 14624 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14720 + i32.store offset=4 + local.get $0 + i32.const 14720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 479 + i32.const 490 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const -11 i32.const -6 - call $~lib/string/String#substr - local.tee $100 - i32.const 1328 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 480 + i32.const 491 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 4 i32.const 3 - call $~lib/string/String#substr - local.tee $101 - i32.const 14672 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14944 + i32.store offset=4 + local.get $0 + i32.const 14944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 481 + i32.const 492 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 i32.const -1 - call $~lib/string/String#substr - local.tee $102 - i32.const 1328 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 482 + i32.const 493 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 0 i32.const 100 - call $~lib/string/String#substr - local.tee $103 - i32.const 14400 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 14608 + i32.store offset=4 + local.get $0 + i32.const 14608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 483 + i32.const 494 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 4 i32.const 4 - call $~lib/string/String#substr - local.tee $104 - i32.const 14704 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 484 + i32.const 495 i32.const 1 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/string/str + local.tee $0 + i32.store offset=8 + local.get $0 i32.const 4 i32.const -3 - call $~lib/string/String#substr - local.tee $105 - i32.const 1328 + call $~lib/string/String#substring + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2576 + i32.store offset=4 + local.get $0 + i32.const 2576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 485 + i32.const 496 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 i32.const 0 i32.const 2147483647 - call $~lib/string/String#substring - local.tee $106 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 487 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const -1 - i32.const 2147483647 - call $~lib/string/String#substring - local.tee $107 - i32.const 14400 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 488 - i32.const 1 + i32.const 502 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -5 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.const 1264 i32.const 2147483647 - call $~lib/string/String#substring - local.tee $108 - i32.const 14400 - call $~lib/string/String.__eq - i32.eqz + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 if i32.const 0 i32.const 1120 - i32.const 489 - i32.const 1 + i32.const 504 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substring - local.tee $109 - i32.const 14512 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.const 2384 + i32.const 2147483647 + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 490 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substring - local.tee $110 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 491 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 4 - i32.const 3 - call $~lib/string/String#substring - local.tee $111 - i32.const 14736 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 492 - i32.const 1 + i32.const 506 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substring - local.tee $112 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.const 6912 + i32.const 2147483647 + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store offset=4 + local.get $0 + i32.const 15152 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 1120 - i32.const 493 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substring - local.tee $113 - i32.const 14400 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 494 - i32.const 1 + i32.const 508 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substring - local.tee $114 - i32.const 1328 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.const 2384 + i32.const 2147483647 + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 - i32.const 1120 - i32.const 495 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 + i32.const 1328 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq + else + i32.const 0 end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substring - local.tee $115 - i32.const 2368 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 496 - i32.const 1 + i32.const 510 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 15184 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15232 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15184 + i32.const 15232 i32.const 2147483647 call $~lib/string/String#split - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 - i32.const 1 + i32.const 3 i32.eq - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq + else + i32.const 0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 502 + i32.const 512 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + i32.const 15264 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15264 + i32.const 2384 i32.const 2147483647 call $~lib/string/String#split - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.load offset=12 + i32.const 4 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 + i32.const 1328 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $1 + i32.const 1264 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq + else + i32.const 0 + end + i32.eqz if i32.const 0 i32.const 1120 - i32.const 504 + i32.const 514 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1328 - i32.const 2176 + global.get $~lib/memory/__stack_pointer + i32.const 15296 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15296 + i32.const 2384 i32.const 2147483647 call $~lib/string/String#split - local.set $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $1 i32.load offset=12 - i32.const 1 + i32.const 4 i32.eq - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 local.get $1 + i32.const 1264 + call $~lib/string/String.__eq + else i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 - end - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 506 - i32.const 3 - call $~lib/builtins/abort - unreachable end - i32.const 15008 - i32.const 6704 - i32.const 2147483647 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 local.get $1 + i32.const 12672 + call $~lib/string/String.__eq + else i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 15008 - call $~lib/string/String.__eq local.set $0 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 508 + i32.const 516 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 15008 - i32.const 2176 + global.get $~lib/memory/__stack_pointer + i32.const 15328 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15328 + i32.const 2384 i32.const 2147483647 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 - i32.const 3 + i32.const 4 i32.eq - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 + i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $1 + i32.const 13776 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + local.get $0 + i32.const 1264 + call $~lib/string/String.__eq + else + i32.const 0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 510 + i32.const 518 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 15040 - i32.const 15088 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.const 1264 i32.const 2147483647 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.eq - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 + i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 - call $~lib/string/String.__eq local.set $0 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 512 + i32.const 520 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 15120 - i32.const 2176 - i32.const 2147483647 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.const 1264 + i32.const 0 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 - i32.const 4 - i32.eq if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 522 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.const 1264 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 - local.set $0 - end - local.get $0 - if - local.get $1 - i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 + i32.eqz if - local.get $1 + i32.const 0 + i32.const 1120 + i32.const 524 i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.const 2384 + i32.const 1 + call $~lib/string/String#split + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.const 1 + i32.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 - call $~lib/string/String.__eq local.set $0 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $0 + i32.const 1328 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 514 + i32.const 526 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 15152 - i32.const 2176 - i32.const 2147483647 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.const 1264 + i32.const 4 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 - i32.const 4 + i32.const 3 i32.eq - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 local.set $0 - end - local.get $0 - if - local.get $1 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 516 + i32.const 528 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 15184 - i32.const 2176 - i32.const 2147483647 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.const 1264 + i32.const -1 call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 - i32.const 4 + i32.const 3 i32.eq - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 + local.get $1 + i32.const 1328 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 + local.get $1 + i32.const 12672 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $1 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 local.set $0 - end - local.get $0 - if - local.get $1 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1328 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 518 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const 2147483647 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2384 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 15152 + i32.const 2384 + i32.const -1 call $~lib/string/String#split - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.load offset=12 i32.const 3 i32.eq - if - local.get $2 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release + i32.const 1328 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $2 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12672 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release + i32.const 12672 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 - if - local.get $2 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 13568 - call $~lib/string/String.__eq local.set $0 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 + call $~lib/string/String.__eq else i32.const 0 - local.set $0 end - local.get $0 i32.eqz if i32.const 0 i32.const 1120 - i32.const 520 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 i32.const 0 - call $~lib/string/String#split + i32.const 10 + call $~lib/util/number/itoa32 local.set $0 - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=12 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1120 - i32.const 522 - i32.const 3 + i32.const 537 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 i32.const 1 - call $~lib/string/String#split - local.set $1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 - end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 local.get $0 + i32.const 2848 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 524 - i32.const 3 + i32.const 538 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15008 - i32.const 2176 - i32.const 1 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 1 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 - end + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15648 + i32.store offset=4 local.get $0 + i32.const 15648 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 526 - i32.const 3 + i32.const 539 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const 4 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq - if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 - end + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else - i32.const 0 - local.set $0 - end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15680 + i32.store offset=4 local.get $0 + i32.const 15680 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 540 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 123 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=4 + local.get $0 + i32.const 2160 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 528 - i32.const 3 + i32.const 541 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1888 - i32.const 1328 - i32.const -1 - call $~lib/string/String#split - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.eq + i32.const -1000 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15712 + i32.store offset=4 + local.get $0 + i32.const 15712 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 542 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 1234 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13312 + i32.store offset=4 local.get $0 + i32.const 13312 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 543 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 12345 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15744 + i32.store offset=4 local.get $0 + i32.const 15744 + call $~lib/string/String.__eq + i32.eqz if - local.get $1 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $2 - i32.const 13568 - call $~lib/string/String.__eq - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 544 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 123456 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15776 + i32.store offset=4 + local.get $0 + i32.const 15776 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 530 - i32.const 3 + i32.const 545 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 15008 - i32.const 2176 - i32.const -1 - call $~lib/string/String#split - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - i32.load offset=12 - i32.const 3 - i32.eq + i32.const 1111111 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15808 + i32.store offset=4 + local.get $0 + i32.const 15808 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 1392 - call $~lib/string/String.__eq - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 546 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 1234567 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15856 + i32.store offset=4 local.get $0 + i32.const 15856 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 12464 - call $~lib/string/String.__eq - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 547 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15904 + i32.store offset=4 local.get $0 + i32.const 15904 + call $~lib/string/String.__eq + i32.eqz if - local.get $2 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $1 - i32.const 13568 - call $~lib/string/String.__eq - local.set $0 - local.get $1 - call $~lib/rt/pure/__release - else i32.const 0 - local.set $0 + i32.const 1120 + i32.const 548 + i32.const 1 + call $~lib/builtins/abort + unreachable end + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15952 + i32.store offset=4 + local.get $0 + i32.const 15952 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 532 - i32.const 3 + i32.const 549 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - i32.const 0 + i32.const 2147483646 i32.const 10 call $~lib/util/number/itoa32 - local.tee $1 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16000 + i32.store offset=4 + local.get $0 + i32.const 16000 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 537 + i32.const 550 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const 2147483647 i32.const 10 call $~lib/util/number/itoa32 - local.tee $0 - i32.const 2640 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16048 + i32.store offset=4 + local.get $0 + i32.const 16048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 538 + i32.const 551 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 + i32.const -2147483648 i32.const 10 call $~lib/util/number/itoa32 - local.tee $2 - i32.const 15504 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16096 + i32.store offset=4 + local.get $0 + i32.const 16096 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 539 + i32.const 552 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 + i32.const -1 i32.const 10 call $~lib/util/number/itoa32 - local.tee $116 - i32.const 15536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16144 + i32.store offset=4 + local.get $0 + i32.const 16144 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 540 + i32.const 553 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 + i32.const 0 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $117 - i32.const 1952 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 541 + i32.const 555 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1000 + i32.const 1000 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $118 - i32.const 15568 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16176 + i32.store offset=4 + local.get $0 + i32.const 16176 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 542 + i32.const 556 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234 + i32.const 2147483647 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $119 - i32.const 13104 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16048 + i32.store offset=4 + local.get $0 + i32.const 16048 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 543 + i32.const 557 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345 + i32.const -2147483648 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $120 - i32.const 15600 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16208 + i32.store offset=4 + local.get $0 + i32.const 16208 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 544 + i32.const 558 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456 + i32.const -1 i32.const 10 - call $~lib/util/number/itoa32 - local.tee $121 - i32.const 15632 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16256 + i32.store offset=4 + local.get $0 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 545 + i32.const 559 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $122 - i32.const 15664 + i32.const 0 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 546 + i32.const 563 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $123 - i32.const 15712 + i32.const 1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + local.get $0 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 547 + i32.const 564 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $124 - i32.const 15760 + i32.const 8 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15648 + i32.store offset=4 + local.get $0 + i32.const 15648 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 565 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 548 + i32.const 566 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $125 - i32.const 15808 + i32.const 123 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16304 + i32.store offset=4 + local.get $0 + i32.const 16304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 549 + i32.const 567 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $126 - i32.const 15856 + i32.const 1234 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16336 + i32.store offset=4 + local.get $0 + i32.const 16336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 550 + i32.const 568 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $127 - i32.const 15904 + i32.const 12345 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16368 + i32.store offset=4 + local.get $0 + i32.const 16368 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 551 + i32.const 569 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $128 - i32.const 15952 + i32.const 123456 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16400 + i32.store offset=4 + local.get $0 + i32.const 16400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 552 + i32.const 570 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $129 - i32.const 16000 + i32.const 1111111 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16432 + i32.store offset=4 + local.get $0 + i32.const 16432 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 553 + i32.const 571 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 10 + i32.const 1234567 + i32.const 16 call $~lib/util/number/utoa32 - local.tee $130 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16464 + i32.store offset=4 + local.get $0 + i32.const 16464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 555 + i32.const 572 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1000 - i32.const 10 + i32.const 12345678 + i32.const 16 call $~lib/util/number/utoa32 - local.tee $131 - i32.const 16032 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16496 + i32.store offset=4 + local.get $0 + i32.const 16496 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 556 + i32.const 573 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 10 + i32.const 123456789 + i32.const 16 call $~lib/util/number/utoa32 - local.tee $132 - i32.const 15904 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16528 + i32.store offset=4 + local.get $0 + i32.const 16528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 557 + i32.const 574 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 10 + i32.const 2147483646 + i32.const 16 call $~lib/util/number/utoa32 - local.tee $133 - i32.const 16064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16576 + i32.store offset=4 + local.get $0 + i32.const 16576 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 558 + i32.const 575 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 10 + i32.const 2147483647 + i32.const 16 call $~lib/util/number/utoa32 - local.tee $134 - i32.const 16112 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16624 + i32.store offset=4 + local.get $0 + i32.const 16624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 559 + i32.const 576 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const -2147483648 i32.const 16 call $~lib/util/number/utoa32 - local.tee $135 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16672 + i32.store offset=4 + local.get $0 + i32.const 16672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 563 + i32.const 577 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const -1 i32.const 16 call $~lib/util/number/utoa32 - local.tee $136 - i32.const 2640 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16720 + i32.store offset=4 + local.get $0 + i32.const 16720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 564 + i32.const 578 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 + i32.const 0 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $137 - i32.const 15504 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 565 + i32.const 580 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 + i32.const -4096 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $138 - i32.const 13568 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15712 + i32.store offset=4 + local.get $0 + i32.const 15712 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 566 + i32.const 581 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 + i32.const 2147483647 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $139 - i32.const 16160 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16624 + i32.store offset=4 + local.get $0 + i32.const 16624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 567 + i32.const 582 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234 + i32.const -2147483647 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $140 - i32.const 16192 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16768 + i32.store offset=4 + local.get $0 + i32.const 16768 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 568 + i32.const 583 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345 + i32.const -268435455 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $141 - i32.const 16224 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16816 + i32.store offset=4 + local.get $0 + i32.const 16816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 569 + i32.const 584 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456 + i32.const -2147483648 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $142 - i32.const 16256 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16864 + i32.store offset=4 + local.get $0 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 570 + i32.const 585 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1111111 + i32.const -2147483648 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $143 - i32.const 16288 + call $~lib/util/number/itoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16864 + i32.store offset=4 + local.get $0 + i32.const 16864 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 571 + i32.const 586 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 16 + i32.const 0 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $144 - i32.const 16320 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 572 + i32.const 590 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345678 - i32.const 16 + i32.const 1 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $145 - i32.const 16352 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + local.get $0 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 573 + i32.const 591 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456789 - i32.const 16 + i32.const 3 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $146 - i32.const 16384 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13216 + i32.store offset=4 + local.get $0 + i32.const 13216 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 574 + i32.const 592 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 16 + i32.const 7 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $147 - i32.const 16432 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16912 + i32.store offset=4 + local.get $0 + i32.const 16912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 575 + i32.const 593 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 + i32.const 14 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $148 - i32.const 16480 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16944 + i32.store offset=4 + local.get $0 + i32.const 16944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 576 + i32.const 594 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const 29 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $149 - i32.const 16528 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16976 + i32.store offset=4 + local.get $0 + i32.const 16976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 577 + i32.const 595 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 16 + i32.const 59 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $150 - i32.const 16576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17008 + i32.store offset=4 + local.get $0 + i32.const 17008 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 578 + i32.const 596 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $151 - i32.const 2576 + i32.const 4095 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17040 + i32.store offset=4 + local.get $0 + i32.const 17040 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 580 + i32.const 597 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4096 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $152 - i32.const 15568 + i32.const 33554431 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17088 + i32.store offset=4 + local.get $0 + i32.const 17088 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 581 + i32.const 598 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $153 - i32.const 16480 + i32.const -12 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17168 + i32.store offset=4 + local.get $0 + i32.const 17168 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 582 + i32.const 599 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $154 - i32.const 16624 + i32.const -4 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17264 + i32.store offset=4 + local.get $0 + i32.const 17264 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 583 + i32.const 600 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -268435455 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $155 - i32.const 16672 + i32.const -2 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17360 + i32.store offset=4 + local.get $0 + i32.const 17360 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 584 + i32.const 601 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $156 - i32.const 16720 + i32.const -1 + i32.const 2 + call $~lib/util/number/utoa32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17456 + i32.store offset=4 + local.get $0 + i32.const 17456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 585 + i32.const 602 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const -2047 + i32.const 2 call $~lib/util/number/itoa32 - local.tee $157 - i32.const 16720 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17552 + i32.store offset=4 + local.get $0 + i32.const 17552 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 586 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 + i32.const -1 + i32.const 3 call $~lib/util/number/utoa32 - local.tee $158 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17600 + i32.store offset=4 + local.get $0 + i32.const 17600 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 590 + i32.const 608 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 + i32.const -1 + i32.const 4 call $~lib/util/number/utoa32 - local.tee $159 - i32.const 2640 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17664 + i32.store offset=4 + local.get $0 + i32.const 17664 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 591 + i32.const 609 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 + i32.const -1 + i32.const 5 call $~lib/util/number/utoa32 - local.tee $160 - i32.const 13008 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17728 + i32.store offset=4 + local.get $0 + i32.const 17728 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 592 + i32.const 610 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7 - i32.const 2 + i32.const -1 + i32.const 8 call $~lib/util/number/utoa32 - local.tee $161 - i32.const 16768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17776 + i32.store offset=4 + local.get $0 + i32.const 17776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 593 + i32.const 611 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14 - i32.const 2 + i32.const -1 + i32.const 11 call $~lib/util/number/utoa32 - local.tee $162 - i32.const 16800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17824 + i32.store offset=4 + local.get $0 + i32.const 17824 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 594 + i32.const 612 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 29 - i32.const 2 + i32.const -1 + i32.const 15 call $~lib/util/number/utoa32 - local.tee $163 - i32.const 16832 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17872 + i32.store offset=4 + local.get $0 + i32.const 17872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 595 + i32.const 613 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 59 - i32.const 2 + i32.const -1 + i32.const 17 call $~lib/util/number/utoa32 - local.tee $164 - i32.const 16864 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17920 + i32.store offset=4 + local.get $0 + i32.const 17920 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 596 + i32.const 614 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4095 - i32.const 2 + i32.const -1 + i32.const 21 call $~lib/util/number/utoa32 - local.tee $165 - i32.const 16896 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17968 + i32.store offset=4 + local.get $0 + i32.const 17968 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 597 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 33554431 - i32.const 2 + i32.const -1 + i32.const 27 call $~lib/util/number/utoa32 - local.tee $166 - i32.const 16944 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18016 + i32.store offset=4 + local.get $0 + i32.const 18016 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 598 + i32.const 616 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -12 - i32.const 2 + i32.const -1 + i32.const 32 call $~lib/util/number/utoa32 - local.tee $167 - i32.const 17024 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18064 + i32.store offset=4 + local.get $0 + i32.const 18064 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 599 + i32.const 617 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4 - i32.const 2 + i32.const -1 + i32.const 36 call $~lib/util/number/utoa32 - local.tee $168 - i32.const 17120 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18112 + i32.store offset=4 + local.get $0 + i32.const 18112 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 600 + i32.const 618 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $169 - i32.const 17216 + i64.const 0 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 601 + i32.const 622 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $170 - i32.const 17312 + i64.const 12 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15680 + i32.store offset=4 + local.get $0 + i32.const 15680 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 602 + i32.const 623 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 - local.tee $171 - i32.const 17408 + i64.const 123 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2160 + i32.store offset=4 + local.get $0 + i32.const 2160 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 604 + i32.const 624 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 3 - call $~lib/util/number/utoa32 - local.tee $172 - i32.const 17456 + i64.const 1234 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13312 + i32.store offset=4 + local.get $0 + i32.const 13312 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 608 + i32.const 625 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 4 - call $~lib/util/number/utoa32 - local.tee $173 - i32.const 17520 + i64.const 12345 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15744 + i32.store offset=4 + local.get $0 + i32.const 15744 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 609 + i32.const 626 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 5 - call $~lib/util/number/utoa32 - local.tee $174 - i32.const 17584 + i64.const 123456 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15776 + i32.store offset=4 + local.get $0 + i32.const 15776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 610 + i32.const 627 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 8 - call $~lib/util/number/utoa32 - local.tee $175 - i32.const 17632 + i64.const 1234567 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 15856 + i32.store offset=4 + local.get $0 + i32.const 15856 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 611 + i32.const 628 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 11 - call $~lib/util/number/utoa32 - local.tee $176 - i32.const 17680 + i64.const 99999999 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18160 + i32.store offset=4 + local.get $0 + i32.const 18160 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 612 + i32.const 629 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 15 - call $~lib/util/number/utoa32 - local.tee $177 - i32.const 17728 + i64.const 100000000 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18208 + i32.store offset=4 + local.get $0 + i32.const 18208 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 613 + i32.const 630 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 17 - call $~lib/util/number/utoa32 - local.tee $178 - i32.const 17776 + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16256 + i32.store offset=4 + local.get $0 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 614 + i32.const 631 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 21 - call $~lib/util/number/utoa32 - local.tee $179 - i32.const 17824 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18256 + i32.store offset=4 + local.get $0 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 615 + i32.const 632 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 27 - call $~lib/util/number/utoa32 - local.tee $180 - i32.const 17872 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18304 + i32.store offset=4 + local.get $0 + i32.const 18304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 616 + i32.const 633 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 32 - call $~lib/util/number/utoa32 - local.tee $181 - i32.const 17920 + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18352 + i32.store offset=4 + local.get $0 + i32.const 18352 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 617 + i32.const 634 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 36 - call $~lib/util/number/utoa32 - local.tee $182 - i32.const 17968 + i64.const 8687194767350 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18400 + i32.store offset=4 + local.get $0 + i32.const 18400 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 618 + i32.const 635 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 + i64.const 86871947673501 i32.const 10 call $~lib/util/number/utoa64 - local.tee $183 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18448 + i32.store offset=4 + local.get $0 + i32.const 18448 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 622 + i32.const 636 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 + i64.const 999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $184 - i32.const 15536 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18496 + i32.store offset=4 + local.get $0 + i32.const 18496 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 623 + i32.const 637 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123 + i64.const 9999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $185 - i32.const 1952 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18560 + i32.store offset=4 + local.get $0 + i32.const 18560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 624 + i32.const 638 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 + i64.const 19999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $186 - i32.const 13104 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18624 + i32.store offset=4 + local.get $0 + i32.const 18624 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 625 + i32.const 639 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12345 + i64.const 129999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $187 - i32.const 15600 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18688 + i32.store offset=4 + local.get $0 + i32.const 18688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 626 + i32.const 640 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123456 + i64.const 1239999868719476735 i32.const 10 call $~lib/util/number/utoa64 - local.tee $188 - i32.const 15632 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18752 + i32.store offset=4 + local.get $0 + i32.const 18752 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 627 + i32.const 641 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234567 + i64.const -1 i32.const 10 call $~lib/util/number/utoa64 - local.tee $189 - i32.const 15712 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18816 + i32.store offset=4 + local.get $0 + i32.const 18816 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 628 + i32.const 642 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 99999999 + i64.const 0 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $190 - i32.const 18016 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 629 + i32.const 644 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 100000000 + i64.const -1234 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $191 - i32.const 18064 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18880 + i32.store offset=4 + local.get $0 + i32.const 18880 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 630 + i32.const 645 i32.const 1 call $~lib/builtins/abort unreachable end i64.const 4294967295 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $192 - i32.const 16112 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16256 + i32.store offset=4 + local.get $0 + i32.const 16256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 631 + i32.const 646 i32.const 1 call $~lib/builtins/abort unreachable end i64.const 4294967297 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $193 - i32.const 18112 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18256 + i32.store offset=4 + local.get $0 + i32.const 18256 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 632 + i32.const 647 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 + i64.const -4294967295 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $194 - i32.const 18160 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18912 + i32.store offset=4 + local.get $0 + i32.const 18912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 633 + i32.const 648 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 868719476735 + i64.const 68719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $195 - i32.const 18208 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18304 + i32.store offset=4 + local.get $0 + i32.const 18304 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 634 + i32.const 649 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8687194767350 + i64.const -68719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $196 - i32.const 18256 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 18960 + i32.store offset=4 + local.get $0 + i32.const 18960 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 635 + i32.const 650 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 86871947673501 + i64.const -868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $197 - i32.const 18304 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19008 + i32.store offset=4 + local.get $0 + i32.const 19008 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 636 + i32.const 651 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 999868719476735 + i64.const -999868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $198 - i32.const 18352 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19056 + i32.store offset=4 + local.get $0 + i32.const 19056 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 637 + i32.const 652 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9999868719476735 + i64.const -19999868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $199 - i32.const 18416 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19120 + i32.store offset=4 + local.get $0 + i32.const 19120 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 638 + i32.const 653 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 19999868719476735 + i64.const 9223372036854775807 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $200 - i32.const 18480 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19184 + i32.store offset=4 + local.get $0 + i32.const 19184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 639 + i32.const 654 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 129999868719476735 + i64.const -9223372036854775808 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $201 - i32.const 18544 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19248 + i32.store offset=4 + local.get $0 + i32.const 19248 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 640 + i32.const 655 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1239999868719476735 - i32.const 10 + i64.const 0 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $202 - i32.const 18608 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 641 + i32.const 659 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 10 + i64.const 1 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $203 - i32.const 18672 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + local.get $0 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 642 + i32.const 660 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $204 - i32.const 2576 + i64.const 12 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 13776 + i32.store offset=4 + local.get $0 + i32.const 13776 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 644 + i32.const 661 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $205 - i32.const 18736 + i64.const 1234 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16336 + i32.store offset=4 + local.get $0 + i32.const 16336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 645 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $206 - i32.const 16112 + i64.const 1111111 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16432 + i32.store offset=4 + local.get $0 + i32.const 16432 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 646 + i32.const 663 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $207 - i32.const 18112 + i64.const 8589934591 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19312 + i32.store offset=4 + local.get $0 + i32.const 19312 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 647 + i32.const 664 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $208 - i32.const 18768 + i64.const 5942249508321 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19360 + i32.store offset=4 + local.get $0 + i32.const 19360 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 648 + i32.const 665 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $209 - i32.const 18160 + i64.const 76310993685985 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19408 + i32.store offset=4 + local.get $0 + i32.const 19408 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 649 + i32.const 666 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $210 - i32.const 18816 + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19456 + i32.store offset=4 + local.get $0 + i32.const 19456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 650 + i32.const 667 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $211 - i32.const 18864 + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19504 + i32.store offset=4 + local.get $0 + i32.const 19504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 651 + i32.const 668 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $212 - i32.const 18912 + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19552 + i32.store offset=4 + local.get $0 + i32.const 19552 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 652 + i32.const 669 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $213 - i32.const 18976 + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19616 + i32.store offset=4 + local.get $0 + i32.const 19616 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 653 + i32.const 670 i32.const 1 call $~lib/builtins/abort unreachable end i64.const 9223372036854775807 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $214 - i32.const 19040 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19680 + i32.store offset=4 + local.get $0 + i32.const 19680 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 654 + i32.const 671 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $215 - i32.const 19104 + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19744 + i32.store offset=4 + local.get $0 + i32.const 19744 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 655 + i32.const 672 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 + i64.const -9223372036854775807 i32.const 16 - call $~lib/util/number/utoa64 - local.tee $216 - i32.const 2576 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19808 + i32.store offset=4 + local.get $0 + i32.const 19808 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 659 + i32.const 674 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 + i64.const -9223372036854775808 i32.const 16 - call $~lib/util/number/utoa64 - local.tee $217 - i32.const 2640 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19872 + i32.store offset=4 + local.get $0 + i32.const 19872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 660 + i32.const 675 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 + i64.const -9223372036854775808 i32.const 16 - call $~lib/util/number/utoa64 - local.tee $218 - i32.const 13568 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19872 + i32.store offset=4 + local.get $0 + i32.const 19872 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 661 + i32.const 676 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 16 + i64.const 0 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $219 - i32.const 16192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2784 + i32.store offset=4 + local.get $0 + i32.const 2784 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 662 + i32.const 680 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1111111 - i32.const 16 + i64.const 1 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $220 - i32.const 16288 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2848 + i32.store offset=4 + local.get $0 + i32.const 2848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 663 + i32.const 681 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8589934591 - i32.const 16 + i64.const 7 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $221 - i32.const 19168 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16912 + i32.store offset=4 + local.get $0 + i32.const 16912 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 664 + i32.const 682 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 5942249508321 - i32.const 16 + i64.const 14 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $222 - i32.const 19216 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16944 + i32.store offset=4 + local.get $0 + i32.const 16944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 665 + i32.const 683 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 76310993685985 - i32.const 16 + i64.const 59 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $223 - i32.const 19264 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17008 + i32.store offset=4 + local.get $0 + i32.const 17008 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 666 + i32.const 684 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 920735923817967 - i32.const 16 + i64.const 4095 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $224 - i32.const 19312 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17040 + i32.store offset=4 + local.get $0 + i32.const 17040 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 667 + i32.const 685 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9927935178558959 - i32.const 16 + i64.const 4294967295 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $225 - i32.const 19360 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 17456 + i32.store offset=4 + local.get $0 + i32.const 17456 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 668 + i32.const 686 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 81985529216486895 - i32.const 16 + i64.const 562949953421311 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $226 - i32.const 19408 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 19936 + i32.store offset=4 + local.get $0 + i32.const 19936 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 669 + i32.const 687 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1311768467463790320 - i32.const 16 + i64.const -1 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $227 - i32.const 19472 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20064 + i32.store offset=4 + local.get $0 + i32.const 20064 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 670 + i32.const 688 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $228 - i32.const 19536 + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20224 + i32.store offset=4 + local.get $0 + i32.const 20224 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 671 + i32.const 690 i32.const 1 call $~lib/builtins/abort unreachable end i64.const -1 - i32.const 16 + i32.const 3 call $~lib/util/number/utoa64 - local.tee $229 - i32.const 19600 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20320 + i32.store offset=4 + local.get $0 + i32.const 20320 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 672 + i32.const 694 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $230 - i32.const 19664 + i64.const -1 + i32.const 4 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20432 + i32.store offset=4 + local.get $0 + i32.const 20432 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 674 + i32.const 695 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $231 - i32.const 19728 + i64.const -1 + i32.const 5 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20528 + i32.store offset=4 + local.get $0 + i32.const 20528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 675 + i32.const 696 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $232 - i32.const 19728 + i64.const -1 + i32.const 8 + call $~lib/util/number/utoa64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20608 + i32.store offset=4 + local.get $0 + i32.const 20608 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 676 + i32.const 697 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 2 + i64.const -1 + i32.const 11 call $~lib/util/number/utoa64 - local.tee $233 - i32.const 2576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20672 + i32.store offset=4 + local.get $0 + i32.const 20672 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 680 + i32.const 698 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 2 + i64.const -1 + i32.const 15 call $~lib/util/number/utoa64 - local.tee $234 - i32.const 2640 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20736 + i32.store offset=4 + local.get $0 + i32.const 20736 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 681 + i32.const 699 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 7 - i32.const 2 + i64.const -1 + i32.const 17 call $~lib/util/number/utoa64 - local.tee $235 - i32.const 16768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20800 + i32.store offset=4 + local.get $0 + i32.const 20800 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 682 + i32.const 700 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 14 - i32.const 2 + i64.const -1 + i32.const 21 call $~lib/util/number/utoa64 - local.tee $236 - i32.const 16800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20864 + i32.store offset=4 + local.get $0 + i32.const 20864 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 683 + i32.const 701 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 59 - i32.const 2 + i64.const -1 + i32.const 27 call $~lib/util/number/utoa64 - local.tee $237 - i32.const 16864 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20928 + i32.store offset=4 + local.get $0 + i32.const 20928 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 684 + i32.const 702 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4095 - i32.const 2 + i64.const -1 + i32.const 32 call $~lib/util/number/utoa64 - local.tee $238 - i32.const 16896 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 20976 + i32.store offset=4 + local.get $0 + i32.const 20976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 685 + i32.const 703 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 2 + i64.const -1 + i32.const 36 call $~lib/util/number/utoa64 - local.tee $239 - i32.const 17312 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21024 + i32.store offset=4 + local.get $0 + i32.const 21024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 686 + i32.const 704 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 562949953421311 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $240 - i32.const 19792 + f64.const 0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21072 + i32.store offset=4 + local.get $0 + i32.const 21072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 687 + i32.const 707 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $241 - i32.const 19920 + f64.const -0 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21072 + i32.store offset=4 + local.get $0 + i32.const 21072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 688 + i32.const 708 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -8589934591 - i32.const 2 - call $~lib/util/number/itoa64 - local.tee $242 - i32.const 20080 + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6976 + i32.store offset=4 + local.get $0 + i32.const 6976 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 690 + i32.const 709 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 - local.tee $243 - i32.const 20176 + f64.const inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21104 + i32.store offset=4 + local.get $0 + i32.const 21104 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 694 + i32.const 710 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 - local.tee $244 - i32.const 20288 + f64.const -inf + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8272 + i32.store offset=4 + local.get $0 + i32.const 8272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 695 + i32.const 711 i32.const 1 call $~lib/builtins/abort unreachable - end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 - local.tee $245 - i32.const 20384 + end + f64.const 2.220446049250313e-16 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=4 + local.get $0 + i32.const 7488 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 696 + i32.const 712 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 - local.tee $246 - i32.const 20464 + f64.const -2.220446049250313e-16 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22128 + i32.store offset=4 + local.get $0 + i32.const 22128 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 697 + i32.const 713 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 - local.tee $247 - i32.const 20528 + f64.const 1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7552 + i32.store offset=4 + local.get $0 + i32.const 7552 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 698 + i32.const 714 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 - local.tee $248 - i32.const 20592 + f64.const -1797693134862315708145274e284 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22192 + i32.store offset=4 + local.get $0 + i32.const 22192 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 699 + i32.const 715 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 - local.tee $249 - i32.const 20656 + f64.const 4185580496821356722454785e274 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22272 + i32.store offset=4 + local.get $0 + i32.const 22272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 700 + i32.const 716 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 - local.tee $250 - i32.const 20720 + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22336 + i32.store offset=4 + local.get $0 + i32.const 22336 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 701 + i32.const 717 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 - local.tee $251 - i32.const 20784 + f64.const 4.940656e-318 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22416 + i32.store offset=4 + local.get $0 + i32.const 22416 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 702 + i32.const 720 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 - local.tee $252 - i32.const 20832 + f64.const 9060801153433600 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22464 + i32.store offset=4 + local.get $0 + i32.const 22464 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 703 + i32.const 721 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 36 - call $~lib/util/number/utoa64 - local.tee $253 - i32.const 20880 + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22528 + i32.store offset=4 + local.get $0 + i32.const 22528 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 704 + i32.const 722 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const 9409340012568248320 call $~lib/util/number/dtoa - local.tee $254 - i32.const 20928 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22592 + i32.store offset=4 + local.get $0 + i32.const 22592 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 707 + i32.const 723 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0 + f64.const 5e-324 call $~lib/util/number/dtoa - local.tee $255 - i32.const 20928 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7632 + i32.store offset=4 + local.get $0 + i32.const 7632 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 708 + i32.const 724 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 + f64.const 1 call $~lib/util/number/dtoa - local.tee $256 - i32.const 6768 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22656 + i32.store offset=4 + local.get $0 + i32.const 22656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 709 + i32.const 730 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf + f64.const 0.1 call $~lib/util/number/dtoa - local.tee $257 - i32.const 20960 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=4 + local.get $0 + i32.const 4560 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 710 + i32.const 731 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf + f64.const -1 call $~lib/util/number/dtoa - local.tee $258 - i32.const 8064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22688 + i32.store offset=4 + local.get $0 + i32.const 22688 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 711 + i32.const 732 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.220446049250313e-16 + f64.const -0.1 call $~lib/util/number/dtoa - local.tee $259 - i32.const 7280 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22720 + i32.store offset=4 + local.get $0 + i32.const 22720 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 712 + i32.const 733 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -2.220446049250313e-16 + f64.const 1e6 call $~lib/util/number/dtoa - local.tee $260 - i32.const 21984 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22752 + i32.store offset=4 + local.get $0 + i32.const 22752 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 713 + i32.const 735 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1797693134862315708145274e284 + f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $261 - i32.const 7344 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22800 + i32.store offset=4 + local.get $0 + i32.const 22800 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 714 + i32.const 736 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1797693134862315708145274e284 + f64.const -1e6 call $~lib/util/number/dtoa - local.tee $262 - i32.const 22048 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22848 + i32.store offset=4 + local.get $0 + i32.const 22848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 715 + i32.const 737 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 + f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $263 - i32.const 22128 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22896 + i32.store offset=4 + local.get $0 + i32.const 22896 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 716 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 + f64.const 1e7 call $~lib/util/number/dtoa - local.tee $264 - i32.const 22192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22944 + i32.store offset=4 + local.get $0 + i32.const 22944 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 717 + i32.const 739 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 + f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $265 - i32.const 22272 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22992 + i32.store offset=4 + local.get $0 + i32.const 22992 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 720 + i32.const 740 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 + f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $266 - i32.const 22320 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=4 + local.get $0 + i32.const 4848 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 721 + i32.const 742 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 + f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $267 - i32.const 22384 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23024 + i32.store offset=4 + local.get $0 + i32.const 23024 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 722 + i32.const 743 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 + f64.const inf call $~lib/util/number/dtoa - local.tee $268 - i32.const 22448 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21104 + i32.store offset=4 + local.get $0 + i32.const 21104 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 723 + i32.const 744 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 5e-324 + f64.const -inf call $~lib/util/number/dtoa - local.tee $269 - i32.const 7424 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8272 + i32.store offset=4 + local.get $0 + i32.const 8272 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 724 + i32.const 745 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 + f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $270 - i32.const 22512 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23072 + i32.store offset=4 + local.get $0 + i32.const 23072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 730 + i32.const 746 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.1 + f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $271 - i32.const 4352 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23104 + i32.store offset=4 + local.get $0 + i32.const 23104 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 731 + i32.const 747 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1 + f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $272 - i32.const 22544 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23152 + i32.store offset=4 + local.get $0 + i32.const 23152 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 732 + i32.const 748 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0.1 + f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $273 - i32.const 22576 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23184 + i32.store offset=4 + local.get $0 + i32.const 23184 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 733 + i32.const 749 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e6 + f64.const 0 call $~lib/util/number/dtoa - local.tee $274 - i32.const 22608 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 21072 + i32.store offset=4 + local.get $0 + i32.const 21072 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 735 + i32.const 750 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-06 + f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $275 - i32.const 22656 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23232 + i32.store offset=4 + local.get $0 + i32.const 23232 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 736 + i32.const 752 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e6 + f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $276 - i32.const 22704 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23280 + i32.store offset=4 + local.get $0 + i32.const 23280 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 737 + i32.const 753 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-06 + f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $277 - i32.const 22752 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23344 + i32.store offset=4 + local.get $0 + i32.const 23344 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 738 + i32.const 755 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e7 + f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $278 - i32.const 22800 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23408 + i32.store offset=4 + local.get $0 + i32.const 23408 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 739 + i32.const 756 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-07 + f64.const 1 call $~lib/util/number/dtoa - local.tee $279 - i32.const 22848 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 22656 + i32.store offset=4 + local.get $0 + i32.const 22656 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 740 + i32.const 757 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.e+308 + f64.const 12.34 call $~lib/util/number/dtoa - local.tee $280 - i32.const 4640 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23472 + i32.store offset=4 + local.get $0 + i32.const 23472 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 742 + i32.const 758 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1.e+308 + f64.const 0.3333333333333333 call $~lib/util/number/dtoa - local.tee $281 - i32.const 22880 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23504 + i32.store offset=4 + local.get $0 + i32.const 23504 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 743 + i32.const 760 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf + f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $282 - i32.const 20960 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23568 + i32.store offset=4 + local.get $0 + i32.const 23568 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 744 + i32.const 761 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf + f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $283 - i32.const 8064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23648 + i32.store offset=4 + local.get $0 + i32.const 23648 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 745 + i32.const 762 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-308 + f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $284 - i32.const 22928 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23696 + i32.store offset=4 + local.get $0 + i32.const 23696 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 746 + i32.const 763 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-308 + f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $285 - i32.const 22960 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23744 + i32.store offset=4 + local.get $0 + i32.const 23744 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 747 + i32.const 764 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-323 + f64.const 271.828 call $~lib/util/number/dtoa - local.tee $286 - i32.const 23008 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23792 + i32.store offset=4 + local.get $0 + i32.const 23792 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 748 + i32.const 765 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-323 + f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $287 - i32.const 23040 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23840 + i32.store offset=4 + local.get $0 + i32.const 23840 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 749 + i32.const 766 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $288 - i32.const 20928 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23888 + i32.store offset=4 + local.get $0 + i32.const 23888 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 750 + i32.const 767 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4294967272 + f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $289 - i32.const 23088 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 23936 + i32.store offset=4 + local.get $0 + i32.const 23936 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 1120 - i32.const 752 + i32.const 768 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - local.tee $290 - i32.const 23136 - call $~lib/string/String.__eq - i32.eqz + i32.const 0 + global.set $std/string/str + i32.const 40396 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|0 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|1 + end + end + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCharCode (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.const 0 + i32.gt_s + local.tee $3 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + i32.store16 + local.get $3 if - i32.const 0 - i32.const 1120 - i32.const 753 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + local.get $1 + i32.store16 offset=2 end - f64.const 555555555.5555556 - call $~lib/util/number/dtoa - local.tee $291 - i32.const 23200 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.fromCodePoint (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1114111 + i32.gt_u if i32.const 0 - i32.const 1120 - i32.const 755 - i32.const 1 + i32.const 1824 + i32.const 33 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 0.9999999999999999 - call $~lib/util/number/dtoa - local.tee $292 - i32.const 23264 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $0 + i32.const 65535 + i32.gt_s + local.tee $2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $2 if - i32.const 0 - i32.const 1120 - i32.const 756 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + i32.const 65536 + i32.sub + local.tee $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.const 16 + i32.shl + i32.or + i32.store + else + local.get $1 + local.get $0 + i32.store16 end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $293 - i32.const 22512 - call $~lib/string/String.__eq - i32.eqz + 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) (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.shl + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + i32.const 16 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/util/number/itoa32 (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 + i32.const 1 + local.get $1 + i32.const 36 + i32.gt_s + local.get $1 + i32.const 2 + i32.lt_s + select if - i32.const 0 - i32.const 1120 - i32.const 757 - i32.const 1 + i32.const 15360 + i32.const 15488 + i32.const 373 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $294 - i32.const 23328 - call $~lib/string/String.__eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 758 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2784 + return end - f64.const 0.3333333333333333 - call $~lib/util/number/dtoa - local.tee $295 - i32.const 23360 - call $~lib/string/String.__eq - i32.eqz + 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.set $0 + local.get $1 + i32.const 10 + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 760 + local.get $0 + call $~lib/util/number/decimalCount32 + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e17 - call $~lib/util/number/dtoa - local.tee $296 - i32.const 23424 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 1120 - i32.const 761 + i32.shl i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 1234e18 - call $~lib/util/number/dtoa - local.tee $297 - i32.const 23504 - call $~lib/string/String.__eq - i32.eqz + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + 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 $0 + local.get $1 + call $~lib/util/number/utoa_hex_simple + else + local.get $0 + i64.extend_i32_u + local.get $1 + call $~lib/util/number/ulog_base + local.get $3 + 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.get $0 + i64.extend_i32_u + local.get $4 + local.get $1 + call $~lib/util/number/utoa64_any_core + end + end + local.get $3 if - i32.const 0 - i32.const 1120 - i32.const 762 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.const 45 + i32.store16 end - f64.const 2.71828 - call $~lib/util/number/dtoa - local.tee $298 - i32.const 23552 - call $~lib/string/String.__eq - i32.eqz + 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) (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 + i32.const 1 + local.get $1 + i32.const 36 + i32.gt_s + local.get $1 + i32.const 2 + i32.lt_s + select if - i32.const 0 - i32.const 1120 - i32.const 763 - i32.const 1 + i32.const 15360 + i32.const 15488 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $299 - i32.const 23600 - call $~lib/string/String.__eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 1120 - i32.const 764 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2784 + return end - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $300 - i32.const 23648 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 765 + local.get $0 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 - call $~lib/builtins/abort - unreachable + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 31 + local.get $0 + i32.clz + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + local.tee $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa_hex_simple + 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 - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $301 - i32.const 23696 - call $~lib/string/String.__eq - i32.eqz + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (local $2 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 + i32.const 1 + local.get $1 + i32.const 36 + i32.gt_s + local.get $1 + i32.const 2 + i32.lt_s + select if - i32.const 0 - i32.const 1120 - i32.const 766 - i32.const 1 + i32.const 15360 + i32.const 15488 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $302 - i32.const 23744 - call $~lib/string/String.__eq - i32.eqz + local.get $0 + i64.eqz if - i32.const 0 - i32.const 1120 - i32.const 767 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2784 + return end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $303 - i32.const 23792 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.eq if - i32.const 0 - i32.const 1120 - i32.const 768 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i64.const 4294967295 + i64.le_u + if + local.get $0 + i32.wrap_i64 + local.tee $3 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $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/utoa_dec_simple + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 $1 + call $~lib/util/number/utoa_dec_simple + end + else + local.get $1 + i32.const 16 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + 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 $0 + local.get $1 + call $~lib/util/number/utoa_hex_simple + else + local.get $0 + 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 + local.get $3 + local.get $1 + call $~lib/util/number/utoa64_any_core + end end - global.get $std/string/str - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - local.get $101 - call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $103 - call $~lib/rt/pure/__release - local.get $104 - call $~lib/rt/pure/__release - local.get $105 - call $~lib/rt/pure/__release - local.get $106 - call $~lib/rt/pure/__release - local.get $107 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $116 - call $~lib/rt/pure/__release - local.get $117 - call $~lib/rt/pure/__release - local.get $118 - call $~lib/rt/pure/__release - local.get $119 - call $~lib/rt/pure/__release - local.get $120 - call $~lib/rt/pure/__release - local.get $121 - call $~lib/rt/pure/__release - local.get $122 - call $~lib/rt/pure/__release - local.get $123 - call $~lib/rt/pure/__release - local.get $124 - call $~lib/rt/pure/__release - local.get $125 - call $~lib/rt/pure/__release - local.get $126 - call $~lib/rt/pure/__release - local.get $127 - call $~lib/rt/pure/__release - local.get $128 - call $~lib/rt/pure/__release - local.get $129 - call $~lib/rt/pure/__release - local.get $130 - call $~lib/rt/pure/__release - local.get $131 - call $~lib/rt/pure/__release - local.get $132 - call $~lib/rt/pure/__release - local.get $133 - call $~lib/rt/pure/__release - local.get $134 - call $~lib/rt/pure/__release - local.get $135 - call $~lib/rt/pure/__release - local.get $136 - call $~lib/rt/pure/__release - local.get $137 - call $~lib/rt/pure/__release - local.get $138 - call $~lib/rt/pure/__release - local.get $139 - call $~lib/rt/pure/__release - local.get $140 - call $~lib/rt/pure/__release - local.get $141 - call $~lib/rt/pure/__release - local.get $142 - call $~lib/rt/pure/__release - local.get $143 - call $~lib/rt/pure/__release - local.get $144 - call $~lib/rt/pure/__release - local.get $145 - call $~lib/rt/pure/__release - local.get $146 - call $~lib/rt/pure/__release - local.get $147 - call $~lib/rt/pure/__release - local.get $148 - call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release - local.get $150 - call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release - local.get $152 - call $~lib/rt/pure/__release - local.get $153 - call $~lib/rt/pure/__release - local.get $154 - call $~lib/rt/pure/__release - local.get $155 - call $~lib/rt/pure/__release - local.get $156 - call $~lib/rt/pure/__release - local.get $157 - call $~lib/rt/pure/__release - local.get $158 - call $~lib/rt/pure/__release - local.get $159 - call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $161 - call $~lib/rt/pure/__release - local.get $162 - call $~lib/rt/pure/__release - local.get $163 - call $~lib/rt/pure/__release - local.get $164 - call $~lib/rt/pure/__release - local.get $165 - call $~lib/rt/pure/__release - local.get $166 - call $~lib/rt/pure/__release - local.get $167 - call $~lib/rt/pure/__release - local.get $168 - call $~lib/rt/pure/__release - local.get $169 - call $~lib/rt/pure/__release - local.get $170 - call $~lib/rt/pure/__release - local.get $171 - call $~lib/rt/pure/__release - local.get $172 - call $~lib/rt/pure/__release - local.get $173 - call $~lib/rt/pure/__release - local.get $174 - call $~lib/rt/pure/__release - local.get $175 - call $~lib/rt/pure/__release - local.get $176 - call $~lib/rt/pure/__release - local.get $177 - call $~lib/rt/pure/__release - local.get $178 - call $~lib/rt/pure/__release - local.get $179 - call $~lib/rt/pure/__release - local.get $180 - call $~lib/rt/pure/__release - local.get $181 - call $~lib/rt/pure/__release - local.get $182 - call $~lib/rt/pure/__release - local.get $183 - call $~lib/rt/pure/__release - local.get $184 - call $~lib/rt/pure/__release - local.get $185 - call $~lib/rt/pure/__release - local.get $186 - call $~lib/rt/pure/__release - local.get $187 - call $~lib/rt/pure/__release - local.get $188 - call $~lib/rt/pure/__release - local.get $189 - call $~lib/rt/pure/__release - local.get $190 - call $~lib/rt/pure/__release - local.get $191 - call $~lib/rt/pure/__release - local.get $192 - call $~lib/rt/pure/__release - local.get $193 - call $~lib/rt/pure/__release - local.get $194 - call $~lib/rt/pure/__release - local.get $195 - call $~lib/rt/pure/__release - local.get $196 - call $~lib/rt/pure/__release - local.get $197 - call $~lib/rt/pure/__release - local.get $198 - call $~lib/rt/pure/__release - local.get $199 - call $~lib/rt/pure/__release - local.get $200 - call $~lib/rt/pure/__release - local.get $201 - call $~lib/rt/pure/__release - local.get $202 - call $~lib/rt/pure/__release - local.get $203 - call $~lib/rt/pure/__release - local.get $204 - call $~lib/rt/pure/__release - local.get $205 - call $~lib/rt/pure/__release - local.get $206 - call $~lib/rt/pure/__release - local.get $207 - call $~lib/rt/pure/__release - local.get $208 - call $~lib/rt/pure/__release - local.get $209 - call $~lib/rt/pure/__release - local.get $210 - call $~lib/rt/pure/__release - local.get $211 - call $~lib/rt/pure/__release - local.get $212 - call $~lib/rt/pure/__release - local.get $213 - call $~lib/rt/pure/__release - local.get $214 - call $~lib/rt/pure/__release - local.get $215 - call $~lib/rt/pure/__release - local.get $216 - call $~lib/rt/pure/__release - local.get $217 - call $~lib/rt/pure/__release - local.get $218 - call $~lib/rt/pure/__release - local.get $219 - call $~lib/rt/pure/__release - local.get $220 - call $~lib/rt/pure/__release - local.get $221 - call $~lib/rt/pure/__release - local.get $222 - call $~lib/rt/pure/__release - local.get $223 - call $~lib/rt/pure/__release - local.get $224 - call $~lib/rt/pure/__release - local.get $225 - call $~lib/rt/pure/__release - local.get $226 - call $~lib/rt/pure/__release - local.get $227 - call $~lib/rt/pure/__release - local.get $228 - call $~lib/rt/pure/__release - local.get $229 - call $~lib/rt/pure/__release - local.get $230 - call $~lib/rt/pure/__release - local.get $231 - call $~lib/rt/pure/__release - local.get $232 - call $~lib/rt/pure/__release - local.get $233 - call $~lib/rt/pure/__release - local.get $234 - call $~lib/rt/pure/__release - local.get $235 - call $~lib/rt/pure/__release - local.get $236 - call $~lib/rt/pure/__release - local.get $237 - call $~lib/rt/pure/__release - local.get $238 - call $~lib/rt/pure/__release - local.get $239 - call $~lib/rt/pure/__release - local.get $240 - call $~lib/rt/pure/__release - local.get $241 - call $~lib/rt/pure/__release - local.get $242 - call $~lib/rt/pure/__release - local.get $243 - call $~lib/rt/pure/__release - local.get $244 - call $~lib/rt/pure/__release - local.get $245 - call $~lib/rt/pure/__release - local.get $246 - call $~lib/rt/pure/__release - local.get $247 - call $~lib/rt/pure/__release - local.get $248 - call $~lib/rt/pure/__release - local.get $249 - call $~lib/rt/pure/__release - local.get $250 - call $~lib/rt/pure/__release - local.get $251 - call $~lib/rt/pure/__release - local.get $252 - call $~lib/rt/pure/__release - local.get $253 - call $~lib/rt/pure/__release - local.get $254 - call $~lib/rt/pure/__release - local.get $255 - call $~lib/rt/pure/__release - local.get $256 - call $~lib/rt/pure/__release - local.get $257 - call $~lib/rt/pure/__release - local.get $258 - call $~lib/rt/pure/__release - local.get $259 - call $~lib/rt/pure/__release - local.get $260 - call $~lib/rt/pure/__release - local.get $261 - call $~lib/rt/pure/__release - local.get $262 - call $~lib/rt/pure/__release - local.get $263 - call $~lib/rt/pure/__release - local.get $264 - call $~lib/rt/pure/__release - local.get $265 - call $~lib/rt/pure/__release - local.get $266 - call $~lib/rt/pure/__release - local.get $267 - call $~lib/rt/pure/__release - local.get $268 - call $~lib/rt/pure/__release - local.get $269 - call $~lib/rt/pure/__release - local.get $270 - call $~lib/rt/pure/__release - local.get $271 - call $~lib/rt/pure/__release - local.get $272 - call $~lib/rt/pure/__release - local.get $273 - call $~lib/rt/pure/__release - local.get $274 - call $~lib/rt/pure/__release - local.get $275 - call $~lib/rt/pure/__release - local.get $276 - call $~lib/rt/pure/__release - local.get $277 - call $~lib/rt/pure/__release - local.get $278 - call $~lib/rt/pure/__release - local.get $279 - call $~lib/rt/pure/__release - local.get $280 - call $~lib/rt/pure/__release - local.get $281 - call $~lib/rt/pure/__release - local.get $282 - call $~lib/rt/pure/__release - local.get $283 - call $~lib/rt/pure/__release - local.get $284 - call $~lib/rt/pure/__release - local.get $285 - call $~lib/rt/pure/__release - local.get $286 - call $~lib/rt/pure/__release - local.get $287 - call $~lib/rt/pure/__release - local.get $288 - call $~lib/rt/pure/__release - local.get $289 - call $~lib/rt/pure/__release - local.get $290 - call $~lib/rt/pure/__release - local.get $291 - call $~lib/rt/pure/__release - local.get $292 - call $~lib/rt/pure/__release - local.get $293 - call $~lib/rt/pure/__release - local.get $294 - call $~lib/rt/pure/__release - local.get $295 - call $~lib/rt/pure/__release - local.get $296 - call $~lib/rt/pure/__release - local.get $297 - call $~lib/rt/pure/__release - local.get $298 - call $~lib/rt/pure/__release - local.get $299 - call $~lib/rt/pure/__release - local.get $300 - call $~lib/rt/pure/__release - local.get $301 - call $~lib/rt/pure/__release - local.get $302 - call $~lib/rt/pure/__release - local.get $303 - call $~lib/rt/pure/__release - ) - (func $std/string/getString (result i32) - global.get $std/string/str - call $~lib/rt/pure/__retain ) - (func $~lib/rt/pure/decrement (param $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa64 (param $0 i64) (param $1 i32) (result 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 + global.get $~lib/memory/__stack_pointer + i32.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.and + local.get $1 + i32.const 36 + i32.gt_s + local.get $1 + i32.const 2 + i32.lt_s + select if - i32.const 0 - i32.const 1200 - i32.const 122 - i32.const 14 + i32.const 15360 + i32.const 15488 + i32.const 431 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2784 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $3 + select + local.set $0 local.get $1 - i32.const 1 + i32.const 10 i32.eq if - block $__inlined_func$~lib/rt/__visit_members - block $invalid - block $~lib/array/Array - block $~lib/array/Array<~lib/string/String> - 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 $~lib/array/Array<~lib/string/String> $~lib/array/Array $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 - local.get $0 - i32.load offset=24 - local.tee $1 - local.get $0 - i32.load offset=32 - 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 $4 - if - local.get $4 - call $~lib/rt/pure/__visit - end - local.get $1 - i32.const 4 - i32.add - local.set $1 - br $while-continue|0 - end - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and + local.get $0 + i64.const 4294967295 + i64.le_u if - i32.const 0 - i32.const 1200 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.wrap_i64 + local.tee $4 + call $~lib/util/number/decimalCount32 + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $4 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + call $~lib/util/number/decimalCount64High + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + 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 $1 + call $~lib/util/number/utoa_dec_simple end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock else local.get $1 - i32.eqz + i32.const 16 + i32.eq if - i32.const 0 - i32.const 1200 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 63 + local.get $0 + i64.clz + i32.wrap_i64 + i32.sub + i32.const 2 + i32.shr_s + i32.const 1 + i32.add + 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 $0 + local.get $1 + call $~lib/util/number/utoa_hex_simple + else + local.get $0 + local.get $1 + call $~lib/util/number/ulog_base + local.get $3 + 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.get $0 + local.get $4 + local.get $1 + call $~lib/util/number/utoa64_any_core end - local.get $0 - local.get $1 - i32.const 1 - i32.sub + end + local.get $3 + if local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 + 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 $~start - call $start:std/string - ) - (func $~lib/rt/pure/__visit (param $0 i32) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.const 23820 - i32.lt_u + f64.const 0 + f64.eq if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 21072 return end local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 6976 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 8272 + i32.const 21104 + local.get $0 + f64.const 0 + f64.lt + select + return + end + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 21136 + local.get $1 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) ) diff --git a/tests/compiler/std/string.ts b/tests/compiler/std/string.ts index 9978f11dc4..1a32852a9e 100644 --- a/tests/compiler/std/string.ts +++ b/tests/compiler/std/string.ts @@ -776,4 +776,7 @@ export function getString(): string { // Unleak globals -__release(changetype(str)); +str = changetype(0); + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index f4b1fef49b..d57cdbc2a5 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (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)) @@ -10,463 +10,477 @@ (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $i32_=>_f64 (func (param i32) (result f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (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\00h\00i\00,\00 \00I\00\'\00m\00 \00a\00 \00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 76) ",\00\00\00\01\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\00\00\00") - (data (i32.const 124) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\df\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 156) "<\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 220) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\df\00\df\00\00\00\00\00\00\00\00\00") - (data (i32.const 252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00\df\00a\00b\00\00\00\00\00\00\00") - (data (i32.const 284) "\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 316) "\1c\00\00\00\01\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") - (data (i32.const 348) "\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 380) "<\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 444) "<\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 508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\00\d8\00\df\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\1c\00\00\00~\00l\00i\00b\00/\00s\00t\00r\00i\00n\00g\00.\00t\00s\00") - (data (i32.const 620) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\004\d8\06\df\00\00\00\00\00\00\00\00") - (data (i32.const 652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00h\00i\00\00\00\00\00\00\00\00\00") - (data (i32.const 684) "\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 716) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 748) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00I\00\'\00m\00\00\00\00\00\00\00") - (data (i32.const 780) "\1c\00\00\00\01\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") - (data (i32.const 812) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00 \00 \00\00\00\00\00\00\00") - (data (i32.const 844) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00\00\00\00\00\00\00") - (data (i32.const 876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00 \00 \00a\00b\00c\00\00\00") - (data (i32.const 908) "\1c\00\00\00\01\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 940) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00a\00b\00c\00") - (data (i32.const 972) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\002\003\001\002\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00 \00 \00\00\00") - (data (i32.const 1052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00b\00c\00a\00b\00c\00") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1132) "\1c\00\00\00\01\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") - (data (i32.const 1164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00,\00 \00I\00\00\00\00\00\00\00") - (data (i32.const 1228) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1260) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1292) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00b\00d\00\00\00\00\00\00\00") - (data (i32.const 1324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00c\00d\00\00\00\00\00") - (data (i32.const 1356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00 \00c\00\00\00\00\00") - (data (i32.const 1388) ",\00\00\00\01\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 \00\00\00\00\00\00\00") - (data (i32.const 1436) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00 \00\t\00\0d\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1484) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00 \00\n\00\t\00\0d\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1532) "\1c\00\00\00\01\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 1564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\000\00\00\00\00\00\00\00") - (data (i32.const 1596) "\1c\00\00\00\01\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 1628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\000\000\001\00\00\00\00\00") - (data (i32.const 1660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00b\001\000\001\00\00\00") - (data (i32.const 1692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00o\007\000\007\00\00\00") - (data (i32.const 1724) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00x\00f\000\00f\00\00\00") - (data (i32.const 1756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00X\00F\000\00F\00\00\00") - (data (i32.const 1788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\001\001\00\00\00\00\00\00\00") - (data (i32.const 1820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00x\001\00g\00\00\00\00\00") - (data (i32.const 1852) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\001\002\003\00\00\00\00\00") - (data (i32.const 1884) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\001\002\003\00\00\00\00\00") - (data (i32.const 1916) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\00.\003\00\00\00") - (data (i32.const 1948) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\000\00\00\00\00\00\00\00") - (data (i32.const 1980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00b\001\001\00\00\00\00\00") - (data (i32.const 2012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00\n\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 2044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00( 1\00\00\00\00\00\00\00\00\00") - (data (i32.const 2076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00) 1\00\00\00\00\00\00\00\00\00") - (data (i32.const 2108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\000\00\00\00\00\00\00\00\00\00") - (data (i32.const 2140) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\000\00X\00A\00B\00C\00D\00E\00F\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2188) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00A\00B\00C\00D\00E\00F\00") - (data (i32.const 2220) "<\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 2284) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 2364) "<\00\00\00\01\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\00") - (data (i32.const 2428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00=\d8%\dd\00\00\00\00\00\00") - (data (i32.const 2460) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\002\00b\00a\00d\00n\00u\00m\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00 \00\t\00\n\001\00\00\00\00\00") - (data (i32.const 2540) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00 \00\t\00\n\000\00x\000\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2588) "\1c\00\00\00\01\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") - (data (i32.const 2620) "\1c\00\00\00\01\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") - (data (i32.const 2652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00=\d8%\dd\00\00\00\00\00\00\00\00") - (data (i32.const 2684) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00a\00d\00n\00u\00m\00") - (data (i32.const 2716) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\000\00x\007\00F\00F\00F\00F\00F\00F\00F\00\00\00\00\00\00\00\00\00") - (data (i32.const 2764) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 2832) "\00\00\00\00\00\00\f0?\00\00\00\00\00\00$@\00\00\00\00\00\00Y@\00\00\00\00\00@\8f@\00\00\00\00\00\88\c3@\00\00\00\00\00j\f8@\00\00\00\00\80\84.A\00\00\00\00\d0\12cA\00\00\00\00\84\d7\97A\00\00\00\00e\cd\cdA\00\00\00 _\a0\02B\00\00\00\e8vH7B\00\00\00\a2\94\1amB\00\00@\e5\9c0\a2B\00\00\90\1e\c4\bc\d6B\00\004&\f5k\0cC\00\80\e07y\c3AC\00\a0\d8\85W4vC\00\c8Ngm\c1\abC\00=\91`\e4X\e1C@\8c\b5x\1d\af\15DP\ef\e2\d6\e4\1aKD\92\d5M\06\cf\f0\80D") - (data (i32.const 3020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00.\00\00\00\00\00\00\00\00\00") - (data (i32.const 3052) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\000\000\00\00\00\00\00") - (data (i32.const 3084) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\005\00\00\00\00\00") - (data (i32.const 3116) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\00e\00-\005\00\00\00") - (data (i32.const 3148) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00-\000\00.\003\00e\00-\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3196) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\003\00e\00+\002\002\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\001\00\00\00\00\00") - (data (i32.const 3276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00.\001\00e\00-\000\00") - (data (i32.const 3308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\001\00\00\00\00\00\00\00") - (data (i32.const 3340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\002\005\00\00\00\00\00\00\00") - (data (i32.const 3372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\00+\003\00a\00") - (data (i32.const 3404) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\001\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3452) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00.\000\00e\00-\003\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3500) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3548) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\003\002\004\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\008\00") - (data (i32.const 3628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00+\003\000\009\00") - (data (i32.const 3660) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00-\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3708) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00.\000\00e\00-\001\000\00_\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3756) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\00.\000\00e\00+\001\00_\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3804) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\000\00\00\00\00\00\00\00") - (data (i32.const 3836) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00_\001\00\00\00\00\00\00\00") - (data (i32.const 3868) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\000\00.\000\000\00_\000\001\00e\002\00\00\00\00\00\00\00\00\00") - (data (i32.const 3916) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 3964) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 4012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\006\000\00\00\00") - (data (i32.const 4044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\006\000\00\00\00\00\00") - (data (i32.const 4076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\00.\004\00e\00") - (data (i32.const 4108) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00.\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4156) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\00x\00\00\00\00\00\00\00\00\00") - (data (i32.const 4188) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 4236) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\000\001\00e\001\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00") - (data (i32.const 4284) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\000\001\000\00s\00t\00r\00i\00n\00g\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4332) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00.\002\002\00e\00-\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\00.\00s\001\00\00\00") - (data (i32.const 4412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\005\00\00\00\00\00\00\00") - (data (i32.const 4444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00x\00D\00\00\00\00\00\00\00") - (data (i32.const 4476) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0b\001\00.\001\00\00\00\00\00") - (data (i32.const 4508) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\0b\00\0b\00-\001\00.\001\00") - (data (i32.const 4540) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00\0c\00\0c\00-\001\00.\001\00") - (data (i32.const 4572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00( ( -\001\00.\001\00") - (data (i32.const 4604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00) ) -\001\00.\001\00") - (data (i32.const 4636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\000\00\00\00") - (data (i32.const 4668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\00a\00\00\00") - (data (i32.const 4700) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\000\000\001\00\00\00") - (data (i32.const 4732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\000\00\00\00") - (data (i32.const 4764) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\000\00.\000\00a\00\00\00") - (data (i32.const 4796) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00e\00\00\00\00\00") - (data (i32.const 4828) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00e\00+\000\000\000\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4876) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\000\00e\00+\001\000\000\00") - (data (i32.const 4908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00.\00-\001\00.\00\00\00") - (data (i32.const 4940) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00e\00-\001\00.\002\00") - (data (i32.const 4972) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\00e\00x\00\00\00\00\00\00\00") - (data (i32.const 5004) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\001\00x\00\00\00\00\00") - (data (i32.const 5036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\00-\00x\00\00\00\00\00") - (data (i32.const 5068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\001\00x\00\00\00") - (data (i32.const 5100) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\000\00.\001\00e\00-\001\00x\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\000\00.\00\00\00\00\00\00\00") - (data (i32.const 5180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\000\00\00\00\00\00\00\00") - (data (i32.const 5212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\000\00.\00\00\00\00\00\00\00") - (data (i32.const 5244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\001\00.\00\00\00\00\00\00\00") - (data (i32.const 5276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00.\00\00\00\00\00\00\00") - (data (i32.const 5308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\00a\00\00\00\00\00\00\00") - (data (i32.const 5340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00.\00.\001\00\00\00\00\00") - (data (i32.const 5372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\000\00.\001\00.\001\00\00\00") - (data (i32.const 5404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\000\00.\00 \001\00\00\00\00\00") - (data (i32.const 5436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\000\00.\000\00\00\00\00\00") - (data (i32.const 5468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\000\00.\000\00\00\00\00\00") - (data (i32.const 5500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\000\00\00\00\00\00\00\00\00\00") - (data (i32.const 5532) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\000\00\00\00\00\00\00\00") - (data (i32.const 5564) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\000\00\00\00\00\00\00\00") - (data (i32.const 5596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 5628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00.\00.\000\00\00\00\00\00\00\00") - (data (i32.const 5660) "\1c\00\00\00\01\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") - (data (i32.const 5692) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00.\00.\00\00\00\00\00\00\00\00\00") - (data (i32.const 5724) "\1c\00\00\00\01\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 5756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5788) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0e\18\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5820) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\0e\181\00.\001\00\00\00\00\00") - (data (i32.const 5852) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00\0e\18\0e\181\00.\001\00\00\00") - (data (i32.const 5884) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5916) "\1c\00\00\00\01\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 5948) "\1c\00\00\00\01\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 5980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\002\00\00\00\00\00") - (data (i32.const 6012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\002\00\00\00") - (data (i32.const 6044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\002\003\00\00\00\00\00") - (data (i32.const 6076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\002\003\00\00\00") - (data (i32.const 6108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\007\00\00\00\00\00") - (data (i32.const 6140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\007\00\00\00") - (data (i32.const 6172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\00e\003\008\00\00\00\00\00") - (data (i32.const 6204) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\00-\003\008\00\00\00") - (data (i32.const 6236) "<\00\00\00\01\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\00\00\00") - (data (i32.const 6300) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6380) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\005\00e\00-\003\002\004\00") - (data (i32.const 6412) ",\00\00\00\01\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\00\00\00") - (data (i32.const 6460) "\8c\00\00\00\01\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\00") - (data (i32.const 6604) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6652) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6700) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00-\003\002\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6748) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\001\00E\00+\003\000\009\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 6796) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\00e\00-\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") - (data (i32.const 6844) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\00e\00+\001\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00") - (data (i32.const 6892) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\00.\00e\003\006\000\00") - (data (i32.const 6924) ",\00\00\00\01\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 6972) ",\00\00\00\01\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 7020) ",\00\00\00\01\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 7068) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00x\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7116) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00f\00i\00n\00i\00t\00y\00+\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 7164) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00I\00n\00f\00i\00\00\00\00\00") - (data (i32.const 7196) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00+\00I\00n\00f\00i\00n\00i\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7244) ",\00\00\00\01\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 7292) "\bc\00\00\00\01\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\00\00\00") - (data (i32.const 7484) "\bc\00\00\00\01\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\00\00\00") - (data (i32.const 7676) "\bc\00\00\00\01\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\00\00\00") - (data (i32.const 7868) "\9c\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8028) "\9c\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8188) "\9c\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8348) "\9c\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8508) "\9c\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8668) "l\00\00\00\01\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\00") - (data (i32.const 8780) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 8892) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9004) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9116) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9228) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9340) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9452) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9564) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9676) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9788) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 9900) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10012) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10124) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10236) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10348) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10460) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10572) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10684) "l\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 10796) "l\00\00\00\01\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\00\00\00") - (data (i32.const 10908) "l\00\00\00\01\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\00\00\00") - (data (i32.const 11020) "l\00\00\00\01\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\00\00\00") - (data (i32.const 11132) "l\00\00\00\01\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\00") - (data (i32.const 11244) "l\00\00\00\01\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\00") - (data (i32.const 11356) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00 \00\t\00\n\00\00\00\00\00\00\00") - (data (i32.const 11388) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00 \00\t\00\n\00\0d\00.\001\00") - (data (i32.const 11420) "\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 11452) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 11484) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\001\00\00\00\00\00") - (data (i32.const 11516) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00k\00e\00y\002\00\00\00\00\00") - (data (i32.const 11548) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\001\00\00\00\00\00\00\00") - (data (i32.const 11580) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00k\00e\002\00\00\00\00\00\00\00") - (data (i32.const 11612) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\002\00\00\00") - (data (i32.const 11644) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00k\00e\00y\001\001\00\00\00") - (data (i32.const 11676) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\a40\ed0\cf0\cb0\db0\d80\c80\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11724) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00\a60\f00\ce0\aa0\af0\e40\de0\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11772) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 11820) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 11868) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 11900) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00a\00\00\00\00\00\00\00\00\00") - (data (i32.const 11932) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\000\00\00\00\00\00\00\00\00\00") - (data (i32.const 11964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\001\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 11996) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\000\001\00\00\00\00\00\00\00") - (data (i32.const 12028) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\002\00\00\00\00\00\00\00") - (data (i32.const 12060) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\004\00\00\00\00\00") - (data (i32.const 12092) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\002\003\003\00\00\00\00\00") - (data (i32.const 12124) ",\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 12172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00a\00a\00a\00\00\00\00\00\00\00") - (data (i32.const 12204) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\00b\00a\00b\00a\00b\00a\00b\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00a\00a\00a\00a\00\00\00") - (data (i32.const 12284) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00a\00a\00a\00a\00a\00") - (data (i32.const 12316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00a\00a\00a\00a\00a\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12364) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00-\00b\00-\00c\00\00\00") - (data (i32.const 12396) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00-\00c\00\00\00") - (data (i32.const 12428) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00a\00b\00c\00\00\00\00\00") - (data (i32.const 12460) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00\n\00a\00b\00c\00\00\00\00\00") - (data (i32.const 12492) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12524) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12556) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00+\00+\00\00\00\00\00\00\00\00\00") - (data (i32.const 12588) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00a\00b\00+\00+\00\00\00\00\00") - (data (i32.const 12620) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00a\00b\00c\00a\00b\00c\00a\00b\00c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00+\00+\00+\00\00\00\00\00\00\00") - (data (i32.const 12700) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00b\00c\00a\00b\00c\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12748) ",\00\00\00\01\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+\00\00\00") - (data (i32.const 12796) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00+\00+\00c\00+\00+\00c\00") - (data (i32.const 12828) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00c\00c\00c\00c\00\00\00\00\00") - (data (i32.const 12860) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00c\00c\00\00\00\00\00\00\00\00\00") - (data (i32.const 12892) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00+\00+\00+\00+\00\00\00\00\00") - (data (i32.const 12924) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12956) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00b\00c\00\00\00\00\00\00\00\00\00") - (data (i32.const 12988) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00a\00+\00\00\00\00\00\00\00\00\00") - (data (i32.const 13020) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00+\00b\00+\00c\00\00\00") - (data (i32.const 13052) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00+\00a\00+\00b\00+\00c\00+\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13100) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00b\00c\00d\00e\00\00\00") - (data (i32.const 13132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00-\00-\00-\00\00\00\00\00\00\00") - (data (i32.const 13164) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00-\00-\00-\00b\00c\00d\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\00-\00-\00-\00-\00\00\00") - (data (i32.const 13244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00-\00\00\00\00\00") - (data (i32.const 13276) ",\00\00\00\01\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-\00\00\00\00\00") - (data (i32.const 13324) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00-\00-\00-\00a\00\00\00\00\00") - (data (i32.const 13356) ",\00\00\00\01\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\00") - (data (i32.const 13404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13436) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00j\00k\00l\00m\00n\00\00\00") - (data (i32.const 13468) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00c\00d\00e\00f\00g\00\00\00") - (data (i32.const 13500) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00d\00e\00f\00g\00h\00\00\00") - (data (i32.const 13532) ",\00\00\00\01\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\00\00\00") - (data (i32.const 13580) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00c\00d\00e\00f\00g\00h\00i\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13628) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00e\00f\00g\00\00\00\00\00\00\00") - (data (i32.const 13660) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\00e\00f\00g\00h\00\00\00\00\00") - (data (i32.const 13692) "\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 13724) ",\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 13772) "<\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 13836) "|\00\00\00\01\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 13964) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00a\00,\00b\00,\00c\00\00\00") - (data (i32.const 13996) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00a\00,\00 \00b\00,\00 \00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 14044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00,\00 \00\00\00\00\00\00\00\00\00") - (data (i32.const 14076) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00,\00c\00") - (data (i32.const 14108) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00,\00a\00,\00b\00,\00c\00") - (data (i32.const 14140) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00a\00,\00b\00,\00c\00,\00") - (data (i32.const 14172) "|\00\00\00\01\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 14300) "<\00\00\00\01\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 14364) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 14764) "\1c\04\00\00\01\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 15820) "\\\00\00\00\01\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 15916) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 15948) "\1c\00\00\00\01\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 15980) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\000\000\000\00\00\00") - (data (i32.const 16012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\002\003\004\005\00\00\00") - (data (i32.const 16044) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\003\004\005\006\00") - (data (i32.const 16076) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\001\001\001\001\001\001\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16124) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\002\003\004\005\006\007\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16172) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\001\002\003\004\005\006\007\008\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16220) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\002\003\004\005\006\007\008\009\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16268) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\006\00\00\00\00\00\00\00\00\00") - (data (i32.const 16316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\007\00\00\00\00\00\00\00\00\00") - (data (i32.const 16364) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 16412) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\00-\001\00\00\00\00\00\00\00\00\00") - (data (i32.const 16444) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\000\000\000\00\00\00\00\00") - (data (i32.const 16476) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\002\001\004\007\004\008\003\006\004\008\00\00\00\00\00\00\00\00\00") - (data (i32.const 16524) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\005\00\00\00\00\00\00\00\00\00") - (data (i32.const 16572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\04\00\00\007\00b\00\00\00\00\00\00\00\00\00") - (data (i32.const 16604) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\00d\002\00\00\00\00\00\00\00") - (data (i32.const 16636) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\003\000\003\009\00\00\00\00\00") - (data (i32.const 16668) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\00e\002\004\000\00\00\00") - (data (i32.const 16700) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\000\00f\004\004\007\00") - (data (i32.const 16732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\002\00d\006\008\007\00") - (data (i32.const 16764) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00b\00c\006\001\004\00e\00") - (data (i32.const 16796) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\007\005\00b\00c\00d\001\005\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16844) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16892) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16940) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 16988) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\007\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00-\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17132) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00-\008\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17180) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\001\001\00\00\00\00\00\00\00") - (data (i32.const 17212) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\08\00\00\001\001\001\000\00\00\00\00\00") - (data (i32.const 17244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\001\001\001\000\001\00\00\00") - (data (i32.const 17276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\001\001\001\000\001\001\00") - (data (i32.const 17308) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 17356) "L\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17436) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17532) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17628) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17724) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17820) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 17868) "<\00\00\00\01\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\00\00\00") - (data (i32.const 17932) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 17996) ",\00\00\00\01\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\00") - (data (i32.const 18044) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 18092) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\001\009\000\004\004\004\000\005\005\003\00\00\00\00\00\00\00\00\00") - (data (i32.const 18140) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00a\002\000\00d\00c\00d\008\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18188) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00a\007\00f\00f\00d\00a\009\000\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18236) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\002\008\001\00d\005\005\00i\003\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18284) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\002\008\00j\00p\00d\00l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18332) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\003\00v\00v\00v\00v\00v\00v\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18380) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\001\00z\001\004\001\00z\003\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18428) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\009\009\009\009\009\009\009\009\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18476) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\000\000\000\000\000\000\000\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18524) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\004\002\009\004\009\006\007\002\009\007\00\00\00\00\00\00\00\00\00") - (data (i32.const 18572) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 18620) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 18668) ",\00\00\00\01\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\00\00\00") - (data (i32.const 18716) ",\00\00\00\01\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\00") - (data (i32.const 18764) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18828) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18892) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 18956) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 19020) "<\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 19084) "<\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 19148) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00-\001\002\003\004\00\00\00") - (data (i32.const 19180) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 19228) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 19276) ",\00\00\00\01\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\00\00\00") - (data (i32.const 19324) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19388) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 19452) "<\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 19516) "<\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 19580) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00f\00f\00f\00f\00f\00f\00f\00f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19628) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 19676) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 19724) ",\00\00\00\01\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\00\00\00") - (data (i32.const 19772) ",\00\00\00\01\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\00") - (data (i32.const 19820) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19884) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 19948) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20012) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20076) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20140) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20204) "|\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20332) "\9c\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20492) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 20588) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20700) "\\\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 20796) "L\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 20876) "<\00\00\00\01\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\00") - (data (i32.const 20940) "<\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 21004) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 21068) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 21132) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 21196) ",\00\00\00\01\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\00") - (data (i32.const 21244) ",\00\00\00\01\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\00\00\00") - (data (i32.const 21292) ",\00\00\00\01\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\00\00\00") - (data (i32.const 21340) "\1c\00\00\00\01\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 21372) ",\00\00\00\01\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 21424) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 21480) "\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\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 $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 + i32.store i32.const 1 - call $~lib/rt/pure/__new - local.set $5 - local.get $5 + drop local.get $0 - local.get $4 - i32.add local.get $2 - call $~lib/memory/memory.copy - local.get $5 - call $~lib/rt/pure/__retain + i32.const 1 + call $~lib/rt/itcms/__link ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local $3 f64) - (local $4 i32) + (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 $7 f64) - (local $8 f64) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 + i32.load offset=8 + local.set $3 + local.get $1 + local.get $3 local.get $2 - i32.eqz + i32.shr_u + i32.gt_u if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 12352 + i32.const 13952 + i32.const 14 + i32.const 48 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - loop $while-continue|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/util/string/isSpace + call $~lib/rt/itcms/__renew local.set $6 local.get $6 - if - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - f64.const 1 - local.set $7 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else + local.get $3 + i32.add + i32.const 0 local.get $5 - i32.const 43 - i32.eq - end - if - local.get $2 - i32.const 1 + local.get $3 i32.sub - local.tee $2 - i32.eqz + call $~lib/memory/memory.fill + local.get $6 + local.get $4 + i32.ne if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return + local.get $6 + i32.store + local.get $0 + local.get $6 + i32.store offset=4 + local.get $0 + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__link end + local.get $0 local.get $5 - i32.const 45 - i32.eq - if - f64.const -1 - local.set $7 - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 + i32.store offset=8 end + ) + (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/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 + 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 + 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>#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 100000 + i32.lt_u if - local.get $1 - i32.const 2 - i32.lt_s - if (result i32) + 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 - local.get $1 - i32.const 36 - i32.gt_s + 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 1 - drop - f64.const nan:0x8000000000000 - local.set $3 + i32.const 6 local.get $0 - call $~lib/rt/pure/__release - local.get $3 + 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) + (local $7 i32) + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 local.get $1 - i32.const 16 - i32.eq + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 if - local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - end + 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 14508 + local.get $6 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $8 + i32.const 14508 + 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 + i32.const 1 + i32.shl + i32.add + 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 14508 + 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 14508 + 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 $5 + local.get $2 + i32.const 1 + i32.sub + local.set $2 i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $6 - local.get $6 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $6 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $6 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end - end local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 - end + i32.add + local.set $11 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 end - f64.const 0 - local.set $8 - block $while-break|2 - loop $while-continue|2 + ) + (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 - local.tee $6 - i32.const 1 + i32.const 2 i32.sub local.set $2 - local.get $6 - local.set $6 - local.get $6 - if - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - end - end - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $8 - i64.reinterpret_f64 - i64.const 1 - i64.shl - i64.const 2 - i64.sub - i64.const -9007199254740994 - i64.le_u - i32.eqz - if - i32.const 1 - drop - f64.const nan:0x8000000000000 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - br $while-break|2 - end - local.get $8 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $5 - f64.convert_i32_u - f64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 14928 + 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 $7 - local.get $8 - f64.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/string/parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/number/F32.parseInt (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - f32.demote_f64 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/number/F64.parseInt (param $0 i32) (param $1 i32) (result f64) - (local $2 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release local.get $2 + i32.const 1 + i32.and + if + local.get $0 + i32.const 14928 + local.get $1 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + (local $3 i64) + (local $4 i64) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length + local.get $1 local.set $2 local.get $2 - i32.eqz + i32.popcnt + i32.const 1 + i32.eq if - i32.const 0 - drop - i32.const 0 - local.set $3 + i32.const 63 local.get $0 - call $~lib/rt/pure/__release - local.get $3 + 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 $0 + local.get $1 + i64.extend_i32_s + local.set $3 + local.get $3 local.set $4 - local.get $4 - i32.load16_u + i32.const 1 local.set $5 loop $while-continue|0 - local.get $5 - call $~lib/util/string/isSpace - local.set $3 - local.get $3 + local.get $0 + local.get $4 + i64.ge_u + local.set $2 + local.get $2 if + local.get $0 local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - local.get $2 + 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 - local.set $2 + i32.shl + local.set $5 br $while-continue|0 end end - i32.const 1 - local.set $6 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 43 - i32.eq - end - if + loop $while-continue|1 + local.get $0 + i64.const 1 + i64.ge_u + local.set $2 local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz if - i32.const 0 - drop - i32.const 0 - local.set $3 local.get $0 - call $~lib/rt/pure/__release local.get $3 - return - end - local.get $5 - i32.const 45 - i32.eq - if - i32.const -1 - local.set $6 + i64.div_u + local.set $0 + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $while-continue|1 end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 end - local.get $1 + 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 $7 i32) + 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 $1 - 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 0 - drop - i32.const 0 - local.set $3 + 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-continue|0 + local.get $2 + i32.const 1 + i32.sub + local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 16 - i32.eq - if local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 - end - if - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - end + i32.const 1 + i32.shl + i32.add + i32.const 15984 + 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 + local.set $7 + local.get $7 + br_if $do-continue|0 end else - local.get $5 - i32.const 48 - i32.eq - if (result i32) + loop $do-continue|1 local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 + 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 15984 + 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 + local.set $7 + local.get $7 + br_if $do-continue|1 end + end + ) + (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 - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $3 - local.get $3 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $3 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $3 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 - end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 - end + 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 - local.get $1 - i32.eqz + unreachable + else + local.get $0 + i64.const 100000000000000000 + i64.lt_u if - i32.const 10 - local.set $1 + 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 - i32.const 0 - local.set $7 - block $while-break|2 - loop $while-continue|2 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - local.set $3 - local.get $3 - if - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 - else - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 - end - end - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $7 - i32.eqz - if - i32.const 0 - drop - i32.const 0 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - return - end - br $while-break|2 - end - local.get $7 - local.get $1 - i32.mul - local.get $5 - i32.add - local.set $7 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $6 - local.get $7 - i32.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/number/I32.parseInt (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 + unreachable ) - (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i64) - (local $4 i32) + (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 i64) - (local $8 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $2 - i32.eqz - if - i32.const 0 - drop - i64.const 0 + (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 $0 - call $~lib/rt/pure/__release local.get $3 - return - end - local.get $0 - local.set $4 - local.get $4 - i32.load16_u - local.set $5 - loop $while-continue|0 - local.get $5 - call $~lib/util/string/isSpace - local.set $6 - local.get $6 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 14508 + local.get $10 i32.const 2 + i32.shl i32.add - local.tee $4 - i32.load16_u - local.set $5 + i64.load32_u + local.set $12 + i32.const 14508 + 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 14508 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 14508 + 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 - i64.const 1 + local.get $0 + local.get $1 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut + ) + (func $~lib/util/number/genDigits (param $0 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 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 - local.get $5 - i32.const 45 - i32.eq - if (result i32) - i32.const 1 - else - local.get $5 - i32.const 43 - i32.eq - end - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.eqz - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $5 - i32.const 45 - i32.eq - if - i64.const -1 - local.set $7 - end - local.get $4 - i32.const 2 - i32.add - local.tee $4 - i32.load16_u - local.set $5 - end + 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 - if - 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 - if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 16 - i32.eq + 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 $13 + i32.const 0 + i32.gt_s + local.set $15 + local.get $15 if - local.get $2 - i32.const 2 - i32.gt_s - if (result i32) - local.get $5 - i32.const 48 - i32.eq - else + 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 - if (result i32) - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - i32.const 120 - i32.eq - else - i32.const 0 + 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 - local.get $4 - i32.const 4 + global.get $~lib/util/number/_K + local.get $13 i32.add - local.set $4 - local.get $2 + 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 22496 + 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 - local.set $2 - end - end - else - local.get $5 - i32.const 48 - i32.eq - if (result i32) - local.get $2 - i32.const 2 - i32.gt_s - else - i32.const 0 - end - if - block $break|1 - block $case2|1 - block $case1|1 - block $case0|1 - local.get $4 - i32.load16_u offset=2 - i32.const 32 - i32.or - local.set $6 - local.get $6 - i32.const 98 - i32.eq - br_if $case0|1 - local.get $6 - i32.const 111 - i32.eq - br_if $case1|1 - local.get $6 - i32.const 120 - i32.eq - br_if $case2|1 - br $break|1 + 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 - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 + else + i32.const 0 + end + local.set $26 + local.get $26 + if + local.get $25 + i32.const 1 i32.sub - local.set $2 - i32.const 2 - local.set $1 - br $break|1 + local.set $25 + local.get $21 + local.get $20 + i64.add + local.set $21 + br $while-continue|3 end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 8 - local.set $1 - br $break|1 end - local.get $4 - i32.const 4 - i32.add - local.set $4 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 16 - local.set $1 - br $break|1 + local.get $24 + local.get $25 + i32.store16 + local.get $14 + return end - end - local.get $1 - i32.eqz - if - i32.const 10 - local.set $1 + br $while-continue|0 end end - i64.const 0 - local.set $8 - block $while-break|2 - loop $while-continue|2 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $6 - local.set $6 - local.get $6 + 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 $4 - i32.load16_u - local.set $5 - local.get $5 + 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 - i32.sub - i32.const 10 - i32.lt_u - if - local.get $5 - i32.const 48 - i32.sub - local.set $5 - else - local.get $5 - i32.const 65 - i32.sub - i32.const 90 - i32.const 65 - i32.sub - i32.le_u - if - local.get $5 - i32.const 65 - i32.const 10 - i32.sub - i32.sub - local.set $5 + 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 22496 + 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 - local.get $5 - i32.const 97 - i32.sub - i32.const 122 - i32.const 97 - i32.sub - i32.le_u - if - local.get $5 - i32.const 97 - i32.const 10 - i32.sub - i32.sub - local.set $5 + 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 - end - local.get $5 - local.get $1 - i32.ge_u - if - local.get $8 - i64.const 0 - i64.ne - i32.eqz + local.set $23 + local.get $23 if - i32.const 0 - drop - i64.const 0 - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - return + 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 - br $while-break|2 end - local.get $8 - local.get $1 - i64.extend_i32_s - i64.mul - local.get $5 - i64.extend_i32_u - i64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $while-continue|2 + local.get $25 + local.get $24 + i32.store16 + local.get $14 + return end + br $while-continue|4 end end - local.get $7 - local.get $8 - i64.mul - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/number/I64.parseInt (param $0 i32) (param $1 i32) (result i64) - (local $2 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - local.get $1 - call $~lib/util/string/strtol - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 + unreachable ) - (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - i32.const 1 - local.set $2 - i32.const 0 - i32.const 1 - i32.lt_s - drop - local.get $1 - i32.const 0 - i32.le_s + (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 - i32.const -1 - i32.eq - if - i32.const -1 - i32.const 1 - local.get $1 - i32.const 1 - i32.and - select - return - end local.get $1 - i32.const 0 - i32.eq - local.get $0 i32.const 1 - i32.eq + 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 - i32.const 1 - i32.eq - if - local.get $0 - return - else - local.get $1 - i32.const 2 - i32.eq - if - local.get $0 - local.get $0 - i32.mul - return - else - local.get $1 - i32.const 32 - i32.lt_s - if - i32.const 32 - local.get $1 - i32.clz - i32.sub - local.set $3 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - block $case0|0 - local.get $3 - local.set $4 - local.get $4 - i32.const 5 - i32.eq - br_if $case0|0 - local.get $4 - i32.const 4 - i32.eq - br_if $case1|0 - local.get $4 - i32.const 3 - i32.eq - br_if $case2|0 - local.get $4 - i32.const 2 - i32.eq - br_if $case3|0 - local.get $4 - i32.const 1 - i32.eq - br_if $case4|0 - br $break|0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - end - local.get $1 - i32.const 1 - i32.and - if - local.get $2 - local.get $0 - i32.mul - local.set $2 - end - end - local.get $2 - return - end - end - end - end - loop $while-continue|1 - local.get $1 - local.set $3 - local.get $3 - if - local.get $1 - i32.const 1 - i32.and + 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 $2 local.get $0 - i32.mul - local.set $2 + 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 - local.get $1 - i32.const 1 - i32.shr_u - local.set $1 - local.get $0 - local.get $0 - i32.mul - local.set $0 - br $while-continue|1 end - end - local.get $2 - ) - (func $~lib/math/NativeMath.scalbn (param $0 f64) (param $1 i32) (result f64) - (local $2 f64) - (local $3 i32) - (local $4 i32) - local.get $0 - local.set $2 - local.get $1 - i32.const 1023 - i32.gt_s - if - local.get $2 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $2 - local.get $1 - i32.const 1023 - i32.sub - local.set $1 - local.get $1 - i32.const 1023 + 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 - local.get $2 - f64.const 8988465674311579538646525e283 - f64.mul - local.set $2 - local.get $1 - i32.const 1023 - i32.sub - local.tee $3 - i32.const 1023 - local.tee $4 + if (result i32) local.get $3 - local.get $4 - i32.lt_s - select - local.set $1 + i32.const 21 + i32.le_s + else + i32.const 0 end - else - local.get $1 - i32.const -1022 - i32.lt_s 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 - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $2 - local.get $1 - i32.const 1022 - i32.const 53 i32.sub - i32.add - local.set $1 - local.get $1 - i32.const -1022 - i32.lt_s + 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 - local.get $2 - f64.const 2.2250738585072014e-308 - f64.const 9007199254740992 - f64.mul - f64.mul - local.set $2 - local.get $1 - i32.const 1022 - i32.add - i32.const 53 + i32.const 2 + local.get $3 i32.sub - local.tee $4 - i32.const -1022 - local.tee $3 + local.set $4 + local.get $0 local.get $4 - local.get $3 - i32.gt_s - select - local.set $1 + 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 - local.get $2 - i64.const 1023 - local.get $1 - i64.extend_i32_s - i64.add - i64.const 52 - i64.shl - f64.reinterpret_i64 - f64.mul + unreachable ) - (func $~lib/util/string/strtod (param $0 i32) (result f64) - (local $1 i32) - (local $2 f64) + (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 i32) + (local $6 i64) (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $8 i64) + (local $9 i64) (local $10 i32) (local $11 i64) - (local $12 i32) + (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) @@ -5897,2300 +6305,830 @@ (local $22 i64) (local $23 i64) (local $24 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/string/String#get:length - local.set $1 + (local $25 i64) + (local $26 i32) + (local $27 i64) + (local $28 i32) local.get $1 - i32.eqz + f64.const 0 + f64.lt + local.set $2 + local.get $2 if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - local.set $3 - local.get $3 - i32.load16_u - local.set $4 - f64.const 1 - local.set $5 - loop $while-continue|0 local.get $1 - if (result i32) - local.get $4 - call $~lib/util/string/isSpace - else - i32.const 0 - end - local.set $6 - local.get $6 - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|0 - end - end - local.get $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 + f64.neg + local.set $1 local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.const 45 - i32.eq - if - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - f64.const -1 - local.set $5 - else - local.get $4 - i32.const 43 - i32.eq - if - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - end + i32.const 45 + i32.store16 end local.get $1 - i32.const 8 - i32.ge_s - if (result i32) - local.get $4 - i32.const 73 - i32.eq - else - i32.const 0 - end - if - local.get $3 - i64.load - i64.const 29555310648492105 - i64.eq - if (result i32) - local.get $3 - i64.load offset=8 - i64.const 34058970405077102 - i64.eq - else - i32.const 0 - end - if - f64.const inf - local.get $5 - f64.mul - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $4 - i32.const 46 - i32.ne - if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $3 + 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 - loop $while-continue|1 - local.get $4 - i32.const 48 - i32.eq - local.set $6 - local.get $6 - if - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - br $while-continue|1 - end - end - local.get $1 - i32.const 0 - i32.le_s - if - f64.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 0 + 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 - i32.const 0 - local.set $10 - i64.const 0 + 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 $4 - i32.const 46 - i32.eq - if - local.get $7 - local.get $3 - i32.sub - i32.eqz - local.set $6 - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $1 - i32.eqz - if (result i32) - local.get $6 - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 1 - local.set $8 - loop $for-loop|2 - local.get $3 - i32.load16_u - local.tee $4 - i32.const 48 - i32.eq - local.set $12 - local.get $12 - if - local.get $1 - i32.const 1 - i32.sub - local.set $1 - local.get $10 - i32.const 1 - i32.sub - local.set $10 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $for-loop|2 - end - end - local.get $1 - i32.const 0 - i32.le_s - if - f64.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $10 - i32.eqz - if (result i32) - local.get $6 - else - i32.const 0 - end - if (result i32) - local.get $4 - i32.const 48 - i32.sub - i32.const 10 - i32.ge_u - else - i32.const 0 - end - if - f64.const nan:0x8000000000000 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - return - end - end - local.get $4 - i32.const 48 + 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 $6 - block $for-break3 - loop $for-loop|3 - local.get $6 - i32.const 10 - i32.lt_u - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 46 - i32.eq - if (result i32) - local.get $8 - i32.eqz - else - i32.const 0 - end - end - local.set $12 - local.get $12 - if - local.get $6 - i32.const 10 - i32.lt_u - if - local.get $9 - i32.const 19 - i32.lt_s - if (result i64) - i64.const 10 - local.get $11 - i64.mul - local.get $6 - i64.extend_i32_u - i64.add - else - local.get $11 - local.get $6 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or - end - local.set $11 - local.get $9 - i32.const 1 - i32.add - local.set $9 - else - local.get $9 - local.set $10 - i32.const 1 - local.set $8 - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - br $for-break3 - end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 48 - i32.sub - local.set $6 - br $for-loop|3 - end - end - end - local.get $8 - i32.eqz - if - local.get $9 - local.set $10 - end - block $~lib/util/string/scientific|inlined.0 (result f64) - local.get $11 - local.set $18 - local.get $10 - i32.const 19 - local.tee $12 - local.get $9 - local.tee $6 - local.get $12 - local.get $6 - i32.lt_s - select - i32.sub - block $~lib/util/string/parseExp|inlined.0 (result i32) - local.get $3 - local.set $12 - local.get $1 - local.set $6 - i32.const 1 - local.set $13 - i32.const 0 - local.set $14 - local.get $12 - i32.load16_u - local.set $15 - local.get $15 - i32.const 32 - i32.or - i32.const 101 - i32.ne - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $12 - i32.const 2 - i32.add - local.tee $12 - i32.load16_u - local.set $15 - local.get $15 - i32.const 45 - i32.eq - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $12 - i32.const 2 - i32.add - local.tee $12 - i32.load16_u - local.set $15 - i32.const -1 - local.set $13 - else - local.get $15 - i32.const 43 - i32.eq - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $12 - i32.const 2 - i32.add - local.tee $12 - i32.load16_u - local.set $15 - end - end - loop $while-continue|4 - local.get $15 - i32.const 48 - i32.eq - local.set $16 - local.get $16 - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.eqz - if - i32.const 0 - br $~lib/util/string/parseExp|inlined.0 - end - local.get $12 - i32.const 2 - i32.add - local.tee $12 - i32.load16_u - local.set $15 - br $while-continue|4 - end - end - local.get $15 - i32.const 48 - i32.sub - local.set $16 - loop $for-loop|5 - local.get $6 - if (result i32) - local.get $16 - i32.const 10 - i32.lt_u - else - i32.const 0 - end - local.set $17 - local.get $17 - if - local.get $14 - i32.const 3200 - i32.ge_s - if - local.get $13 - i32.const 3200 - i32.mul - br $~lib/util/string/parseExp|inlined.0 - end - i32.const 10 - local.get $14 - i32.mul - local.get $16 - i32.add - local.set $14 - local.get $12 - i32.const 2 - i32.add - local.tee $12 - i32.load16_u - local.set $15 - local.get $6 - i32.const 1 - i32.sub - local.set $6 - local.get $15 - i32.const 48 - i32.sub - local.set $16 - br $for-loop|5 - end - end - local.get $13 - local.get $14 - i32.mul - end - i32.add - local.set $17 - local.get $18 - i64.const 0 - i64.ne - i32.eqz - if (result i32) - i32.const 1 - else - local.get $17 - i32.const -342 - i32.lt_s - end - if - f64.const 0 - br $~lib/util/string/scientific|inlined.0 - end - local.get $17 - i32.const 308 - i32.gt_s - if - f64.const inf - br $~lib/util/string/scientific|inlined.0 - end - local.get $18 - f64.convert_i64_u - local.set $2 - local.get $17 - i32.eqz - if - local.get $2 - br $~lib/util/string/scientific|inlined.0 - end - local.get $17 - i32.const 22 - i32.gt_s - if (result i32) - local.get $17 - i32.const 22 - i32.const 15 - i32.add - i32.le_s - else - i32.const 0 - end - if - local.get $2 - local.get $17 - i32.const 22 - i32.sub - local.set $16 - i32.const 2832 - local.get $16 - i32.const 3 - i32.shl - i32.add - f64.load - f64.mul - local.set $2 - i32.const 22 - local.set $17 - end - local.get $18 - i64.const 9007199254740991 - i64.le_u - if (result i32) - local.get $17 - local.tee $16 - i32.const 31 - i32.shr_s - local.tee $15 - local.get $16 - i32.add - local.get $15 - i32.xor - i32.const 22 - i32.le_s - else - i32.const 0 - end - if - local.get $17 - i32.const 0 - i32.gt_s - if - local.get $2 - local.get $17 - local.set $6 - i32.const 2832 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - f64.mul - br $~lib/util/string/scientific|inlined.0 - end - local.get $2 - i32.const 0 - local.get $17 - i32.sub - local.set $12 - i32.const 2832 - local.get $12 - i32.const 3 - i32.shl - i32.add - f64.load - f64.div - br $~lib/util/string/scientific|inlined.0 - else - local.get $17 - i32.const 0 - i32.lt_s - if - local.get $18 - local.set $19 - local.get $17 - local.set $13 - local.get $19 - i64.clz - local.set $20 - local.get $19 - local.get $20 - i64.shl - local.set $19 - local.get $13 - i64.extend_i32_s - local.get $20 - i64.sub - local.set $20 - loop $for-loop|6 - local.get $13 - i32.const -14 - i32.le_s - local.set $12 - local.get $12 - if - local.get $19 - i64.const 6103515625 - i64.div_u - local.set $21 - local.get $19 - i64.const 6103515625 - i64.rem_u - local.set $22 - local.get $21 - i64.clz - local.set $23 - local.get $21 - local.get $23 - i64.shl - f64.const 0.00004294967296 - local.get $22 - local.get $23 - i64.const 18 - i64.sub - i64.shl - f64.convert_i64_u - f64.mul - f64.nearest - i64.trunc_f64_u - i64.add - local.set $19 - local.get $20 - local.get $23 - i64.sub - local.set $20 - local.get $13 - i32.const 14 - i32.add - local.set $13 - br $for-loop|6 - end - end - i32.const 5 - i32.const 0 - local.get $13 - i32.sub - call $~lib/math/ipow32 - i64.extend_i32_s - local.set $23 - local.get $19 - local.get $23 - i64.div_u - local.set $22 - local.get $19 - local.get $23 - i64.rem_u - local.set $21 - local.get $22 - i64.clz - local.set $24 - local.get $22 - local.get $24 - i64.shl - local.get $21 - f64.convert_i64_u - i64.reinterpret_f64 - local.get $24 - i64.const 52 - i64.shl - i64.add - f64.reinterpret_i64 - local.get $23 - f64.convert_i64_u - f64.div - i64.trunc_f64_u - i64.add - local.set $19 - local.get $20 - local.get $24 - i64.sub - local.set $20 - local.get $19 - f64.convert_i64_u - local.get $20 - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - br $~lib/util/string/scientific|inlined.0 - else - local.get $18 - local.set $19 - local.get $17 - local.set $14 - local.get $19 - i64.ctz - local.set $24 - local.get $19 - local.get $24 - i64.shr_u - local.set $19 - local.get $24 - local.get $14 - i64.extend_i32_s - i64.add - local.set $24 - local.get $24 - global.set $~lib/util/string/__fixmulShift - loop $for-loop|7 - local.get $14 - i32.const 13 - i32.ge_s - local.set $13 - local.get $13 - if - local.get $19 - local.set $20 - i32.const 1220703125 - local.set $15 - local.get $20 - i64.const 4294967295 - i64.and - local.get $15 - i64.extend_i32_u - i64.mul - local.set $21 - local.get $20 - i64.const 32 - i64.shr_u - local.get $15 - i64.extend_i32_u - i64.mul - local.get $21 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $22 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $12 - local.get $12 - i32.clz - local.set $6 - i64.const 32 - local.get $6 - i64.extend_i32_u - i64.sub - local.set $23 - global.get $~lib/util/string/__fixmulShift - local.get $23 - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $22 - local.get $6 - i64.extend_i32_u - i64.shl - local.get $21 - i64.const 4294967295 - i64.and - local.get $23 - i64.shr_u - i64.or - local.get $21 - local.get $6 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - i64.add - local.set $19 - local.get $14 - i32.const 13 - i32.sub - local.set $14 - br $for-loop|7 - end - end - local.get $19 - local.set $20 - i32.const 5 - local.get $14 - call $~lib/math/ipow32 - local.set $16 - local.get $20 - i64.const 4294967295 - i64.and - local.get $16 - i64.extend_i32_u - i64.mul - local.set $23 - local.get $20 - i64.const 32 - i64.shr_u - local.get $16 - i64.extend_i32_u - i64.mul - local.get $23 - i64.const 32 - i64.shr_u - i64.add - local.set $22 - local.get $22 - i64.const 32 - i64.shr_u - i32.wrap_i64 - local.set $13 - local.get $13 - i32.clz - local.set $6 - i64.const 32 - local.get $6 - i64.extend_i32_u - i64.sub - local.set $21 - global.get $~lib/util/string/__fixmulShift - local.get $21 - i64.add - global.set $~lib/util/string/__fixmulShift - local.get $22 - local.get $6 - i64.extend_i32_u - i64.shl - local.get $23 - i64.const 4294967295 - i64.and - local.get $21 - i64.shr_u - i64.or - local.get $23 - local.get $6 - i64.extend_i32_u - i64.shl - i64.const 31 - i64.shr_u - i64.const 1 - i64.and - i64.add - local.set $19 - global.get $~lib/util/string/__fixmulShift - local.set $24 - local.get $19 - f64.convert_i64_u - local.get $24 - i32.wrap_i64 - call $~lib/math/NativeMath.scalbn - br $~lib/util/string/scientific|inlined.0 - end - unreachable - end - unreachable - end - local.get $5 - f64.copysign - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/parseFloat (param $0 i32) (result f64) - (local $1 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/util/string/strtod - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - 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) - (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 704 - 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 304 - 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 704 - 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 $~lib/string/String.__ne (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 - local.get $1 - call $~lib/string/String.__eq - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__gt (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.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - local.tee $2 - local.get $4 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $6 - local.get $6 - if (result i32) - local.get $6 - i32.const 0 - i32.gt_s - else - local.get $3 - local.get $4 - i32.gt_s - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__lt (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.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - 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 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $1 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - i32.eqz - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - call $~lib/string/String#get:length - local.set $4 - local.get $4 - i32.eqz - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $4 - local.tee $2 - local.get $3 - local.tee $5 - local.get $2 - local.get $5 - i32.lt_s - select - call $~lib/util/string/compareImpl - local.set $6 - local.get $6 - if (result i32) - local.get $6 - i32.const 0 - i32.lt_s - else - local.get $4 - local.get $3 - i32.lt_s - end - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__gte (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 - local.get $1 - call $~lib/string/String.__lt - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String.__lte (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 - local.get $1 - call $~lib/string/String.__gt - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/string/String#repeat (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/string/String#get:length - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $2 - i64.extend_i32_s - local.get $1 - i64.extend_i32_s - i64.mul - i64.const 1 - i64.const 28 - i64.shl - i64.gt_u - end - if - i32.const 12144 - i32.const 592 - i32.const 324 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $2 - i32.eqz - end - if - i32.const 304 - call $~lib/rt/pure/__retain - return - end - local.get $1 - i32.const 1 - i32.eq - if - local.get $0 - call $~lib/rt/pure/__retain - return - end - local.get $2 - local.get $1 - i32.mul - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - local.get $1 - call $~lib/memory/memory.repeat - local.get $3 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.le_u - if - local.get $3 - local.get $4 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/string/String#indexOf - local.set $6 - local.get $6 - i32.const -1 - i32.xor - if - local.get $2 - call $~lib/string/String#get:length - local.set $5 - local.get $3 - local.get $4 - i32.sub - local.set $3 - local.get $3 - local.get $5 - i32.add - local.set $7 - local.get $7 - if - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.get $6 - 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 $6 - local.get $5 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - local.get $4 - i32.add - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - return - end - end - local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 4 + 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 $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 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load + local.set $13 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 + local.get $11 + i64.const 4503599627370496 + i64.eq 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 + 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.get $6 - i32.load + local.set $15 + local.get $15 i32.const 3 - i32.const -1 - i32.xor - i32.and + 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 21624 + local.get $14 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 22320 + 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 - 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.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 $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 400 - i32.const 176 - 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.const 1 + i32.shl i32.add - call $~lib/rt/tlsf/__realloc - local.set $2 + local.get $28 local.get $2 - i32.const 4 i32.sub - local.get $1 - i32.store offset=16 + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.set $28 + local.get $28 local.get $2 - i32.const 16 i32.add ) - (func $~lib/string/String#replaceAll (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 $14 i32) - (local $15 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $1 - call $~lib/string/String#get:length - local.set $4 - local.get $3 - local.get $4 - i32.le_u - if - local.get $3 - local.get $4 - i32.lt_u - if (result i32) - local.get $0 - call $~lib/rt/pure/__retain - else - local.get $2 - local.get $0 - local.get $1 - local.get $0 - call $~lib/string/String.__eq - select - call $~lib/rt/pure/__retain - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - local.get $4 - i32.eqz - if - local.get $6 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $3 - local.get $3 - i32.const 1 - i32.add - local.get $6 - i32.mul - i32.add - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $5 - local.get $5 - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - local.set $7 - i32.const 0 - local.set $8 - loop $for-loop|0 - local.get $8 - local.get $3 - i32.lt_u - local.set $9 - local.get $9 - if - local.get $5 - local.get $7 - local.tee $10 - i32.const 1 - i32.add - local.set $7 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $8 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $5 - local.get $7 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $7 - local.get $6 - i32.add - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - br $for-loop|0 - end - end - local.get $5 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - return - end + (func $~lib/rt/itcms/__collect + (local $0 i32) i32.const 0 - local.set $11 + drop + global.get $~lib/rt/itcms/state i32.const 0 - local.set $12 - local.get $4 - local.get $6 - i32.eq + i32.gt_s if - local.get $3 - i32.const 1 - i32.shl - local.set $7 - local.get $7 - i32.const 1 - call $~lib/rt/pure/__new - local.set $5 - local.get $5 - local.get $0 - local.get $7 - call $~lib/memory/memory.copy - loop $while-continue|1 + loop $while-continue|0 + global.get $~lib/rt/itcms/state + i32.const 0 + i32.ne + local.set $0 local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $12 - i32.const -1 - i32.xor - local.set $8 - local.get $8 if - local.get $5 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $12 - local.get $4 - i32.add - local.set $11 - br $while-continue|1 + call $~lib/rt/itcms/step + drop + br $while-continue|0 end end - local.get $5 - call $~lib/rt/pure/__retain - local.set $8 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - return 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold i32.const 0 - local.set $13 + drop i32.const 0 - local.set $14 - local.get $3 - local.set $15 - loop $while-continue|2 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $std/string/getString (result i32) + global.get $std/string/str + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/string/str + local.tee $1 + if + local.get $1 local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/string/nullStr + local.tee $1 + if local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $12 - i32.const -1 - i32.xor - local.set $5 - local.get $5 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 12352 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 14000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 14928 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 15984 + 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<~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 $13 - i32.eqz - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $13 - end - local.get $12 - local.get $11 - i32.sub - local.set $7 - local.get $14 - local.get $7 - i32.add - local.get $6 - i32.add - local.get $15 - i32.gt_u + local.get $2 + i32.load + local.set $5 + local.get $5 if - local.get $15 - i32.const 1 - i32.shl - local.set $15 - local.get $13 - local.get $15 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $13 + local.get $5 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $11 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $14 - local.get $7 - i32.add - local.set $14 - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $14 - local.get $6 - i32.add - local.set $14 - local.get $12 - local.get $4 + i32.const 4 i32.add - local.set $11 - br $while-continue|2 + local.set $2 + br $while-continue|0 end end - local.get $14 - if - local.get $3 - local.get $11 - i32.sub - local.set $5 - local.get $14 - local.get $5 - i32.add - local.get $15 - i32.gt_u - if - local.get $15 - i32.const 1 - i32.shl - local.set $15 - local.get $13 - local.get $15 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $13 - end - local.get $5 - if - local.get $13 - local.get $14 - i32.const 1 - i32.shl - i32.add + 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 $~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/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 $11 - i32.const 1 - i32.shl - i32.add - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - end - local.get $5 - local.get $14 - i32.add - local.set $5 - local.get $15 - local.get $5 - i32.gt_u - if - local.get $13 - local.get $5 - i32.const 1 - i32.shl - call $~lib/rt/pure/__renew - local.set $13 + local.get $1 + call $~lib/array/Array<~lib/string/String>~visit + return end - local.get $13 - call $~lib/rt/pure/__retain - local.set $8 + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/array/Array~visit return end - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 + unreachable ) - (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~start + call $start:std/string + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 40848 + i32.const 40896 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + 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 $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 - call $~lib/string/String#get:length - local.set $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 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 + global.set $~lib/memory/__stack_pointer local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + return end - local.set $1 - local.get $2 + local.get $0 i32.const 0 - i32.lt_s + i32.eq 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 + i32.const 1 else - local.get $2 - local.tee $5 + local.get $1 + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - local.tee $4 - local.get $5 - local.get $4 - i32.lt_s - select + return end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length local.set $2 local.get $2 local.get $1 - i32.sub local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.le_s + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne if - i32.const 304 - call $~lib/rt/pure/__retain + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 return end - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $6 - local.get $6 local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $6 - call $~lib/rt/pure/__retain - ) - (func $~lib/string/String#substr (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.store + local.get $3 + i32.const 0 local.get $1 local.set $3 - local.get $2 - local.set $4 - local.get $0 - call $~lib/string/String#get:length - local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.const 0 - i32.lt_s - if - 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 - local.set $3 - end - local.get $4 - local.tee $7 - i32.const 0 - local.tee $6 - local.get $7 - local.get $6 - i32.gt_s - select - local.tee $6 - local.get $5 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 + ) + (func $~lib/string/String#charCodeAt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 - local.get $8 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.le_s + i32.store + local.get $1 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.ge_u if - i32.const 304 - call $~lib/rt/pure/__retain + i32.const -1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 return end - local.get $8 + local.get $0 + local.get $1 i32.const 1 - call $~lib/rt/pure/__new - local.set $9 - local.get $9 + i32.shl + i32.add + i32.load16_u + 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/string/String.__not (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 - local.get $3 - i32.const 1 - i32.shl + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/string/String#get:length + i32.eqz + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $8 - call $~lib/memory/memory.copy - local.get $9 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#startsWith (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 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 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 912 + local.tee $1 + i32.store + end local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/string/String#get:length local.set $3 - local.get $1 + local.get $2 local.tee $4 i32.const 0 local.tee $5 @@ -8206,4743 +7144,7838 @@ i32.lt_s select local.set $6 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/string/String#get:length + local.set $7 + local.get $7 + local.get $6 + i32.add + local.get $3 + i32.gt_s + if + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $6 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 0 + local.get $7 + call $~lib/util/string/compareImpl + i32.eqz + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $~lib/string/String#endsWith (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 0 + i32.eq + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end local.get $2 - local.tee $4 + local.tee $3 i32.const 0 - local.tee $5 + local.tee $4 + local.get $3 local.get $4 - local.get $5 i32.gt_s select - local.tee $5 - local.get $3 local.tee $4 - local.get $5 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.tee $3 local.get $4 + local.get $3 i32.lt_s select + local.set $2 + local.get $1 local.set $7 - local.get $6 - local.tee $4 + global.get $~lib/memory/__stack_pointer local.get $7 - local.tee $5 - local.get $4 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $5 + local.get $2 local.get $5 + i32.sub + local.set $6 + local.get $6 + i32.const 0 i32.lt_s - select - i32.const 1 - i32.shl - local.set $8 + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 local.get $6 - local.tee $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.tee $4 + i32.store offset=4 + local.get $7 + i32.const 0 local.get $5 - local.get $4 - i32.gt_s - select - i32.const 1 - i32.shl - local.set $9 - local.get $9 - local.get $8 + call $~lib/util/string/compareImpl + i32.eqz + 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/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) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $10 - local.get $10 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $3 + local.get $3 i32.eqz if - i32.const 304 - call $~lib/rt/pure/__retain + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 return end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $4 + local.get $4 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 - call $~lib/rt/pure/__retain + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 return end - local.get $10 - i32.const 1 - call $~lib/rt/pure/__new - local.set $11 - local.get $11 - local.get $0 - local.get $8 + local.get $2 + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $6 + local.get $4 + local.tee $5 + local.get $6 + local.get $5 + i32.lt_s + select + local.set $7 + local.get $4 + local.get $3 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $7 + local.get $4 + i32.le_s + local.set $6 + local.get $6 + if + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $7 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/string/String#includes (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 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/rt/pure/__new local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 local.get $2 - if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy - end + call $~lib/string/String#indexOf + i32.const -1 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $~lib/string/String#padStart (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.set $4 + (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.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 local.get $1 + i32.const 1 + i32.shl + local.set $4 + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 i32.shl local.set $5 - local.get $5 - i32.const 0 + local.get $4 local.get $3 - call $~lib/rt/__newBuffer - local.set $6 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $5 + i32.eqz + end + if + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store + local.get $3 + i32.sub + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $4 - local.get $6 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 i32.store offset=4 - local.get $4 + local.get $6 local.get $5 - i32.store offset=8 - local.get $4 + i32.gt_u + if + local.get $6 + i32.const 2 + i32.sub + local.get $5 + i32.div_u + local.set $8 + local.get $8 + local.get $5 + i32.mul + local.set $9 + local.get $6 + local.get $9 + i32.sub + local.set $10 + local.get $7 + local.get $2 + local.get $5 + local.get $8 + call $~lib/memory/memory.repeat + local.get $7 + local.get $9 + i32.add + local.get $2 + local.get $10 + call $~lib/memory/memory.copy + else + local.get $7 + local.get $2 + local.get $6 + call $~lib/memory/memory.copy + end + local.get $7 + local.get $6 + i32.add local.get $0 - i32.store offset=12 - local.get $4 + local.get $3 + call $~lib/memory/memory.copy + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) + (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) (local $8 i32) - (local $9 i64) + (local $9 i32) (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 $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + local.get $1 + i32.const 1 + i32.shl + local.set $4 + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $5 + local.get $4 + local.get $3 + i32.lt_u + if (result i32) + i32.const 1 + else local.get $5 - local.get $4 - i32.store8 offset=3 - local.get $6 - local.get $4 - i32.store8 - local.get $3 + i32.eqz + end + if + local.get $0 + local.set $11 + global.get $~lib/memory/__stack_pointer 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 + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $4 + local.get $3 + i32.sub + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + local.get $7 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $6 + local.get $5 + i32.gt_u + if + local.get $6 + i32.const 2 i32.sub - local.set $3 - local.get $3 - i32.const -4 - i32.and - local.set $3 - i32.const -1 - i32.const 255 + local.get $5 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 + i32.mul + local.set $9 local.get $6 - local.get $8 - i32.store offset=20 + local.get $9 + i32.sub + local.set $10 + local.get $7 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 $2 local.get $5 + local.get $8 + call $~lib/memory/memory.repeat local.get $7 - i32.add - local.set $5 local.get $3 + i32.add + local.get $9 + i32.add + local.get $2 + local.get $10 + call $~lib/memory/memory.copy + else 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 + local.get $3 + i32.add + local.get $2 + local.get $6 + call $~lib/memory/memory.copy end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $~lib/array/ensureSize (param $0 i32) (param $1 i32) (param $2 i32) + (func $~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) - local.get $0 - i32.load offset=8 - local.set $3 + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $3 local.get $3 - local.get $2 - i32.shr_u - i32.gt_u + i32.eqz if - local.get $1 - i32.const 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 12144 - i32.const 13744 - 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 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $4 + local.get $4 + i32.eqz + if + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $2 + local.tee $5 + i32.const 0 + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.tee $6 + local.get $4 + local.get $3 + i32.sub + local.tee $5 + local.get $6 + local.get $5 + i32.lt_s + select + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.get $5 - local.get $3 - i32.sub - call $~lib/memory/memory.fill + i32.ge_s + local.set $6 local.get $6 - local.get $4 - i32.ne if local.get $0 - local.get $6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 i32.store - local.get $0 - local.get $6 + local.get $8 + local.get $7 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 i32.store offset=4 + local.get $8 + i32.const 0 + local.get $3 + call $~lib/util/string/compareImpl + i32.eqz + if + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - local.get $0 - local.get $5 - i32.store offset=8 end + i32.const -1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/array/Array<~lib/string/String>#push (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#localeCompare (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store 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#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end - local.get $1 - i32.const 0 i32.eq if - i32.const 1 - i32.const 2 - i32.const 3 i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 - local.set $4 - local.get $4 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $3 local.set $4 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $4 return end local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/String#get:length - local.set $5 + local.set $2 local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/String#get:length - local.set $6 + local.set $3 + local.get $3 local.get $2 - i32.const 0 - i32.lt_s - if - global.get $~lib/builtins/i32.MAX_VALUE - local.set $2 - end - local.get $6 - i32.eqz + i32.ne if - local.get $5 - i32.eqz - if - i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $5 - local.tee $3 + i32.const 1 + i32.const -1 local.get $2 - local.tee $4 local.get $3 - local.get $4 - i32.lt_s + i32.gt_s select - local.set $5 - local.get $5 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $3 - local.get $3 - i32.load offset=4 local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $3 + i32.eqz + if i32.const 0 - local.set $7 - loop $for-loop|0 - local.get $7 - local.get $5 - i32.lt_s - local.set $8 - local.get $8 - if - i32.const 2 - i32.const 1 - call $~lib/rt/pure/__new - local.set $9 - local.get $9 - local.get $0 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $4 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.get $9 - i32.store - i32.const 1 - drop - local.get $9 - call $~lib/rt/pure/__retain - drop - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 return - else - local.get $5 - i32.eqz - if - i32.const 1 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - i32.load offset=4 - i32.const 304 - i32.store - local.get $4 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - return - end end + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - i32.const 2 - i32.const 3 - i32.const 0 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.set $10 - i32.const 0 - local.set $11 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - local.set $12 + local.get $3 + call $~lib/util/string/compareImpl + 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/string/String#trimStart (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 + i64.const 0 + i64.store + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $1 i32.const 0 - local.set $13 - loop $while-continue|1 - local.get $0 + local.set $2 + loop $while-continue|0 + local.get $2 local.get $1 - local.get $12 - call $~lib/string/String#indexOf - local.tee $11 - i32.const -1 - i32.xor - local.set $4 - local.get $4 - if - local.get $11 - local.get $12 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $0 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $3 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $10 - i32.const 304 - call $~lib/array/Array<~lib/string/String>#push - drop - end - local.get $13 - i32.const 1 + i32.lt_u + if (result i32) + local.get $0 + local.get $2 i32.add - local.tee $13 + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if local.get $2 - i32.eq - if - local.get $10 - local.set $7 - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - return - end - local.get $11 - local.get $6 + i32.const 2 i32.add - local.set $12 - br $while-continue|1 + local.set $2 + br $while-continue|0 end end - local.get $12 + local.get $2 i32.eqz if - local.get $10 local.get $0 - call $~lib/array/Array<~lib/string/String>#push - drop - local.get $10 - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 return end - local.get $5 - local.get $12 + local.get $1 + local.get $2 i32.sub - local.set $14 - local.get $14 - i32.const 0 - i32.gt_s + local.set $1 + local.get $1 + i32.eqz if - local.get $14 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $4 - local.get $4 - local.get $0 - local.get $12 - i32.const 1 - i32.shl + i32.const 240 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $14 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $4 - call $~lib/array/Array<~lib/string/String>#push - drop - else - local.get $10 - i32.const 304 - call $~lib/array/Array<~lib/string/String>#push - drop + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $2 + i32.add + local.get $1 + call $~lib/memory/memory.copy + local.get $4 + 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/string/String#trimEnd (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 + i64.const 0 + i64.store + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $1 + local.get $1 + local.set $2 + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $0 + local.get $2 + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $2 + i32.eqz + if + i32.const 240 + 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 $10 - local.set $4 + local.get $2 local.get $1 - call $~lib/rt/pure/__release + i32.eq + if + local.get $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 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 local.get $4 - ) - (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>#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.get $2 + call $~lib/memory/memory.copy + local.get $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/array/Array<~lib/string/String>#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/string/String#trim (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 13792 - i32.const 13744 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + local.set $1 local.get $1 - call $~lib/array/Array<~lib/string/String>#__uget - local.set $2 i32.const 1 - drop - i32.const 0 - i32.eqz - drop - local.get $2 - i32.eqz - if - i32.const 13856 - i32.const 13744 - i32.const 108 - i32.const 40 - call $~lib/builtins/abort - unreachable - end - local.get $2 - ) - (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 + i32.shl + local.set $2 + loop $while-continue|0 + local.get $2 + if (result i32) local.get $0 - i32.const 10 - i32.ge_u + local.get $2 i32.add - return + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace 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 + i32.const 0 end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u + local.set $3 + local.get $3 if - i32.const 6 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const 0 + local.set $4 + loop $while-continue|1 + local.get $4 + local.get $2 + i32.lt_u + if (result i32) local.get $0 - i32.const 1000000 - i32.ge_u + local.get $4 i32.add - return + i32.load16_u + call $~lib/util/string/isSpace 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.const 0 + end + local.set $3 + local.get $3 + if + local.get $4 + i32.const 2 i32.add - return + local.set $4 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + br $while-continue|1 end - unreachable end - unreachable + local.get $2 + i32.eqz + if + i32.const 240 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $4 + i32.eqz + if (result i32) + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.eq + else + i32.const 0 + end + if + 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 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=4 + local.get $5 + local.get $0 + local.get $4 + i32.add + local.get $2 + call $~lib/memory/memory.copy + local.get $5 + 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/util/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) + (local $6 f64) + (local $7 f64) + (local $8 i32) + (local $9 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + 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 $0 + local.set $3 + local.get $3 + i32.load16_u + local.set $4 loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 - local.get $3 + local.get $4 + call $~lib/util/string/isSpace + local.set $5 + local.get $5 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 14364 - local.get $6 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $8 - i32.const 14364 - local.get $7 + local.get $3 i32.const 2 - i32.shl i32.add - i64.load32_u - local.set $9 + local.tee $3 + i32.load16_u + local.set $4 local.get $2 - i32.const 4 + i32.const 1 i32.sub local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - 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 + f64.const 1 + local.set $6 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 43 + i32.eq + end 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.const 1 i32.sub - local.set $2 - i32.const 14364 - local.get $10 + local.tee $2 + i32.eqz + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + 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 $4 + i32.const 45 + i32.eq + if + f64.const -1 + local.set $6 + end + local.get $3 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 + local.tee $3 + i32.load16_u + local.set $4 end local.get $1 - i32.const 10 - i32.ge_u if - local.get $2 - i32.const 2 - i32.sub - local.set $2 - i32.const 14364 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 + i32.lt_s + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + 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 16 + i32.eq + if + local.get $2 + i32.const 2 + i32.gt_s + if (result i32) + local.get $4 + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + end + end else - local.get $2 - i32.const 1 - i32.sub - local.set $2 + local.get $4 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 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $5 + local.get $5 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $5 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $5 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + end + local.get $1 + i32.eqz if + i32.const 10 + local.set $1 + end + end + f64.const 0 + local.set $7 + block $while-break|2 + loop $while-continue|2 local.get $2 - i32.const 2 + local.tee $5 + i32.const 1 i32.sub local.set $2 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 14784 - 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 + local.get $5 + local.set $5 + local.get $5 + if + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $4 + i32.const 48 + i32.sub + local.set $4 + else + local.get $4 + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $4 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $4 + else + local.get $4 + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $4 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $4 + end + end + end + local.get $4 + local.get $1 + i32.ge_u + if + local.get $7 + i64.reinterpret_f64 + i64.const 1 + i64.shl + i64.const 2 + i64.sub + i64.const -9007199254740994 + i64.le_u + i32.eqz + if + i32.const 1 + drop + f64.const nan:0x8000000000000 + 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 + br $while-break|2 + end + local.get $7 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $4 + f64.convert_i32_u + f64.add + local.set $7 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|2 + end end end + local.get $6 + local.get $7 + f64.mul + 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/string/parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.and - if - local.get $0 - i32.const 14784 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end + i32.store + local.get $2 + local.get $1 + call $~lib/util/string/strtol + 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/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (func $~lib/number/F32.parseInt (param $0 i32) (param $1 i32) (result f32) (local $2 i32) - (local $3 i64) - (local $4 i64) - (local $5 i32) + (local $3 f32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + call $~lib/util/string/strtol + f32.demote_f64 + 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/number/F64.parseInt (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local $3 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $1 + call $~lib/util/string/strtol + 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/util/string/strtol (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 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length local.set $2 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.const 0 + drop + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 return end - local.get $1 - i64.extend_i32_s + local.get $0 local.set $3 local.get $3 + i32.load16_u 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 + call $~lib/util/string/isSpace + local.set $5 + local.get $5 if - local.get $0 - local.get $4 - i64.div_u - local.set $0 - local.get $4 - local.get $4 - i64.mul + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u local.set $4 - local.get $5 + local.get $2 i32.const 1 - i32.shl - local.set $5 + i32.sub + local.set $2 br $while-continue|0 end end - loop $while-continue|1 - local.get $0 - i64.const 1 - i64.ge_u - local.set $2 + i32.const 1 + local.set $6 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 43 + i32.eq + end + if local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz if - local.get $0 - local.get $3 - i64.div_u - local.set $0 - local.get $5 - i32.const 1 + i32.const 0 + drop + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $5 - br $while-continue|1 + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $4 + i32.const 45 + i32.eq + if + i32.const -1 + local.set $6 end + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u + local.set $4 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 $7 i32) - 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 + local.get $1 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-continue|0 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $2 + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) i32.const 1 - i32.shl - i32.add - i32.const 15840 + else local.get $1 - local.get $6 - i64.and - i32.wrap_i64 - i32.const 1 - i32.shl + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 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 - local.set $7 - local.get $7 - br_if $do-continue|0 + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + local.get $1 + i32.const 16 + i32.eq + if + local.get $2 + i32.const 2 + i32.gt_s + if (result i32) + local.get $4 + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + end + end + else + local.get $4 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s + else + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $5 + local.get $5 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $5 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $5 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end + end + local.get $1 + i32.eqz + if + i32.const 10 + local.set $1 end - else - loop $do-continue|1 + end + i32.const 0 + local.set $7 + block $while-break|2 + loop $while-continue|2 local.get $2 + local.tee $5 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 15840 - 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 - local.set $7 - local.get $7 - br_if $do-continue|1 + local.get $5 + local.set $5 + local.get $5 + if + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $4 + i32.const 48 + i32.sub + local.set $4 + else + local.get $4 + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $4 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $4 + else + local.get $4 + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $4 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $4 + end + end + end + local.get $4 + local.get $1 + i32.ge_u + if + local.get $7 + i32.eqz + if + i32.const 0 + drop + i32.const 0 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + end + br $while-break|2 + end + local.get $7 + local.get $1 + i32.mul + local.get $4 + i32.add + local.set $7 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|2 + end end end + local.get $6 + local.get $7 + i32.mul + 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/util/number/itoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/number/I32.parseInt (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 - 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 14192 - i32.const 14320 - i32.const 373 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.eqz - if - i32.const 1552 - return - 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 0 + i32.store local.get $0 - i32.const 31 - i32.shr_u local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - if - i32.const 0 - local.get $0 - i32.sub - local.set $0 - end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 + i32.store + local.get $2 + local.get $1 + call $~lib/util/string/strtol + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain ) - (func $~lib/util/number/utoa32 (param $0 i32) (param $1 i32) (result i32) + (func $~lib/util/string/strtol (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - 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 - if - i32.const 14192 - i32.const 14320 - i32.const 350 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + (local $6 i64) + (local $7 i64) + (local $8 i32) + (local $9 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/string/String#get:length + local.set $2 + local.get $2 i32.eqz if - i32.const 1552 + i32.const 0 + drop + i64.const 0 + 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 - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $6 - local.get $0 + local.get $0 + local.set $3 + local.get $3 + i32.load16_u + local.set $4 + loop $while-continue|0 + local.get $4 + call $~lib/util/string/isSpace 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 + local.get $3 i32.const 2 - i32.shr_s - i32.const 1 i32.add - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $6 - local.get $0 - local.set $5 - local.get $3 + local.tee $3 + i32.load16_u 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 - local.get $3 - i32.const 1 - i32.shl + local.get $2 i32.const 1 - call $~lib/rt/pure/__new + i32.sub local.set $2 - local.get $2 - local.get $0 - i64.extend_i32_u - local.get $3 - local.get $1 - call $~lib/util/number/utoa64_any_core + br $while-continue|0 end end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u + i64.const 1 + local.set $6 + local.get $4 + i32.const 45 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 43 + i32.eq + end if - local.get $0 - i64.const 1000000000000 - i64.lt_u + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.eqz 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.const 0 + drop + i64.const 0 + 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 $4 + i32.const 45 + i32.eq + if + i64.const -1 + local.set $6 + end + local.get $3 + i32.const 2 + i32.add + local.tee $3 + i32.load16_u + local.set $4 + end + local.get $1 + if + local.get $1 + i32.const 2 + i32.lt_s + if (result i32) + i32.const 1 else - i32.const 13 - local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.add - local.get $0 - i64.const 10000000000000 - i64.ge_u + local.get $1 + i32.const 36 + i32.gt_s + end + if + i32.const 0 + drop + i64.const 0 + 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 - unreachable + local.get $1 + i32.const 16 + i32.eq + if + local.get $2 + i32.const 2 + i32.gt_s + if (result i32) + local.get $4 + i32.const 48 + i32.eq + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + i32.const 120 + i32.eq + else + i32.const 0 + end + if + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + end + end 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 + local.get $4 + i32.const 48 + i32.eq + if (result i32) + local.get $2 + i32.const 2 + i32.gt_s 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 + i32.const 0 + end + if + block $break|1 + block $case2|1 + block $case1|1 + block $case0|1 + local.get $3 + i32.load16_u offset=2 + i32.const 32 + i32.or + local.set $5 + local.get $5 + i32.const 98 + i32.eq + br_if $case0|1 + local.get $5 + i32.const 111 + i32.eq + br_if $case1|1 + local.get $5 + i32.const 120 + i32.eq + br_if $case2|1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 2 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 8 + local.set $1 + br $break|1 + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 16 + local.set $1 + br $break|1 + end 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 + i32.eqz 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 + i32.const 10 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 14364 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 14364 - 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 + end + end + i64.const 0 + local.set $7 + block $while-break|2 + loop $while-continue|2 local.get $2 + local.tee $5 i32.const 1 - i32.shl - i32.add - local.get $12 - local.get $13 - i64.const 32 - i64.shl - i64.or - i64.store - i32.const 14364 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 14364 - 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 + local.get $5 + local.set $5 + local.get $5 + if + local.get $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 48 + i32.sub + i32.const 10 + i32.lt_u + if + local.get $4 + i32.const 48 + i32.sub + local.set $4 + else + local.get $4 + i32.const 65 + i32.sub + i32.const 90 + i32.const 65 + i32.sub + i32.le_u + if + local.get $4 + i32.const 65 + i32.const 10 + i32.sub + i32.sub + local.set $4 + else + local.get $4 + i32.const 97 + i32.sub + i32.const 122 + i32.const 97 + i32.sub + i32.le_u + if + local.get $4 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $4 + end + end + end + local.get $4 + local.get $1 + i32.ge_u + if + local.get $7 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 0 + drop + i64.const 0 + 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 + br $while-break|2 + end + local.get $7 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $4 + i64.extend_i32_u + i64.add + local.set $7 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|2 + end end end + local.get $6 + local.get $7 + i64.mul + 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/number/I64.parseInt (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local $3 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - local.get $1 - i32.wrap_i64 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/util/number/utoa32_dec_lut + i32.store + local.get $2 + local.get $1 + call $~lib/util/string/strtol + 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/util/number/utoa64 (param $0 i64) (param $1 i32) (result i32) + (func $~lib/util/string/strtod (param $0 i32) (result f64) + (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - 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 - if - i32.const 14192 - i32.const 14320 - i32.const 401 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + (local $8 i32) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i64) + (local $18 f64) + (local $19 i64) + (local $20 i64) + (local $21 i64) + (local $22 i64) + (local $23 i64) + (local $24 i64) + (local $25 i32) + (local $26 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - i64.const 0 - i64.ne + local.set $25 + global.get $~lib/memory/__stack_pointer + local.get $25 + i32.store + local.get $25 + call $~lib/string/String#get:length + local.set $1 + local.get $1 i32.eqz if - i32.const 1552 + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 return end - i32.const 0 + local.get $0 local.set $2 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - local.set $7 + local.get $2 + i32.load16_u + local.set $3 + f64.const 1 + local.set $4 + loop $while-continue|0 + local.get $1 + if (result i32) 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 + call $~lib/util/string/isSpace else - local.get $0 - call $~lib/util/number/decimalCount64High - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 + local.set $5 + local.get $5 if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub + local.get $2 i32.const 2 - i32.shr_s - i32.const 1 i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 + local.tee $2 + i32.load16_u 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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/rt/pure/__retain - ) - (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.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 - if - i32.const 14192 - i32.const 14320 - i32.const 431 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|0 + end end - local.get $0 - i64.const 0 - i64.ne + local.get $1 i32.eqz if - i32.const 1552 + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 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 - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 + local.get $3 + i32.const 45 i32.eq if - local.get $0 - global.get $~lib/builtins/u32.MAX_VALUE - i64.extend_i32_u - i64.le_u + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.eqz 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 + global.set $~lib/memory/__stack_pointer + local.get $26 + return end + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $3 + f64.const -1 + local.set $4 else - local.get $1 - i32.const 16 + local.get $3 + i32.const 43 i32.eq if - i32.const 63 - local.get $0 - i64.clz - i32.wrap_i64 - i32.sub - i32.const 2 - i32.shr_s + local.get $1 i32.const 1 - i32.add + i32.sub + local.tee $1 + i32.eqz + if + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + end local.get $2 + i32.const 2 i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new + local.tee $2 + i32.load16_u local.set $3 - local.get $3 - local.set $4 - local.get $0 - local.set $9 - local.get $5 - local.set $8 + end + end + local.get $1 + i32.const 8 + i32.ge_s + if (result i32) + local.get $3 + i32.const 73 + i32.eq + else + i32.const 0 + end + if + local.get $2 + i64.load + i64.const 29555310648492105 + i64.eq + if (result i32) + local.get $2 + i64.load offset=8 + i64.const 34058970405077102 + i64.eq + else i32.const 0 - i32.const 1 - i32.ge_s - drop + end + if + f64.const inf 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 + f64.mul + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core + global.set $~lib/memory/__stack_pointer + local.get $26 + return end + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return end - local.get $2 - if + local.get $3 + i32.const 46 + i32.ne + if (result i32) local.get $3 - i32.const 45 - i32.store16 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + end + local.get $2 + local.set $6 + loop $while-continue|1 + local.get $3 + i32.const 48 + i32.eq + local.set $5 + local.get $5 + if + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $3 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $1 + i32.const 0 + i32.le_s + if + f64.const 0 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return end - local.get $3 - call $~lib/rt/pure/__retain - ) - (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 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 + i32.const 0 local.set $8 - local.get $8 - i64.const 1 - i64.sub + i32.const 0 local.set $9 - local.get $3 - local.get $1 - i64.sub + i64.const 0 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 $13 + i32.const 46 + i32.eq + if + local.get $6 + local.get $2 + i32.sub + i32.eqz + local.set $5 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $1 + i32.eqz + if (result i32) + local.get $5 + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + end + i32.const 1 + local.set $7 + loop $for-loop|2 + local.get $2 + i32.load16_u + local.tee $3 + i32.const 48 + i32.eq + local.set $11 + local.get $11 + if + local.get $1 + i32.const 1 + i32.sub + local.set $1 + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $for-loop|2 + end + end + local.get $1 i32.const 0 - i32.gt_s - local.set $15 - local.get $15 + i32.le_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 $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 + f64.const 0 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + end + local.get $9 + i32.eqz + if (result i32) + local.get $5 + else + i32.const 0 + end + if (result i32) + local.get $3 + i32.const 48 + i32.sub + i32.const 10 + i32.ge_u + else + i32.const 0 + end + if + f64.const nan:0x8000000000000 + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + return + end + end + local.get $3 + i32.const 48 + i32.sub + local.set $5 + block $for-break3 + loop $for-loop|3 + local.get $5 + i32.const 10 + i32.lt_u + if (result i32) + i32.const 1 + else + local.get $3 + i32.const 46 + i32.eq + if (result i32) + local.get $7 + i32.eqz + else + i32.const 0 + end + end + local.set $11 + local.get $11 + if + local.get $5 + i32.const 10 + i32.lt_u + if + local.get $8 + i32.const 19 + i32.lt_s + if (result i64) + i64.const 10 + local.get $10 + i64.mul + local.get $5 + i64.extend_i32_u + i64.add + else + local.get $10 + local.get $5 + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or + end + local.set $10 + local.get $8 + i32.const 1 + i32.add + local.set $8 + else + local.get $8 + local.set $9 + i32.const 1 + local.set $7 + end + local.get $1 + i32.const 1 + i32.sub + local.tee $1 + i32.eqz + if + br $for-break3 + end + local.get $2 + i32.const 2 + i32.add + local.tee $2 + i32.load16_u + local.set $3 + local.get $3 + i32.const 48 + i32.sub + local.set $5 + br $for-loop|3 + end + end + end + local.get $7 + i32.eqz + if + local.get $8 + local.set $9 + end + block $~lib/util/string/scientific|inlined.0 (result f64) + local.get $10 + local.set $17 + local.get $9 + i32.const 19 + local.tee $11 + local.get $8 + local.tee $5 + local.get $11 + local.get $5 + i32.lt_s + select + i32.sub + block $~lib/util/string/parseExp|inlined.0 (result i32) + local.get $2 + local.set $11 + local.get $1 + local.set $5 + i32.const 1 + local.set $12 + i32.const 0 + local.set $13 + local.get $11 + i32.load16_u + local.set $14 + local.get $14 + i32.const 32 + i32.or + i32.const 101 + i32.ne + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $11 + i32.const 2 + i32.add + local.tee $11 + i32.load16_u + local.set $14 + local.get $14 + i32.const 45 + i32.eq + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $11 + i32.const 2 + i32.add + local.tee $11 + i32.load16_u + local.set $14 + i32.const -1 + local.set $12 + else + local.get $14 + i32.const 43 + i32.eq + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 end local.get $11 - local.set $16 + i32.const 2 + i32.add + local.tee $11 + i32.load16_u + local.set $14 + end + end + loop $while-continue|4 + local.get $14 + i32.const 48 + i32.eq + local.set $15 + local.get $15 + if + local.get $5 + i32.const 1 + i32.sub + local.tee $5 + i32.eqz + if + i32.const 0 + br $~lib/util/string/parseExp|inlined.0 + end + local.get $11 + i32.const 2 + i32.add + local.tee $11 + i32.load16_u + local.set $14 + br $while-continue|4 + end + end + local.get $14 + i32.const 48 + i32.sub + local.set $15 + loop $for-loop|5 + local.get $5 + if (result i32) + local.get $15 + i32.const 10 + i32.lt_u + else i32.const 0 - local.set $11 - br $break|1 end - i32.const 0 - local.set $16 - br $break|1 + local.set $16 + local.get $16 + if + local.get $13 + i32.const 3200 + i32.ge_s + if + local.get $12 + i32.const 3200 + i32.mul + br $~lib/util/string/parseExp|inlined.0 + end + i32.const 10 + local.get $13 + i32.mul + local.get $15 + i32.add + local.set $13 + local.get $11 + i32.const 2 + i32.add + local.tee $11 + i32.load16_u + local.set $14 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + local.get $14 + i32.const 48 + i32.sub + local.set $15 + br $for-loop|5 + end end + local.get $12 + local.get $13 + i32.mul + end + i32.add + local.set $16 + local.get $17 + i64.const 0 + i64.ne + i32.eqz + if (result i32) + i32.const 1 + else + local.get $16 + i32.const -342 + i32.lt_s + end + if + f64.const 0 + br $~lib/util/string/scientific|inlined.0 + end + local.get $16 + i32.const 308 + i32.gt_s + if + f64.const inf + br $~lib/util/string/scientific|inlined.0 + end + local.get $17 + f64.convert_i64_u + local.set $18 + local.get $16 + i32.eqz + if + local.get $18 + br $~lib/util/string/scientific|inlined.0 + end + local.get $16 + i32.const 22 + i32.gt_s + if (result i32) + local.get $16 + i32.const 22 + i32.const 15 + i32.add + i32.le_s + else + i32.const 0 + end + if + local.get $18 + local.get $16 + i32.const 22 + i32.sub + local.set $15 + i32.const 3040 + local.get $15 + i32.const 3 + i32.shl + i32.add + f64.load + f64.mul + local.set $18 + i32.const 22 + local.set $16 + end + local.get $17 + i64.const 9007199254740991 + i64.le_u + if (result i32) local.get $16 + local.tee $15 + i32.const 31 + i32.shr_s + local.tee $14 + local.get $15 + i32.add local.get $14 - i32.or + i32.xor + i32.const 22 + i32.le_s + else + i32.const 0 + end + if + local.get $16 + i32.const 0 + i32.gt_s 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 $18 local.get $16 - i32.const 65535 - i32.and + local.set $5 + i32.const 3040 + local.get $5 + i32.const 3 + i32.shl i32.add - i32.store16 + f64.load + f64.mul + br $~lib/util/string/scientific|inlined.0 end - local.get $13 - i32.const 1 + local.get $18 + i32.const 0 + local.get $16 i32.sub - local.set $13 + local.set $11 + i32.const 3040 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 + i32.const 3 + i32.shl + i32.add + f64.load + f64.div + br $~lib/util/string/scientific|inlined.0 + else + local.get $16 + i32.const 0 + i32.lt_s if - global.get $~lib/util/number/_K - local.get $13 - i32.add - global.set $~lib/util/number/_K - local.get $0 + local.get $17 + local.set $19 + local.get $16 + local.set $12 + local.get $19 + i64.clz + local.set $20 + local.get $19 + local.get $20 + i64.shl + local.set $19 + local.get $12 + i64.extend_i32_s + local.get $20 + i64.sub + local.set $20 + loop $for-loop|6 + local.get $12 + i32.const -14 + i32.le_s + local.set $11 + local.get $11 + if + local.get $19 + i64.const 6103515625 + i64.div_u + local.set $21 + local.get $19 + i64.const 6103515625 + i64.rem_u + local.set $22 + local.get $21 + i64.clz + local.set $23 + local.get $21 + local.get $23 + i64.shl + f64.const 0.00004294967296 + local.get $22 + local.get $23 + i64.const 18 + i64.sub + i64.shl + f64.convert_i64_u + f64.mul + f64.nearest + i64.trunc_f64_u + i64.add + local.set $19 + local.get $20 + local.get $23 + i64.sub + local.set $20 + local.get $12 + i32.const 14 + i32.add + local.set $12 + br $for-loop|6 + end + end + i32.const 5 + i32.const 0 + local.get $12 + i32.sub + call $~lib/math/ipow32 + i64.extend_i32_s local.set $23 - local.get $14 - local.set $17 - local.get $5 + local.get $19 + local.get $23 + i64.div_u local.set $22 - local.get $18 + local.get $19 + local.get $23 + i64.rem_u local.set $21 - i32.const 22352 + local.get $22 + i64.clz + local.set $24 + local.get $22 + local.get $24 + i64.shl + local.get $21 + f64.convert_i64_u + i64.reinterpret_f64 + local.get $24 + i64.const 52 + i64.shl + i64.add + f64.reinterpret_i64 + local.get $23 + f64.convert_i64_u + f64.div + i64.trunc_f64_u + i64.add + local.set $19 + local.get $20 + local.get $24 + i64.sub + local.set $20 + local.get $19 + f64.convert_i64_u + local.get $20 + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + br $~lib/util/string/scientific|inlined.0 + else + local.get $17 + local.set $19 + local.get $16 + local.set $13 + local.get $19 + i64.ctz + local.set $24 + local.get $19 + local.get $24 + i64.shr_u + local.set $19 + local.get $24 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 + i64.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 + global.set $~lib/util/string/__fixmulShift + loop $for-loop|7 + local.get $13 + i32.const 13 + i32.ge_s + local.set $12 + local.get $12 + if + local.get $19 + local.set $20 + i32.const 1220703125 + local.set $14 local.get $20 - i64.ge_u - else - i32.const 0 - end - if (result i32) - local.get $21 + i64.const 4294967295 + i64.and + local.get $14 + i64.extend_i32_u + i64.mul + local.set $21 local.get $20 + i64.const 32 + i64.shr_u + local.get $14 + i64.extend_i32_u + i64.mul + local.get $21 + i64.const 32 + i64.shr_u 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.set $22 + local.get $22 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $11 + local.get $11 + i32.clz + local.set $5 + i64.const 32 + local.get $5 + i64.extend_i32_u + i64.sub + local.set $23 + global.get $~lib/util/string/__fixmulShift + local.get $23 + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $22 + local.get $5 + i64.extend_i32_u + i64.shl local.get $21 - local.get $20 + i64.const 4294967295 + i64.and + local.get $23 + i64.shr_u + i64.or + local.get $21 + local.get $5 + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and i64.add - local.set $21 - br $while-continue|3 + local.set $19 + local.get $13 + i32.const 13 + i32.sub + local.set $13 + br $for-loop|7 end end + local.get $19 + local.set $20 + i32.const 5 + local.get $13 + call $~lib/math/ipow32 + local.set $15 + local.get $20 + i64.const 4294967295 + i64.and + local.get $15 + i64.extend_i32_u + i64.mul + local.set $23 + local.get $20 + i64.const 32 + i64.shr_u + local.get $15 + i64.extend_i32_u + i64.mul + local.get $23 + i64.const 32 + i64.shr_u + i64.add + local.set $22 + local.get $22 + i64.const 32 + i64.shr_u + i32.wrap_i64 + local.set $12 + local.get $12 + i32.clz + local.set $5 + i64.const 32 + local.get $5 + i64.extend_i32_u + i64.sub + local.set $21 + global.get $~lib/util/string/__fixmulShift + local.get $21 + i64.add + global.set $~lib/util/string/__fixmulShift + local.get $22 + local.get $5 + i64.extend_i32_u + i64.shl + local.get $23 + i64.const 4294967295 + i64.and + local.get $21 + i64.shr_u + i64.or + local.get $23 + local.get $5 + i64.extend_i32_u + i64.shl + i64.const 31 + i64.shr_u + i64.const 1 + i64.and + i64.add + local.set $19 + global.get $~lib/util/string/__fixmulShift + local.set $24 + local.get $19 + f64.convert_i64_u local.get $24 - local.get $25 - i32.store16 - local.get $14 - return + i32.wrap_i64 + call $~lib/math/NativeMath.scalbn + br $~lib/util/string/scientific|inlined.0 end - br $while-continue|0 + unreachable end + unreachable + end + local.get $4 + f64.copysign + local.set $26 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $26 + ) + (func $~lib/string/parseFloat (param $0 i32) (result f64) + (local $1 i32) + (local $2 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/util/string/strtod + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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 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 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 912 + local.tee $1 + i32.store + end + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $2 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + 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 240 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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 offset=8 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/string/String.__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 + i64.const 0 + i64.store + local.get $0 + i32.const 912 + local.get $0 + i32.const 0 + i32.ne + select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__ne (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 + i64.const 0 + i64.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__eq + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__gt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 $6 + local.get $6 + if (result i32) + local.get $6 + i32.const 0 + i32.gt_s + else + local.get $2 + local.get $3 + i32.gt_s + end + 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/string/String.__lt (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + i32.eqz + if + i32.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $3 + local.get $3 + i32.eqz + if + i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return end - loop $while-continue|4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 0 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + local.get $3 + local.tee $4 + local.get $2 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + call $~lib/util/string/compareImpl + local.set $6 + local.get $6 + if (result i32) + local.get $6 + i32.const 0 + i32.lt_s + else + local.get $3 + local.get $2 + i32.lt_s + end + 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/string/String.__gte (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 + i64.const 0 + i64.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__lt + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__lte (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 + i64.const 0 + i64.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__gt + i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (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 8 + 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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + local.set $2 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) i32.const 1 - local.set $15 - local.get $15 + else + local.get $2 + i64.extend_i32_s + local.get $1 + i64.extend_i32_s + i64.mul + i64.const 1 + i64.const 28 + i64.shl + i64.gt_u + end + if + i32.const 12352 + i32.const 800 + i32.const 324 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $2 + i32.eqz + end + if + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $1 + i32.const 1 + i32.eq + if + 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 + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.mul + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + local.get $1 + call $~lib/memory/memory.repeat + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/string/String#replace (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (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 $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $4 + local.get $3 + local.get $4 + i32.le_u + if + local.get $3 + local.get $4 + i32.lt_u + if (result i32) + local.get $0 + else + local.get $2 + local.get $0 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/string/String.__eq + select + 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 + local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 0 + call $~lib/string/String#indexOf + local.set $5 + local.get $5 + i32.const -1 + i32.xor + if + local.get $2 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 + call $~lib/string/String#get:length + local.set $6 + local.get $3 + local.get $4 + i32.sub + local.set $3 + local.get $3 + local.get $6 + i32.add + local.set $7 + local.get $7 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 + global.get $~lib/memory/__stack_pointer 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 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $0 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 22352 - 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 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $8 + local.get $5 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $8 + local.get $5 + local.get $6 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + local.get $4 + i32.add + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $5 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $8 + 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 + end + local.get $0 + 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/string/String#replaceAll (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 $14 i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/string/String#get:length + local.set $3 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/string/String#get:length + local.set $4 + local.get $3 + local.get $4 + i32.le_u + if + local.get $3 + local.get $4 + i32.lt_u + if (result i32) + local.get $0 + else + local.get $2 + local.get $0 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $~lib/string/String.__eq + select end + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return 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 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/string/String#get:length + local.set $5 + local.get $4 i32.eqz if - local.get $0 - local.get $1 + local.get $5 + i32.eqz + if + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 + 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 $1 - i32.const 2 + local.get $5 + i32.mul 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 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $2 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $5 + local.set $7 i32.const 0 - end - if - local.get $1 - local.set $4 + local.set $8 loop $for-loop|0 - local.get $4 + local.get $8 local.get $3 - i32.lt_s - local.set $5 - local.get $5 + i32.lt_u + local.set $9 + local.get $9 if + local.get $6 + local.get $7 + local.tee $10 + i32.const 1 + i32.add + local.set $7 + local.get $10 + i32.const 1 + i32.shl + i32.add local.get $0 - local.get $4 + local.get $8 i32.const 1 i32.shl i32.add - i32.const 48 + i32.load16_u i32.store16 - local.get $4 + local.get $6 + local.get $7 + 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 $7 + local.get $5 + i32.add + local.set $7 + local.get $8 i32.const 1 i32.add - local.set $4 + local.set $8 br $for-loop|0 end end - local.get $0 + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + end + i32.const 0 + local.set $11 + i32.const 0 + local.set $12 + local.get $4 + local.get $5 + i32.eq + if local.get $3 i32.const 1 i32.shl - i32.add - i32.const 46 - i32.const 48 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=8 + local.get $6 + local.get $0 + local.get $7 + call $~lib/memory/memory.copy + loop $while-continue|1 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + local.get $11 + call $~lib/string/String#indexOf + local.tee $12 + i32.const -1 + i32.xor + local.set $8 + local.get $8 + if + local.get $6 + local.get $12 + 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 $12 + local.get $4 + i32.add + local.set $11 + br $while-continue|1 + end + end + local.get $6 + local.set $16 + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 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 + end + i32.const 0 + local.set $13 + i32.const 0 + local.set $14 + local.get $3 + local.set $15 + loop $while-continue|2 + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + local.get $1 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + local.get $11 + call $~lib/string/String#indexOf + local.tee $12 + i32.const -1 + i32.xor + local.set $6 + local.get $6 if - local.get $0 - local.get $3 + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store + local.get $16 + call $~lib/string/String.__not + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $13 + i32.store offset=12 + end + local.get $12 + local.get $11 + i32.sub + local.set $7 + local.get $14 + local.get $7 + i32.add + local.get $5 + i32.add + local.get $15 + i32.gt_u + if + local.get $15 + i32.const 1 + i32.shl + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $13 + local.get $15 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $13 + i32.store offset=12 + end + local.get $13 + local.get $14 i32.const 1 i32.shl i32.add - local.set $4 - local.get $4 - i32.const 2 + local.get $0 + local.get $11 + i32.const 1 + i32.shl i32.add - local.get $4 - i32.const 0 - local.get $2 - i32.sub + local.get $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $0 - local.get $3 + local.get $14 + local.get $7 + i32.add + local.set $14 + local.get $13 + local.get $14 i32.const 1 i32.shl i32.add - i32.const 46 - i32.store16 - local.get $1 + local.get $2 + local.get $5 i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $14 + local.get $5 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 + local.set $14 + local.get $12 + local.get $4 + i32.add + local.set $11 + br $while-continue|2 + end + end + local.get $13 + if + local.get $3 + local.get $11 + i32.sub + local.set $6 + local.get $14 + local.get $6 + i32.add + local.get $15 + i32.gt_u + if + local.get $15 + i32.const 1 + i32.shl + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $13 + local.get $15 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $13 + i32.store offset=12 end - unreachable + local.get $6 + if + local.get $13 + local.get $14 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $11 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + end + local.get $6 + local.get $14 + i32.add + local.set $6 + local.get $15 + local.get $6 + i32.gt_u + if + global.get $~lib/memory/__stack_pointer + local.get $13 + local.get $6 + i32.const 1 + i32.shl + call $~lib/rt/itcms/__renew + local.tee $13 + i32.store offset=12 + end + local.get $13 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return end - unreachable + local.get $0 + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) + (func $~lib/string/String#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 f64) - (local $6 i64) + (local $5 i32) + (local $6 i32) (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) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/string/String#get:length + local.set $3 local.get $1 - f64.const 0 - f64.lt - local.set $2 - local.get $2 - if + i32.const 0 + i32.lt_s + if (result i32) local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 + 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.get $1 - local.set $5 - local.get $0 - local.set $4 + 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.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 + local.get $3 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.le_s + if + i32.const 240 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + end + global.get $~lib/memory/__stack_pointer + local.get $3 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.shl 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 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.get $1 i32.const 1 - local.get $11 - i64.const 4503599627370496 - i64.eq + i32.shl 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 + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $6 + 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/string/String#substr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.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 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.set $3 + local.get $2 + local.set $4 + local.get $0 local.set $10 - i32.const -61 + global.get $~lib/memory/__stack_pointer local.get $10 + i32.store + local.get $10 + call $~lib/string/String#get:length + local.set $5 + local.get $3 + i32.const 0 + i32.lt_s + if + 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 + local.set $3 + end + local.get $4 + local.tee $7 + i32.const 0 + local.tee $6 + local.get $7 + local.get $6 + i32.gt_s + select + local.tee $6 + local.get $5 + local.get $3 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 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select 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 21480 - local.get $14 - i32.const 3 i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 22176 - local.get $14 + local.set $8 + local.get $8 + i32.const 0 + i32.le_s + if + i32.const 240 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=4 + local.get $9 + local.get $0 + local.get $3 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 $8 + call $~lib/memory/memory.copy local.get $9 - local.get $14 - i64.extend_i32_s - i64.shl - local.set $9 - local.get $7 - local.get $14 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (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 8 i32.sub - local.set $7 - global.get $~lib/util/number/_frc_pow + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 local.set $12 - global.get $~lib/util/number/_exp_pow - local.set $15 - local.get $9 - local.set $17 + global.get $~lib/memory/__stack_pointer 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 + i32.store + local.get $12 + 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 + 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 local.set $10 - local.get $15 - local.set $13 local.get $10 - local.get $13 + i32.eqz + if + i32.const 240 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + local.get $11 + local.get $0 + local.get $8 i32.add - i32.const 64 + local.get $10 + call $~lib/memory/memory.copy + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $10 - global.get $~lib/util/number/_frc_plus - local.set $17 + global.set $~lib/memory/__stack_pointer 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 + ) + (func $~lib/string/String#split (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $1 + i32.const 0 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $0 + call $~lib/array/Array<~lib/string/String>#__uset + local.get $3 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $0 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + call $~lib/string/String#get:length + local.set $5 + local.get $1 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 local.get $15 + call $~lib/string/String#get:length + local.set $6 + local.get $2 + i32.const 0 + i32.lt_s + if + global.get $~lib/builtins/i32.MAX_VALUE + local.set $2 + end + local.get $6 + i32.eqz + if + local.get $5 + i32.eqz + if + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $5 + local.tee $3 + local.get $2 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + 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 $7 + loop $for-loop|0 + local.get $7 + local.get $5 + i32.lt_s + local.set $8 + local.get $8 + if + global.get $~lib/memory/__stack_pointer + i32.const 2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $9 + i32.store offset=12 + local.get $9 + local.get $0 + local.get $7 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $4 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $9 + i32.store + local.get $3 + local.get $9 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + local.get $3 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + else + local.get $5 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.const 240 + i32.store + local.get $4 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + i32.const 3 + i32.const 0 + call $~lib/rt/__newArray + local.tee $10 + i32.store offset=16 + i32.const 0 + local.set $11 + i32.const 0 + local.set $12 + i32.const 0 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 + loop $while-continue|1 + local.get $0 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + local.get $1 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + local.get $12 + call $~lib/string/String#indexOf + local.tee $11 + i32.const -1 + i32.xor + local.set $4 + local.get $4 + if + local.get $11 + local.get $12 + i32.sub + local.set $3 + local.get $3 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=24 + local.get $7 + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $3 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + local.get $7 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + i32.const 240 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + end + local.get $13 + i32.const 1 + i32.add + local.tee $13 + local.get $2 + i32.eq + if + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $11 + local.get $6 + i32.add + local.set $12 + br $while-continue|1 + end + end 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 + i32.eqz + if + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + local.get $0 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + end + local.get $5 + local.get $12 + i32.sub + local.set $14 + local.get $14 + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $0 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $14 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + local.get $4 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + else + local.get $10 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=8 + local.get $15 + i32.const 240 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=20 + local.get $15 + call $~lib/array/Array<~lib/string/String>#push + drop + end local.get $10 - local.get $25 - local.get $26 - local.get $23 - local.get $3 - call $~lib/util/number/genDigits - local.set $28 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + ) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 528 + i32.const 13952 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + call $~lib/array/Array<~lib/string/String>#__uget + local.tee $2 + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $2 + i32.eqz + if + i32.const 14000 + i32.const 13952 + i32.const 96 + i32.const 40 + call $~lib/builtins/abort + unreachable + end local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $start:std/string + (local $0 f64) + (local $1 f32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + global.get $std/string/str + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 10 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 11 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 12 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/String#charCodeAt + i32.const 104 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String.__not + i32.eqz + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 17 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 18 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String.__not + i32.eqz + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 19 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 54 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 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 65536 + i32.const 54 i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - f64.const 0 - f64.eq + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/string/String.fromCharCode@varargs + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 23 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 55296 + i32.const 57088 + call $~lib/string/String.fromCharCode + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 24 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $~lib/string/String.fromCodePoint + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 26 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 54 + call $~lib/string/String.fromCodePoint + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 27 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 119558 + call $~lib/string/String.fromCodePoint + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#startsWith + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 30 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 944 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/string/String.MAX_LENGTH + call $~lib/string/String#endsWith + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 31 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 976 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#includes + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 32 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 15 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz if - i32.const 21360 - return + i32.const 0 + i32.const 96 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 3 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if - local.get $0 - local.get $0 - f64.ne - if - i32.const 5744 - return - end - i32.const 7040 - i32.const 21392 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return + i32.const 0 + i32.const 96 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 21424 - local.get $0 - call $~lib/util/number/dtoa_core - i32.const 1 - i32.shl - local.set $1 - local.get $1 - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - i32.const 21424 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $start:std/string - (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 f64) - (local $33 f32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i32) - (local $92 i32) - (local $93 i32) - (local $94 i32) - (local $95 i32) - (local $96 i32) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) - (local $101 i32) - (local $102 i32) - (local $103 i32) - (local $104 i32) - (local $105 i32) - (local $106 i32) - (local $107 i32) - (local $108 i32) - (local $109 i32) - (local $110 i32) - (local $111 i32) - (local $112 i32) - (local $113 i32) - (local $114 i32) - (local $115 i32) - (local $116 i32) - (local $117 i32) - (local $118 i32) - (local $119 i32) - (local $120 i32) - (local $121 i32) - (local $122 i32) - (local $123 i32) - (local $124 i32) - (local $125 i32) - (local $126 i32) - (local $127 i32) - (local $128 i32) - (local $129 i32) - (local $130 i32) - (local $131 i32) - (local $132 i32) - (local $133 i32) - (local $134 i32) - (local $135 i32) - (local $136 i32) - (local $137 i32) - (local $138 i32) - (local $139 i32) - (local $140 i32) - (local $141 i32) - (local $142 i32) - (local $143 i32) - (local $144 i32) - (local $145 i32) - (local $146 i32) - (local $147 i32) - (local $148 i32) - (local $149 i32) - (local $150 i32) - (local $151 i32) - (local $152 i32) - (local $153 i32) - (local $154 i32) - (local $155 i32) - (local $156 i32) - (local $157 i32) - (local $158 i32) - (local $159 i32) - (local $160 i32) - (local $161 i32) - (local $162 i32) - (local $163 i32) - (local $164 i32) - (local $165 i32) - (local $166 i32) - (local $167 i32) - (local $168 i32) - (local $169 i32) - (local $170 i32) - (local $171 i32) - (local $172 i32) - (local $173 i32) - (local $174 i32) - (local $175 i32) - (local $176 i32) - (local $177 i32) - (local $178 i32) - (local $179 i32) - (local $180 i32) - (local $181 i32) - (local $182 i32) - (local $183 i32) - (local $184 i32) - (local $185 i32) - (local $186 i32) - (local $187 i32) - (local $188 i32) - (local $189 i32) - (local $190 i32) - (local $191 i32) - (local $192 i32) - (local $193 i32) - (local $194 i32) - (local $195 i32) - (local $196 i32) - (local $197 i32) - (local $198 i32) - (local $199 i32) - (local $200 i32) - (local $201 i32) - (local $202 i32) - (local $203 i32) - (local $204 i32) - (local $205 i32) - (local $206 i32) - (local $207 i32) - (local $208 i32) - (local $209 i32) - (local $210 i32) - (local $211 i32) - (local $212 i32) - (local $213 i32) - (local $214 i32) - (local $215 i32) - (local $216 i32) - (local $217 i32) - (local $218 i32) - (local $219 i32) - (local $220 i32) - (local $221 i32) - (local $222 i32) - (local $223 i32) - (local $224 i32) - (local $225 i32) - (local $226 i32) - (local $227 i32) - (local $228 i32) - (local $229 i32) - (local $230 i32) - (local $231 i32) - (local $232 i32) - (local $233 i32) - (local $234 i32) - (local $235 i32) - (local $236 i32) - (local $237 i32) - (local $238 i32) - (local $239 i32) - (local $240 i32) - (local $241 i32) - (local $242 i32) - (local $243 i32) - (local $244 i32) - (local $245 i32) - (local $246 i32) - (local $247 i32) - (local $248 i32) - (local $249 i32) - (local $250 i32) - (local $251 i32) - (local $252 i32) - (local $253 i32) - (local $254 i32) - (local $255 i32) - (local $256 i32) - (local $257 i32) - (local $258 i32) - (local $259 i32) - (local $260 i32) - (local $261 i32) - (local $262 i32) - (local $263 i32) - (local $264 i32) - (local $265 i32) - (local $266 i32) - (local $267 i32) - (local $268 i32) - (local $269 i32) - (local $270 i32) - (local $271 i32) - (local $272 i32) - (local $273 i32) - (local $274 i32) - (local $275 i32) - (local $276 i32) - (local $277 i32) - (local $278 i32) - (local $279 i32) - (local $280 i32) - (local $281 i32) - (local $282 i32) - (local $283 i32) - (local $284 i32) - (local $285 i32) - (local $286 i32) - (local $287 i32) - (local $288 i32) - (local $289 i32) - (local $290 i32) - (local $291 i32) - (local $292 i32) - (local $293 i32) - (local $294 i32) - (local $295 i32) - (local $296 i32) - (local $297 i32) - (local $298 i32) - (local $299 i32) - (local $300 i32) - (local $301 i32) - (local $302 i32) - global.get $std/string/str - i32.const 32 - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 10 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 8 + i32.const 37 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 144 - i32.const 144 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 100 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 10 + i32.const 38 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 240 - i32.const 240 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 5 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1104 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 11 + i32.const 39 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 272 - i32.const 272 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 6 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1168 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 12 + i32.const 40 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - call $~lib/string/String#get:length - i32.const 16 - i32.eq + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 8 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1200 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 14 + i32.const 41 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - call $~lib/string/String#charCodeAt - i32.const 104 - i32.eq + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 15 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - call $~lib/string/String.__not - i32.eqz - i32.const 0 - i32.eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 15 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 17 + i32.const 44 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 336 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 3 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 18 + i32.const 45 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - call $~lib/string/String.__not - i32.eqz - i32.const 1 - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 10 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 19 + i32.const 46 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $0 - i32.const 336 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 100 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 21 + i32.const 47 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 54 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $1 - i32.const 528 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 5 + i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 22 + i32.const 48 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 65536 - i32.const 54 - i32.add - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/string/String.fromCharCode@varargs - local.tee $2 - i32.const 528 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 6 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 23 + i32.const 49 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 55296 - i32.const 57088 - call $~lib/string/String.fromCharCode - local.tee $3 - i32.const 560 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 8 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#padEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1312 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 24 + i32.const 50 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - call $~lib/string/String.fromCodePoint - local.tee $4 - i32.const 336 - call $~lib/string/String.__eq + call $~lib/string/String#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 26 + i32.const 52 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 54 - call $~lib/string/String.fromCodePoint - local.tee $5 - i32.const 528 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 27 + i32.const 53 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 119558 - call $~lib/string/String.fromCodePoint - local.tee $6 - i32.const 640 - call $~lib/string/String.__eq + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 28 + i32.const 54 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 672 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - call $~lib/string/String#startsWith + call $~lib/string/String#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 30 + i32.const 55 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 736 - global.get $~lib/string/String.MAX_LENGTH - call $~lib/string/String#endsWith + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 31 + i32.const 56 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - call $~lib/string/String#includes + call $~lib/string/String#indexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 32 + i32.const 57 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 0 - i32.const 800 - call $~lib/string/String#padStart - local.tee $7 - global.get $std/string/str - call $~lib/string/String.__eq + call $~lib/string/String#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 34 + i32.const 58 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 15 - i32.const 800 - call $~lib/string/String#padStart - local.tee $8 - global.get $std/string/str - call $~lib/string/String.__eq + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + call $~lib/string/String#indexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 35 + i32.const 59 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 i32.const 3 - i32.const 800 - call $~lib/string/String#padStart - local.tee $9 - i32.const 832 - call $~lib/string/String.__eq + call $~lib/string/String#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 36 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 10 - i32.const 304 - call $~lib/string/String#padStart - local.tee $10 - i32.const 304 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -1 + call $~lib/string/String#indexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 37 + i32.const 61 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 100 - i32.const 304 - call $~lib/string/String#padStart - local.tee $11 - i32.const 368 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 38 + i32.const 63 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 5 - i32.const 800 - call $~lib/string/String#padStart - local.tee $12 - i32.const 896 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 39 + i32.const 64 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 6 - i32.const 928 - call $~lib/string/String#padStart - local.tee $13 - i32.const 960 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 40 + i32.const 65 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 8 - i32.const 928 - call $~lib/string/String#padStart - local.tee $14 - i32.const 992 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 41 + i32.const 66 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 0 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $15 - global.get $std/string/str - call $~lib/string/String.__eq + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 43 + i32.const 67 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1456 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#lastIndexOf i32.const 15 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $16 - global.get $std/string/str - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 44 + i32.const 68 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 3 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $17 - i32.const 832 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 45 + i32.const 69 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 10 - i32.const 304 - call $~lib/string/String#padEnd - local.tee $18 - i32.const 304 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + call $~lib/string/String#lastIndexOf + i32.const 2 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 46 + i32.const 70 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 100 - i32.const 304 - call $~lib/string/String#padEnd - local.tee $19 - i32.const 368 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -1 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 47 + i32.const 71 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 5 - i32.const 800 - call $~lib/string/String#padEnd - local.tee $20 - i32.const 1040 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1488 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 48 + i32.const 72 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 6 - i32.const 864 - call $~lib/string/String#padEnd - local.tee $21 - i32.const 1072 - call $~lib/string/String.__eq + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#lastIndexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 49 + i32.const 73 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 8 - i32.const 864 - call $~lib/string/String#padEnd - local.tee $22 - i32.const 1104 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 50 + i32.const 75 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 304 - i32.const 304 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 52 + i32.const 76 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 304 - i32.const 672 - i32.const 0 - call $~lib/string/String#indexOf + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 53 + i32.const 77 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 368 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 54 + i32.const 78 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - global.get $std/string/str - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 55 + i32.const 79 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 304 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 0 + i32.const 1520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 56 + i32.const 80 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - i32.const 0 - call $~lib/string/String#indexOf - i32.const 2 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 57 + i32.const 81 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1184 - i32.const 0 - call $~lib/string/String#indexOf + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 58 + i32.const 82 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - i32.const 2 - call $~lib/string/String#indexOf - i32.const 2 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 59 + i32.const 83 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - i32.const 3 - call $~lib/string/String#indexOf - i32.const -1 + i32.const 272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String#localeCompare + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 60 + i32.const 84 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1216 - i32.const -1 - call $~lib/string/String#indexOf - i32.const 2 - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 61 + i32.const 86 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 0 - i32.eq + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 63 + i32.const 87 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 672 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq + i32.const 1616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimStart + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1664 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 64 + i32.const 88 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 304 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - global.get $std/string/str - call $~lib/string/String#get:length - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 65 + i32.const 90 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 66 + i32.const 91 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1184 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq + i32.const 1616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trimEnd + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 67 + i32.const 92 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1248 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#lastIndexOf - i32.const 15 - i32.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trim + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 68 + i32.const 94 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - i32.const 2 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trim + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 69 + i32.const 95 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1152 - i32.const 3 - call $~lib/string/String#lastIndexOf - i32.const 2 - i32.eq + i32.const 1616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String#trim + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 70 + i32.const 96 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1216 - i32.const -1 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 71 + i32.const 98 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 1280 + i32.const 1792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - call $~lib/string/String#lastIndexOf - i32.const -1 - i32.eq + call $~lib/string/parseInt + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 72 + i32.const 99 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 672 - i32.const 0 - call $~lib/string/String#lastIndexOf + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - i32.eq + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 73 + i32.const 100 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - call $~lib/string/String#localeCompare + i32.const 1856 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - i32.eq + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 75 + i32.const 101 i32.const 1 call $~lib/builtins/abort - unreachable - end - i32.const 368 - i32.const 304 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq + unreachable + end + i32.const 1888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 5 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 76 + i32.const 102 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 368 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq + i32.const 1920 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 455 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 77 + i32.const 103 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 704 - i32.const 704 - call $~lib/string/String#localeCompare + i32.const 1952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - i32.eq + call $~lib/string/parseInt + f64.const 3855 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 78 + i32.const 104 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 1312 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq + i32.const 1984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 3855 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 79 + i32.const 105 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1312 - i32.const 864 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq + i32.const 2016 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 11 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 80 + i32.const 106 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1344 - i32.const 864 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq + i32.const 2048 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 81 + i32.const 107 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 1344 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq + i32.const 2080 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const -123 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 82 + i32.const 108 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 832 - call $~lib/string/String#localeCompare - i32.const -1 - i32.eq + i32.const 2112 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 123 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 83 + i32.const 109 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 336 - i32.const 304 - call $~lib/string/String#localeCompare - i32.const 1 - i32.eq + i32.const 2144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const -12 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 84 + i32.const 110 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - call $~lib/string/String#trimStart - local.tee $23 - i32.const 304 - call $~lib/string/String.__eq + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 86 + i32.const 111 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 - call $~lib/string/String#trimStart - local.tee $24 - i32.const 1376 - call $~lib/string/String.__eq + i32.const 2176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 87 + i32.const 112 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1408 - call $~lib/string/String#trimStart - local.tee $25 - i32.const 1456 - call $~lib/string/String.__eq + i32.const 2208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16 + call $~lib/string/parseInt + f64.const 2833 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 88 + i32.const 113 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - call $~lib/string/String#trimEnd - local.tee $26 - i32.const 304 - call $~lib/string/String.__eq + i32.const 2240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 90 + i32.const 114 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 - call $~lib/string/String#trimEnd - local.tee $27 - i32.const 1376 - call $~lib/string/String.__eq + i32.const 2272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 91 + i32.const 115 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1408 - call $~lib/string/String#trimEnd - local.tee $28 - i32.const 1504 - call $~lib/string/String.__eq + i32.const 2304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 92 + i32.const 116 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - call $~lib/string/String#trim - local.tee $29 - i32.const 304 - call $~lib/string/String.__eq + i32.const 2336 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + local.set $0 + local.get $0 + i64.reinterpret_f64 + i64.const 63 + i64.shr_u + i64.const 0 + i64.ne + i32.const 0 + i32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 94 + i32.const 117 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1376 - call $~lib/string/String#trim - local.tee $30 - i32.const 1376 - call $~lib/string/String.__eq + i32.const 2368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + i32.const 2416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16 + call $~lib/string/parseInt + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 95 + i32.const 118 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1408 - call $~lib/string/String#trim - local.tee $31 - i32.const 864 - call $~lib/string/String.__eq + i32.const 2448 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/string/parseInt + f64.const 36893488147419103232 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 96 + i32.const 119 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 - i32.const 0 + i32.const 2448 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13 call $~lib/string/parseInt - f64.const 0 + f64.const 5135857308667095285760 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 98 + i32.const 120 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1584 - i32.const 0 + i32.const 2512 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 10 call $~lib/string/parseInt - f64.const 0 + f64.const -1.e+24 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 99 + i32.const 121 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1616 - i32.const 0 + i32.const 2592 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16 call $~lib/string/parseInt - f64.const 1 + f64.const 75557863725914323419136 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 100 + i32.const 122 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1648 + i32.const 2656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt f64.const 1 @@ -12951,532 +14984,687 @@ if i32.const 0 i32.const 96 - i32.const 101 + i32.const 123 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1680 + i32.const 2688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 5 + f64.const 2 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 102 + i32.const 124 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1712 + i32.const 2736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 455 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 103 + i32.const 126 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1744 + i32.const 2768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 3855 + f64.const 2 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 104 + i32.const 127 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1776 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 3855 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 105 + i32.const 128 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1808 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 11 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 106 + i32.const 129 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1840 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 107 + i32.const 130 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1872 - i32.const 0 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 37 call $~lib/string/parseInt - f64.const -123 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 108 + i32.const 131 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1904 + i32.const 2880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const 123 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 109 + i32.const 132 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1936 + i32.const 2912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 call $~lib/string/parseInt - f64.const -12 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 110 + i32.const 133 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 + i32.const 2912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq + call $~lib/number/F32.parseInt + local.tee $1 + local.get $1 + f32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 111 + i32.const 134 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1968 + i32.const 2912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - call $~lib/string/parseInt - f64.const 0 - f64.eq + call $~lib/number/F64.parseInt + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 112 + i32.const 135 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2000 - i32.const 16 - call $~lib/string/parseInt - f64.const 2833 - f64.eq + i32.const 2944 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 0 + call $~lib/number/I32.parseInt + global.get $~lib/number/I32.MAX_VALUE + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 113 + i32.const 137 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2032 + i32.const 2992 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - call $~lib/string/parseInt - f64.const 1 - f64.eq + call $~lib/number/I64.parseInt + global.get $~lib/number/I64.MAX_VALUE + i64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 114 + i32.const 138 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2064 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 115 + i32.const 141 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2096 - i32.const 0 - call $~lib/string/parseInt + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 116 + i32.const 142 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2128 - i32.const 0 - call $~lib/string/parseInt - local.set $32 - local.get $32 - i64.reinterpret_f64 - i64.const 63 - i64.shr_u - i64.const 0 - i64.ne - i32.const 0 - i32.ne + i32.const 3248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 117 + i32.const 143 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2160 - i32.const 0 - call $~lib/string/parseInt - i32.const 2208 - i32.const 16 - call $~lib/string/parseInt + i32.const 3280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 118 + i32.const 144 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2240 - i32.const 0 - call $~lib/string/parseInt - f64.const 36893488147419103232 + i32.const 3312 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e-05 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 119 + i32.const 145 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2240 - i32.const 13 - call $~lib/string/parseInt - f64.const 5135857308667095285760 + i32.const 3344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const -1e-05 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 120 + i32.const 146 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2304 - i32.const 10 - call $~lib/string/parseInt - f64.const -1.e+24 + i32.const 3376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const -3e-23 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 121 + i32.const 147 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2384 - i32.const 16 - call $~lib/string/parseInt - f64.const 75557863725914323419136 + i32.const 3424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 3e21 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 122 + i32.const 148 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2448 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 + i32.const 3472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 123 + i32.const 149 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2480 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 + i32.const 3504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 124 + i32.const 150 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2528 - i32.const 0 - call $~lib/string/parseInt - f64.const 1 + i32.const 3536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 126 + i32.const 151 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2560 - i32.const 0 - call $~lib/string/parseInt - f64.const 2 + i32.const 3568 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0.25 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 127 + i32.const 152 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3600 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e3 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 128 + i32.const 153 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2608 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3632 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e-10 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 129 + i32.const 154 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e-30 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 130 + i32.const 155 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 928 - i32.const 37 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3728 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e-323 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 131 + i32.const 156 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2672 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3776 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 132 + i32.const 157 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2704 - i32.const 0 - call $~lib/string/parseInt - local.tee $32 - local.get $32 - f64.ne + i32.const 3824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1.e+308 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 133 + i32.const 158 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2704 - i32.const 0 - call $~lib/number/F32.parseInt - local.tee $33 - local.get $33 - f32.ne + i32.const 3856 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 134 + i32.const 159 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2704 - i32.const 0 - call $~lib/number/F64.parseInt - local.tee $32 - local.get $32 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + local.tee $0 + local.get $0 f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 135 + i32.const 160 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2736 - i32.const 0 - call $~lib/number/I32.parseInt - global.get $~lib/number/I32.MAX_VALUE - i32.eq + i32.const 3888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 0.1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 137 + i32.const 163 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2784 - i32.const 0 - call $~lib/number/I64.parseInt - global.get $~lib/number/I64.MAX_VALUE - i64.eq + i32.const 3936 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + f64.const 1e-10 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 138 + i32.const 164 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1552 + i32.const 3984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 141 + i32.const 165 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1616 + i32.const 4032 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 1 f64.eq @@ -13484,12 +15672,17 @@ if i32.const 0 i32.const 96 - i32.const 142 + i32.const 166 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3040 + i32.const 4064 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 1 f64.eq @@ -13497,181 +15690,251 @@ if i32.const 0 i32.const 96 - i32.const 143 + i32.const 167 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3072 + i32.const 4096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 144 + i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3104 + i32.const 4144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-05 + f64.const 123456789 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 145 + i32.const 169 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3136 + i32.const 4192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1e-05 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 146 + i32.const 170 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3168 + i32.const 4240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -3e-23 + f64.const 1e-60 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 147 + i32.const 172 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3216 + i32.const 4272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 3e21 + f64.const 1.e+60 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 148 + i32.const 173 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3264 + i32.const 4304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 + f64.const 123.4 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 149 + i32.const 176 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3296 + i32.const 4336 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 + f64.const -0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 150 + i32.const 177 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3328 + i32.const 4384 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 151 + i32.const 178 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3360 + i32.const 4416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.25 + f64.const -1.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 152 + i32.const 179 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3392 + i32.const 4464 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e3 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 153 + i32.const 180 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3424 + i32.const 4512 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-10 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 154 + i32.const 181 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3472 + i32.const 4560 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-30 + f64.const 0.022 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 155 + i32.const 182 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3520 + i32.const 4608 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-323 + f64.const 11 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 156 + i32.const 183 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3568 + i32.const 2176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -13679,208 +15942,287 @@ if i32.const 0 i32.const 96 - i32.const 157 + i32.const 184 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3616 + i32.const 4640 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+308 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 158 + i32.const 185 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3648 + i32.const 4672 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 159 + i32.const 186 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 + i32.const 4704 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 1.1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 160 + i32.const 187 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3680 + i32.const 4736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 + f64.const -1.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 163 + i32.const 188 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3728 + i32.const 4768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-10 + f64.const -1.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 164 + i32.const 189 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3776 + i32.const 4800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 + f64.const -1.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 165 + i32.const 190 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3824 + i32.const 4832 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const -1.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 166 + i32.const 191 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3856 + i32.const 4864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 167 + i32.const 192 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3888 + i32.const 4896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 168 + i32.const 193 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3936 + i32.const 4928 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 123456789 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 169 + i32.const 194 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3984 + i32.const 4960 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 170 + i32.const 195 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4032 + i32.const 4992 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-60 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 172 + i32.const 196 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4064 + i32.const 5024 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+60 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 173 + i32.const 197 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4096 + i32.const 5056 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 123.4 + f64.const 10 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 176 + i32.const 198 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4128 + i32.const 5104 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -0 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 177 + i32.const 199 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4176 + i32.const 5136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 1 f64.eq @@ -13888,38 +16230,53 @@ if i32.const 0 i32.const 96 - i32.const 178 + i32.const 200 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4208 + i32.const 5168 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1.1 + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 179 + i32.const 201 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4256 + i32.const 5200 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 180 + i32.const 202 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4304 + i32.const 5232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 10 f64.eq @@ -13927,51 +16284,71 @@ if i32.const 0 i32.const 96 - i32.const 181 + i32.const 203 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4352 + i32.const 5264 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.022 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 182 + i32.const 204 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4400 + i32.const 5296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 11 + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 183 + i32.const 205 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1968 + i32.const 5328 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 0.01 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 184 + i32.const 206 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4432 + i32.const 5376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -13979,12 +16356,17 @@ if i32.const 0 i32.const 96 - i32.const 185 + i32.const 207 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4464 + i32.const 5408 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -13992,90 +16374,125 @@ if i32.const 0 i32.const 96 - i32.const 186 + i32.const 208 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4496 + i32.const 5440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 187 + i32.const 209 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4528 + i32.const 5472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1.1 + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 188 + i32.const 210 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4560 + i32.const 5504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1.1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 189 + i32.const 211 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4592 + i32.const 5536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1.1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 190 + i32.const 212 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4624 + i32.const 5568 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -1.1 + f64.const 1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 191 + i32.const 213 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4656 + i32.const 5600 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 192 + i32.const 214 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4688 + i32.const 5632 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -14083,38 +16500,53 @@ if i32.const 0 i32.const 96 - i32.const 193 + i32.const 215 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4720 + i32.const 5664 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 194 + i32.const 216 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4752 + i32.const 5696 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const -0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 195 + i32.const 217 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4784 + i32.const 5728 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat f64.const 0 f64.eq @@ -14122,652 +16554,950 @@ if i32.const 0 i32.const 96 - i32.const 196 + i32.const 218 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4816 + i32.const 2336 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 197 + i32.const 219 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4848 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 198 + i32.const 220 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4896 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 199 + i32.const 221 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4928 + i32.const 5760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 200 + i32.const 222 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4960 + i32.const 5792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 201 + i32.const 223 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4992 + i32.const 5824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 202 + i32.const 224 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5024 + i32.const 5856 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 10 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 203 + i32.const 225 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5056 + i32.const 5888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 204 + i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5088 + i32.const 5920 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 205 + i32.const 227 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5120 + i32.const 5952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.01 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 206 + i32.const 228 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5168 + i32.const 5984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 207 + i32.const 229 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5200 - call $~lib/string/parseFloat - f64.const 0 - f64.eq + i32.const 6016 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/parseFloat + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 208 + i32.const 230 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5232 + i32.const 6048 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 209 + i32.const 231 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5264 + i32.const 6080 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 210 + i32.const 232 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5296 + i32.const 6112 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 211 + i32.const 233 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5328 + i32.const 6144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 212 + i32.const 234 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5360 + i32.const 6176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 213 + i32.const 235 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5392 + i32.const 6208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.1 + f64.const 1e22 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 214 + i32.const 236 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5424 + i32.const 6240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 1e-22 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 215 + i32.const 237 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5456 + i32.const 6272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 1.e+23 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 216 + i32.const 238 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5488 + i32.const 6304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const -0 + f64.const 1e-23 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 217 + i32.const 239 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5520 + i32.const 6336 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 1.e+37 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 218 + i32.const 240 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2128 + i32.const 6368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 1e-37 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 219 + i32.const 241 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 + i32.const 6400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 1.e+38 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 220 + i32.const 242 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2608 + i32.const 6432 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 1e-38 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 221 + i32.const 243 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5552 + i32.const 6464 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + global.get $~lib/builtins/f64.EPSILON + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 222 + i32.const 244 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5584 + i32.const 6528 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + global.get $~lib/builtins/f64.MAX_VALUE + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 223 + i32.const 245 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5616 + i32.const 6608 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + global.get $~lib/builtins/f64.MIN_VALUE + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 224 + i32.const 246 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5648 + i32.const 6640 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 1.e+308 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 225 + i32.const 247 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5680 + i32.const 6688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 1 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 226 + i32.const 248 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5712 + i32.const 6832 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 227 + i32.const 249 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5744 + i32.const 6880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 228 + i32.const 250 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5776 + i32.const 6928 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 229 + i32.const 251 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5808 + i32.const 6976 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.neg + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 230 + i32.const 252 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5840 + i32.const 7024 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 0 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 231 + i32.const 253 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5872 + i32.const 7072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 232 + i32.const 254 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5904 + i32.const 7120 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 233 + i32.const 255 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5936 + i32.const 7152 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 234 + i32.const 256 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 5968 + i32.const 7200 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const inf + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 235 + i32.const 257 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6000 + i32.const 7248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e22 + f64.const inf + f64.neg f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 236 + i32.const 258 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6032 + i32.const 7296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-22 + f64.const inf f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 237 + i32.const 259 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6064 + i32.const 7344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+23 + f64.const inf f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 238 + i32.const 260 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6096 + i32.const 7392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-23 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 239 + i32.const 261 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6128 + i32.const 7424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+37 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 240 + i32.const 262 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6160 + i32.const 7472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-37 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 241 + i32.const 263 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6192 + i32.const 7520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+38 + f64.const 0 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 242 + i32.const 267 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6224 + i32.const 7712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1e-38 + global.get $std/string/Ox1p_1073 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 243 + i32.const 280 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6256 + i32.const 7904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - global.get $~lib/builtins/f64.EPSILON + global.get $std/string/Ox1_0000000000001p_1022 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 244 + i32.const 284 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6320 + i32.const 8096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.const 8256 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.const 8416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $4 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 8576 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 8736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $~lib/string/String.__concat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat global.get $~lib/builtins/f64.MAX_VALUE f64.eq @@ -14775,7091 +17505,11150 @@ if i32.const 0 i32.const 96 - i32.const 245 + i32.const 287 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6400 + i32.const 8896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - global.get $~lib/builtins/f64.MIN_VALUE + f64.const 9.753531888799502e-104 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 246 + i32.const 305 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6432 + i32.const 9008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1.e+308 + f64.const 0.5961860348131807 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 247 + i32.const 306 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6480 + i32.const 9120 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 1 + f64.const 0.18150131692180388 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 248 + i32.const 307 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6624 + i32.const 9232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 0.42070823575344535 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 249 + i32.const 308 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6672 + i32.const 9344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 0.6654686306516261 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 250 + i32.const 309 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6720 + i32.const 9456 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 0.6101852922970868 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 251 + i32.const 310 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6768 + i32.const 9568 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf - f64.neg + f64.const 0.7696695208236968 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 252 + i32.const 311 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6816 + i32.const 9680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 0.25050653222286823 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 253 + i32.const 312 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6864 + i32.const 9792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 0.2740037230228005 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 254 + i32.const 313 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6912 + i32.const 9904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 0.20723093500497428 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 255 + i32.const 314 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6944 + i32.const 10016 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 7.900280238081605 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 256 + i32.const 315 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 6992 + i32.const 10128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 98.22860653737297 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 257 + i32.const 316 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7040 + i32.const 10240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf - f64.neg + f64.const 746.894972319037 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 258 + i32.const 317 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7088 + i32.const 10352 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 1630.2683202827284 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 259 + i32.const 318 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7136 + i32.const 10464 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const inf + f64.const 46371.68629719171 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 260 + i32.const 319 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7184 + i32.const 10576 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 653780.5944497711 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 261 + i32.const 320 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7216 + i32.const 10688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 234632.43565024371 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 262 + i32.const 321 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7264 + i32.const 10800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + f64.const 97094817.16420048 + f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 263 + i32.const 322 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7312 + i32.const 10912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0 + f64.const 499690852.20518744 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 267 + i32.const 323 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7504 + i32.const 11024 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - global.get $std/string/Ox1p_1073 + f64.const 7925201200557245595648 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 280 + i32.const 324 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7696 + i32.const 11136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - global.get $std/string/Ox1_0000000000001p_1022 + f64.const 6096564585983177528398588e5 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 284 + i32.const 325 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7888 - i32.const 8048 - call $~lib/string/String.__concat - local.tee $34 - i32.const 8208 - call $~lib/string/String.__concat - local.tee $35 - i32.const 8368 - call $~lib/string/String.__concat - local.tee $36 - i32.const 8528 - call $~lib/string/String.__concat - local.tee $37 + i32.const 11248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - global.get $~lib/builtins/f64.MAX_VALUE + f64.const 4800416117477028695992383e42 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 287 + i32.const 326 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8688 + i32.const 11360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 9.753531888799502e-104 + f64.const 8524829079817968137287277e80 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 305 + i32.const 327 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8800 + i32.const 11472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.5961860348131807 + f64.const 3271239291709782092398754e243 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 306 + i32.const 328 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8912 + i32.const 11584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.18150131692180388 - f64.eq + local.tee $0 + local.get $0 + f64.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 307 + i32.const 331 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9024 + i32.const 11616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/string/parseFloat - f64.const 0.42070823575344535 + f64.const 0.1 f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 308 + i32.const 332 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9136 - call $~lib/string/parseFloat - f64.const 0.6654686306516261 - f64.eq + global.get $~lib/memory/__stack_pointer + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__concat + local.tee $2 + i32.store offset=36 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 309 - i32.const 1 + i32.const 336 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 9248 - call $~lib/string/parseFloat - f64.const 0.6101852922970868 - f64.eq + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 310 - i32.const 1 + i32.const 337 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 9360 - call $~lib/string/parseFloat - f64.const 0.7696695208236968 - f64.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 311 + i32.const 339 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9472 - call $~lib/string/parseFloat - f64.const 0.25050653222286823 - f64.eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/nullStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 312 + i32.const 341 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9584 - call $~lib/string/parseFloat - f64.const 0.2740037230228005 - f64.eq + global.get $std/string/nullStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 313 + i32.const 343 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9696 - call $~lib/string/parseFloat - f64.const 0.20723093500497428 - f64.eq + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 314 + i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9808 - call $~lib/string/parseFloat - f64.const 7.900280238081605 - f64.eq + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 315 + i32.const 346 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 9920 - call $~lib/string/parseFloat - f64.const 98.22860653737297 - f64.eq + i32.const 11712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11744 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 316 + i32.const 348 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10032 - call $~lib/string/parseFloat - f64.const 746.894972319037 - f64.eq + i32.const 11712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 317 + i32.const 349 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10144 - call $~lib/string/parseFloat - f64.const 1630.2683202827284 - f64.eq + i32.const 11776 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11808 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 318 + i32.const 351 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10256 - call $~lib/string/parseFloat - f64.const 46371.68629719171 - f64.eq + i32.const 11840 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11872 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 319 + i32.const 353 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10368 - call $~lib/string/parseFloat - f64.const 653780.5944497711 - f64.eq + i32.const 11904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 320 + i32.const 354 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10480 - call $~lib/string/parseFloat - f64.const 234632.43565024371 - f64.eq + i32.const 11904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 321 + i32.const 356 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10592 - call $~lib/string/parseFloat - f64.const 97094817.16420048 - f64.eq + i32.const 12000 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12048 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 322 + i32.const 358 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10704 - call $~lib/string/parseFloat - f64.const 499690852.20518744 - f64.eq + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 323 + i32.const 360 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10816 - call $~lib/string/parseFloat - f64.const 7925201200557245595648 - f64.eq + i32.const 12096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 324 + i32.const 361 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 10928 - call $~lib/string/parseFloat - f64.const 6096564585983177528398588e5 - f64.eq + i32.const 12096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 96 - i32.const 325 + i32.const 362 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11040 - call $~lib/string/parseFloat - f64.const 4800416117477028695992383e42 - f64.eq + i32.const 12096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 326 + i32.const 363 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11152 - call $~lib/string/parseFloat - f64.const 8524829079817968137287277e80 - f64.eq + i32.const 12096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 327 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 11264 - call $~lib/string/parseFloat - f64.const 3271239291709782092398754e243 - f64.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 328 + i32.const 364 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11376 - call $~lib/string/parseFloat - local.tee $32 - local.get $32 - f64.ne + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + global.get $std/string/nullStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 331 + i32.const 367 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11408 - call $~lib/string/parseFloat - f64.const 0.1 - f64.eq + global.get $std/string/nullStr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 332 + i32.const 369 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 11440 - call $~lib/string/String.__concat - local.tee $38 - call $~lib/rt/pure/__retain - local.set $39 - local.get $39 - i32.const 11472 - call $~lib/string/String.__eq + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 336 - i32.const 3 + i32.const 371 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $39 - i32.const 368 - call $~lib/string/String.__ne + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 96 - i32.const 337 - i32.const 3 + i32.const 372 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - i32.const 304 - i32.const 304 - call $~lib/string/String.__eq + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 96 - i32.const 339 + i32.const 373 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - global.get $std/string/nullStr - call $~lib/string/String.__ne + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 96 - i32.const 341 + i32.const 374 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/nullStr - i32.const 304 - call $~lib/string/String.__ne + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 343 + i32.const 375 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 11440 - call $~lib/string/String.__ne + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 345 + i32.const 376 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 368 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 346 + i32.const 377 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11504 - i32.const 11536 - call $~lib/string/String.__ne + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 348 + i32.const 378 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11504 - i32.const 11504 - call $~lib/string/String.__eq + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 96 - i32.const 349 + i32.const 379 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11568 - i32.const 11600 - call $~lib/string/String.__ne + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 96 - i32.const 351 + i32.const 380 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11632 - i32.const 11664 - call $~lib/string/String.__ne + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 96 - i32.const 353 + i32.const 382 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11696 - i32.const 11696 - call $~lib/string/String.__eq + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 354 + i32.const 383 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11696 - i32.const 11744 - call $~lib/string/String.__ne + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 356 + i32.const 384 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11792 - i32.const 11840 - call $~lib/string/String.__ne + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 358 + i32.const 385 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11440 - i32.const 368 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 360 + i32.const 386 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 - i32.const 368 - call $~lib/string/String.__gt + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt i32.eqz if i32.const 0 i32.const 96 - i32.const 361 + i32.const 387 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 - i32.const 11920 - call $~lib/string/String.__gte + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lt + i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 362 + i32.const 388 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 - i32.const 11472 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__gt i32.eqz + i32.eqz if i32.const 0 i32.const 96 - i32.const 363 + i32.const 389 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11888 - i32.const 11472 - call $~lib/string/String.__lt - i32.eqz + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 96 - i32.const 364 + i32.const 390 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11440 - global.get $std/string/nullStr - call $~lib/string/String.__lt - i32.eqz + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 96 - i32.const 367 + i32.const 391 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/nullStr - i32.const 11440 - call $~lib/string/String.__lt + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12224 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz i32.eqz if i32.const 0 i32.const 96 - i32.const 369 + i32.const 392 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - call $~lib/string/String.__gt + i32.const 12224 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gte i32.eqz if i32.const 0 i32.const 96 - i32.const 371 + i32.const 393 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 864 - call $~lib/string/String.__lt + i32.const 12160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12224 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__lte i32.eqz if i32.const 0 i32.const 96 - i32.const 372 + i32.const 394 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - call $~lib/string/String.__gte + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 373 + i32.const 395 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 864 - call $~lib/string/String.__lte + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 374 + i32.const 396 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - call $~lib/string/String.__lt - i32.eqz + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 375 + i32.const 397 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 864 - call $~lib/string/String.__gt - i32.eqz + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12256 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 376 + i32.const 399 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - call $~lib/string/String.__lt - i32.eqz + i32.const 12288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 377 + i32.const 400 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - call $~lib/string/String.__gt - i32.eqz + i32.const 12320 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__ne i32.eqz if i32.const 0 i32.const 96 - i32.const 378 + i32.const 402 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - call $~lib/string/String.__gte + global.get $~lib/memory/__stack_pointer + i32.const 65377 + call $~lib/string/String.fromCodePoint + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 55296 + call $~lib/string/String.fromCodePoint + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 56322 + call $~lib/string/String.fromCodePoint + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__concat + local.tee $3 + i32.store offset=40 + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__gt i32.eqz if i32.const 0 i32.const 96 - i32.const 379 - i32.const 1 + i32.const 407 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - call $~lib/string/String.__lte + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/string/String#get:length + i32.const 3 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 380 + i32.const 410 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1616 - i32.const 11952 - call $~lib/string/String.__lt + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 100 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 382 + i32.const 412 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 1616 - call $~lib/string/String.__gt + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 383 + i32.const 413 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11952 - call $~lib/string/String.__lt - i32.eqz + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 384 + i32.const 414 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 11984 - call $~lib/string/String.__gt - i32.eqz + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 385 + i32.const 415 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11952 - call $~lib/string/String.__gt + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 3 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 386 + i32.const 416 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 11984 - call $~lib/string/String.__lt + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12432 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 387 + i32.const 417 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 - call $~lib/string/String.__lt - i32.eqz + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 5 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12480 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 388 + i32.const 418 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 - call $~lib/string/String.__gt - i32.eqz + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 6 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12512 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 389 + i32.const 419 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 - call $~lib/string/String.__lte + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 7 + call $~lib/string/String#repeat + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 390 + i32.const 420 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 - call $~lib/string/String.__gte + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 391 + i32.const 422 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 12016 - call $~lib/string/String.__gte - i32.eqz + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 392 + i32.const 423 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12016 - i32.const 11952 - call $~lib/string/String.__gte + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 393 + i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11952 - i32.const 12016 - call $~lib/string/String.__lte + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 394 + i32.const 425 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1616 - i32.const 1616 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 395 + i32.const 426 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11984 - i32.const 11984 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 396 + i32.const 427 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 928 - i32.const 928 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 397 + i32.const 428 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 928 - i32.const 12048 - call $~lib/string/String.__ne + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 399 + i32.const 429 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12080 - i32.const 12080 + i32.const 12592 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12624 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 400 + i32.const 430 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12112 - i32.const 12080 - call $~lib/string/String.__ne + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 402 + i32.const 431 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 65377 - call $~lib/string/String.fromCodePoint - local.set $39 - i32.const 55296 - call $~lib/string/String.fromCodePoint - local.tee $38 - i32.const 56322 - call $~lib/string/String.fromCodePoint - local.tee $40 - call $~lib/string/String.__concat - local.tee $41 - call $~lib/rt/pure/__retain - local.set $42 - local.get $39 - local.get $42 - call $~lib/string/String.__gt + i32.const 12688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 12720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 407 - i32.const 3 + i32.const 432 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $39 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - i32.const 928 - call $~lib/string/String#get:length - i32.const 3 - i32.eq + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 12784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 410 + i32.const 433 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 100 - call $~lib/string/String#repeat - local.tee $42 - i32.const 304 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replace + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 412 + i32.const 434 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 0 - call $~lib/string/String#repeat - local.tee $41 - i32.const 304 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 413 + i32.const 436 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 1 - call $~lib/string/String#repeat - local.tee $40 - i32.const 368 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 414 + i32.const 437 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 2 - call $~lib/string/String#repeat - local.tee $38 - i32.const 11920 + i32.const 1280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 415 + i32.const 439 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 3 - call $~lib/string/String#repeat - local.tee $39 - i32.const 12192 + i32.const 12848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 416 + i32.const 440 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11472 - i32.const 4 - call $~lib/string/String#repeat - local.tee $43 - i32.const 12224 + i32.const 1280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 417 + i32.const 441 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 5 - call $~lib/string/String#repeat - local.tee $44 - i32.const 12272 + i32.const 12928 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 12896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12976 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 418 + i32.const 442 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 6 - call $~lib/string/String#repeat - local.tee $45 - i32.const 12304 + i32.const 1280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 12784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13024 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 419 + i32.const 443 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 368 - i32.const 7 - call $~lib/string/String#repeat - local.tee $46 - i32.const 12336 + i32.const 13056 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 13088 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 12784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13120 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 420 + i32.const 444 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - i32.const 304 - call $~lib/string/String#replace - local.tee $47 - i32.const 304 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 422 + i32.const 445 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - i32.const 2640 - call $~lib/string/String#replace - local.tee $48 - i32.const 2640 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 13152 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 12784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 423 + i32.const 446 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 2640 - i32.const 304 - call $~lib/string/String#replace - local.tee $49 - i32.const 304 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 13184 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13216 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 424 + i32.const 447 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 304 - i32.const 304 - call $~lib/string/String#replace - local.tee $50 - i32.const 2640 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 425 + i32.const 448 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 2608 - i32.const 2640 - call $~lib/string/String#replace - local.tee $51 - i32.const 864 + i32.const 12592 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 426 + i32.const 449 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 864 - i32.const 2640 - call $~lib/string/String#replace - local.tee $52 - i32.const 2640 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 427 + i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 1344 - i32.const 2640 - call $~lib/string/String#replace - local.tee $53 - i32.const 864 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 428 + i32.const 452 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 11472 - i32.const 11472 - call $~lib/string/String#replace - local.tee $54 - i32.const 864 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 429 + i32.const 453 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12384 - i32.const 2608 - i32.const 2640 - call $~lib/string/String#replace - local.tee $55 - i32.const 12416 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 430 + i32.const 454 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 2640 - call $~lib/string/String#replace - local.tee $56 - i32.const 12448 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 431 + i32.const 455 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12480 - i32.const 12512 - i32.const 2640 - call $~lib/string/String#replace - local.tee $57 - i32.const 12448 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 432 + i32.const 456 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 12544 - i32.const 12576 - call $~lib/string/String#replace - local.tee $58 - i32.const 12608 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 2848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 433 + i32.const 457 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 12544 - i32.const 304 - call $~lib/string/String#replace - local.tee $59 - i32.const 11472 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/string/String#replaceAll + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 434 + i32.const 458 i32.const 1 call $~lib/builtins/abort unreachable end + i32.const 13328 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 304 - i32.const 304 - i32.const 864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 13360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 call $~lib/string/String#replaceAll - local.tee $60 - i32.const 864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 436 + i32.const 461 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 2608 - i32.const 2640 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 11680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 13440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 call $~lib/string/String#replaceAll - local.tee $61 - i32.const 864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 437 + i32.const 462 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 864 - i32.const 2640 + i32.const 12400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 13472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 call $~lib/string/String#replaceAll - local.tee $62 - i32.const 12576 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 439 + i32.const 463 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12640 - i32.const 864 - i32.const 2640 + i32.const 12400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 12128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.const 13360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 call $~lib/string/String#replaceAll - local.tee $63 - i32.const 12688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 440 + i32.const 464 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 11472 - i32.const 11472 - call $~lib/string/String#replaceAll - local.tee $64 - i32.const 1072 + i32.const 13584 + global.set $std/string/str + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 441 + i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12720 - i32.const 368 - i32.const 12688 - call $~lib/string/String#replaceAll - local.tee $65 - i32.const 12768 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13632 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 442 + i32.const 469 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1072 - i32.const 11472 - i32.const 12576 - call $~lib/string/String#replaceAll - local.tee $66 - i32.const 12816 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -5 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13664 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 443 + i32.const 470 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12848 - i32.const 12880 - i32.const 12576 - call $~lib/string/String#replaceAll - local.tee $67 - i32.const 12912 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.const 7 + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13696 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 444 + i32.const 471 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 1344 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $68 - i32.const 864 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -11 + i32.const -6 + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13728 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 445 + i32.const 472 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1344 - i32.const 12944 - i32.const 12576 - call $~lib/string/String#replaceAll - local.tee $69 - i32.const 1344 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const 3 + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 446 + i32.const 473 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 12976 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $70 - i32.const 13008 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const -1 + call $~lib/string/String#slice + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 447 + i32.const 474 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11472 - i32.const 11472 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $71 - i32.const 2640 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 448 + i32.const 476 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12384 - i32.const 2608 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $72 - i32.const 13040 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13632 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 449 + i32.const 477 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - i32.const 304 - call $~lib/string/String#replaceAll - local.tee $73 - i32.const 304 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -5 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13664 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 451 + i32.const 478 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 304 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $74 - i32.const 2640 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.const 7 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13808 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 452 + i32.const 479 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 2640 - i32.const 304 - call $~lib/string/String#replaceAll - local.tee $75 - i32.const 304 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -11 + i32.const -6 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 453 + i32.const 480 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2640 - i32.const 304 - i32.const 304 - call $~lib/string/String#replaceAll - local.tee $76 - i32.const 2640 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const 3 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13856 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 454 + i32.const 481 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 864 - i32.const 2608 - call $~lib/string/String#replaceAll - local.tee $77 - i32.const 2608 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const -1 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 455 + i32.const 482 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 1312 - i32.const 2608 - call $~lib/string/String#replaceAll - local.tee $78 - i32.const 864 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 100 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 456 + i32.const 483 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 2640 - call $~lib/string/String#replaceAll - local.tee $79 - i32.const 13072 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const 4 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 457 + i32.const 484 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 304 - call $~lib/string/String#replaceAll - local.tee $80 - i32.const 864 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const -3 + call $~lib/string/String#substr + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 458 + i32.const 485 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13120 - i32.const 368 - i32.const 13152 - call $~lib/string/String#replaceAll - local.tee $81 - i32.const 13184 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 461 + i32.const 487 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 11472 - i32.const 11472 - i32.const 13232 - call $~lib/string/String#replaceAll - local.tee $82 - i32.const 13232 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -1 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 462 + i32.const 488 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12192 - i32.const 368 - i32.const 13264 - call $~lib/string/String#replaceAll - local.tee $83 - i32.const 13296 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -5 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 463 + i32.const 489 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12192 - i32.const 11920 - i32.const 13152 - call $~lib/string/String#replaceAll - local.tee $84 - i32.const 13344 + global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + i32.const 7 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13696 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 464 + i32.const 490 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13376 - local.set $85 - global.get $std/string/str - call $~lib/rt/pure/__release - local.get $85 - global.set $std/string/str global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $85 - i32.const 13376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const -11 + i32.const -6 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 468 + i32.const 491 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const -1 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $86 - i32.const 13424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const 3 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13920 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 469 + i32.const 492 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#slice - local.tee $87 - i32.const 13456 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const -1 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 470 + i32.const 493 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#slice - local.tee $88 - i32.const 13488 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + i32.const 100 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 13584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 471 + i32.const 494 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#slice - local.tee $89 - i32.const 13520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 4 + i32.const 4 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 472 + i32.const 495 i32.const 1 call $~lib/builtins/abort unreachable end global.get $std/string/str + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 4 - i32.const 3 - call $~lib/string/String#slice - local.tee $90 - i32.const 304 + i32.const -3 + call $~lib/string/String#substring + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 473 + i32.const 496 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 0 - i32.const -1 - call $~lib/string/String#slice - local.tee $91 - i32.const 13552 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 474 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $92 - i32.const 13376 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 476 - i32.const 1 + i32.const 502 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -1 + global.get $~lib/memory/__stack_pointer + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $93 - i32.const 13424 - call $~lib/string/String.__eq + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 0 + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 477 - i32.const 1 + i32.const 504 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -5 + global.get $~lib/memory/__stack_pointer + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substr - local.tee $94 - i32.const 13456 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 478 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substr - local.tee $95 - i32.const 13600 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 479 - i32.const 1 + i32.const 506 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substr - local.tee $96 - i32.const 304 - call $~lib/string/String.__eq + global.get $~lib/memory/__stack_pointer + i32.const 14128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 5888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 1 + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 0 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 14128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end i32.eqz if i32.const 0 i32.const 96 - i32.const 480 - i32.const 1 + i32.const 508 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 14128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length i32.const 3 - call $~lib/string/String#substr - local.tee $97 - i32.const 13648 - call $~lib/string/String.__eq - i32.eqz - if + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 96 - i32.const 481 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substr - local.tee $98 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 482 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substr - local.tee $99 - i32.const 13376 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 483 - i32.const 1 + i32.const 510 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substr - local.tee $100 - i32.const 13680 - call $~lib/string/String.__eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 14160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 14208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 3 + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 96 - i32.const 484 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substr - local.tee $101 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 485 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $102 - i32.const 13376 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 487 - i32.const 1 + i32.const 512 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str - i32.const -1 + global.get $~lib/memory/__stack_pointer + i32.const 14240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $103 - i32.const 13376 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length + i32.const 4 + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 96 - i32.const 488 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 end - global.get $std/string/str - i32.const -5 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#substring - local.tee $104 - i32.const 13376 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 489 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 2 - i32.const 7 - call $~lib/string/String#substring - local.tee $105 - i32.const 13488 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 490 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const -11 - i32.const -6 - call $~lib/string/String#substring - local.tee $106 - i32.const 304 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 491 - i32.const 1 + i32.const 514 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/string/str + global.get $~lib/memory/__stack_pointer + i32.const 14272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length i32.const 4 - i32.const 3 - call $~lib/string/String#substring - local.tee $107 - i32.const 13712 - call $~lib/string/String.__eq - i32.eqz - if + i32.eq + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - i32.const 96 - i32.const 492 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $std/string/str - i32.const 0 - i32.const -1 - call $~lib/string/String#substring - local.tee $108 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 493 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 end - global.get $std/string/str - i32.const 0 - i32.const 100 - call $~lib/string/String#substring - local.tee $109 - i32.const 13376 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 494 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 4 - i32.const 4 - call $~lib/string/String#substring - local.tee $110 - i32.const 304 - call $~lib/string/String.__eq - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 3 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 495 - i32.const 1 - call $~lib/builtins/abort - unreachable end - global.get $std/string/str - i32.const 4 - i32.const -3 - call $~lib/string/String#substring - local.tee $111 - i32.const 1344 - call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 496 - i32.const 1 + i32.const 516 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $112 - i32.const 304 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 14304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 + i32.const 4 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end - i32.const 0 - i32.ne - i32.eqz - if + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else i32.const 0 - i32.const 96 - i32.const 502 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 end - i32.const 304 - i32.const 304 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 504 + i32.const 518 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 304 - i32.const 1152 + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 + i32.const 3 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 1 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + else + i32.const 0 + end + if (result i32) + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.const 2 + call $~lib/array/Array<~lib/string/String>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 520 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $~lib/string/String#split + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<~lib/string/String>#get:length i32.const 0 - i32.ne + i32.eq i32.eqz if i32.const 0 i32.const 96 - i32.const 506 + i32.const 522 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13984 - i32.const 5680 - global.get $~lib/builtins/i32.MAX_VALUE + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length i32.const 1 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 13984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 508 + i32.const 524 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 13984 - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE + global.get $~lib/memory/__stack_pointer + i32.const 14128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 + i32.const 1 i32.eq if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 368 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 11440 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 510 + i32.const 526 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 14016 - i32.const 14064 - global.get $~lib/builtins/i32.MAX_VALUE + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length i32.const 3 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 11440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 512 + i32.const 528 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 14096 - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -1 call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 + i32.const 3 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 11440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 304 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 else i32.const 0 end - i32.const 0 - i32.ne i32.eqz if i32.const 0 i32.const 96 - i32.const 514 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 14128 - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const -1 call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 + local.tee $3 + i32.store offset=40 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 + i32.const 3 i32.eq if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 0 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 i32.const 304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 1 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 11648 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne if (result i32) - local.get $112 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 i32.const 2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 11440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 else i32.const 0 end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 12544 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 532 + i32.const 3 + call $~lib/builtins/abort + unreachable end i32.const 0 - i32.ne + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 516 - i32.const 3 + i32.const 537 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14160 - i32.const 1152 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 4 - i32.eq - if (result i32) - local.get $112 + i32.const 1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 368 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + i32.const 96 + i32.const 538 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 8 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16080 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 12 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16112 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 540 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne - if (result i32) - local.get $112 + i32.const 123 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 541 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 11440 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + call $~lib/builtins/abort + unreachable + end + i32.const -1000 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 542 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 12544 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + i32.const 1234 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 543 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 3 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 304 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + i32.const 12345 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 544 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 123456 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 518 - i32.const 3 + i32.const 545 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else + i32.const 1111111 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 + i32.const 96 + i32.const 546 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 11440 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 12544 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 1234567 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 520 - i32.const 3 + i32.const 547 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 0 - call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 0 - i32.eq + i32.const 12345678 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16336 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 522 - i32.const 3 + i32.const 548 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 1 - call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 - end - i32.const 0 - i32.ne + i32.const 123456789 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16384 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 524 - i32.const 3 + i32.const 549 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13984 - i32.const 1152 - i32.const 1 - call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 1 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 368 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else + i32.const 2147483646 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16432 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 550 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16480 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 526 - i32.const 3 + i32.const 551 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const 4 - call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16528 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 + i32.const 96 + i32.const 552 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 11440 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 12544 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else + i32.const -1 + i32.const 10 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16576 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 + i32.const 96 + i32.const 553 + i32.const 1 + call $~lib/builtins/abort + unreachable end i32.const 0 - i32.ne + i32.const 10 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 528 - i32.const 3 + i32.const 555 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 864 - i32.const 304 - i32.const -1 - call $~lib/string/String#split - local.set $113 - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 368 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 11440 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $113 - i32.const 12544 - call $~lib/string/String.__eq - local.set $114 - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - else - i32.const 0 - end - i32.const 0 - i32.ne + i32.const 1000 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16608 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 530 - i32.const 3 + i32.const 556 + i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 13984 - i32.const 1152 - i32.const -1 - call $~lib/string/String#split - local.set $114 - local.get $112 - call $~lib/rt/pure/__release - local.get $114 - local.set $112 - local.get $112 - call $~lib/array/Array<~lib/string/String>#get:length - i32.const 3 - i32.eq - if (result i32) - local.get $112 - i32.const 0 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 368 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else + i32.const 2147483647 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16480 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq + i32.eqz + if i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 + i32.const 96 + i32.const 557 i32.const 1 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 11440 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 - end - i32.const 0 - i32.ne - if (result i32) - local.get $112 - i32.const 2 - call $~lib/array/Array<~lib/string/String>#__get - local.tee $114 - i32.const 12544 - call $~lib/string/String.__eq - local.set $113 - local.get $114 - call $~lib/rt/pure/__release - local.get $113 - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.ne + i32.const -2147483648 + i32.const 10 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16640 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 532 - i32.const 3 + i32.const 558 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $112 - call $~lib/rt/pure/__release - i32.const 0 + global.get $~lib/builtins/u32.MAX_VALUE i32.const 10 - call $~lib/util/number/itoa32 - local.tee $112 - i32.const 1552 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 537 + i32.const 559 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $114 - i32.const 1616 + i32.const 0 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 538 + i32.const 563 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $113 - i32.const 15936 + i32.const 1 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 539 + i32.const 564 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $115 - i32.const 15968 + i32.const 8 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16080 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 540 + i32.const 565 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $116 - i32.const 928 + i32.const 12 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 541 + i32.const 566 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1000 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $117 - i32.const 16000 + i32.const 123 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 542 + i32.const 567 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1234 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $118 - i32.const 12080 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 543 + i32.const 568 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 12345 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $119 - i32.const 16032 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16800 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 544 + i32.const 569 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 123456 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $120 - i32.const 16064 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16832 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 545 + i32.const 570 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1111111 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $121 - i32.const 16096 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 546 + i32.const 571 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 1234567 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $122 - i32.const 16144 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 547 + i32.const 572 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 12345678 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $123 - i32.const 16192 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16928 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 548 + i32.const 573 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 123456789 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $124 - i32.const 16240 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16960 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 549 + i32.const 574 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2147483646 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $125 - i32.const 16288 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 550 + i32.const 575 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2147483647 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $126 - i32.const 16336 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17056 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 551 + i32.const 576 i32.const 1 call $~lib/builtins/abort unreachable end i32.const -2147483648 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $127 - i32.const 16384 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17104 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 552 + i32.const 577 i32.const 1 call $~lib/builtins/abort unreachable end i32.const -1 - i32.const 10 - call $~lib/util/number/itoa32 - local.tee $128 - i32.const 16432 + i32.const 16 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17152 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 553 + i32.const 578 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $129 - i32.const 1552 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 555 + i32.const 580 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1000 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $130 - i32.const 16464 + i32.const -4096 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16144 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 556 + i32.const 581 i32.const 1 call $~lib/builtins/abort unreachable end i32.const 2147483647 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $131 - i32.const 16336 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 557 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const -2147483648 - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $132 - i32.const 16496 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17056 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 558 + i32.const 582 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/u32.MAX_VALUE - i32.const 10 - call $~lib/util/number/utoa32 - local.tee $133 - i32.const 16544 + i32.const -2147483647 + i32.const 16 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17200 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 559 + i32.const 583 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const -268435455 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $134 - i32.const 1552 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 563 + i32.const 584 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 + i32.const -2147483648 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $135 - i32.const 1616 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 564 + i32.const 585 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 8 + i32.const -2147483648 i32.const 16 - call $~lib/util/number/utoa32 - local.tee $136 - i32.const 15936 + call $~lib/util/number/itoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 565 + i32.const 586 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 16 + i32.const 0 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $137 - i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 566 + i32.const 590 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123 - i32.const 16 + i32.const 1 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $138 - i32.const 16592 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 567 + i32.const 591 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234 - i32.const 16 + i32.const 3 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $139 - i32.const 16624 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12192 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 568 + i32.const 592 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345 - i32.const 16 + i32.const 7 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $140 - i32.const 16656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 569 + i32.const 593 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456 - i32.const 16 + i32.const 14 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $141 - i32.const 16688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 570 + i32.const 594 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1111111 - i32.const 16 + i32.const 29 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $142 - i32.const 16720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17408 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 571 + i32.const 595 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1234567 - i32.const 16 + i32.const 59 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $143 - i32.const 16752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 572 + i32.const 596 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 12345678 - i32.const 16 + i32.const 4095 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $144 - i32.const 16784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 573 + i32.const 597 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 123456789 - i32.const 16 + i32.const 33554431 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $145 - i32.const 16816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17520 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 574 + i32.const 598 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483646 - i32.const 16 + i32.const -12 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $146 - i32.const 16864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17600 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 575 + i32.const 599 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 + i32.const -4 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $147 - i32.const 16912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17696 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 576 + i32.const 600 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 + i32.const -2 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $148 - i32.const 16960 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 577 + i32.const 601 i32.const 1 call $~lib/builtins/abort unreachable end i32.const -1 - i32.const 16 + i32.const 2 call $~lib/util/number/utoa32 - local.tee $149 - i32.const 17008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 578 + i32.const 602 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 16 + i32.const -2047 + i32.const 2 call $~lib/util/number/itoa32 - local.tee $150 - i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 580 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4096 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $151 - i32.const 16000 + i32.const -1 + i32.const 3 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18032 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 581 + i32.const 608 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $152 - i32.const 16912 + i32.const -1 + i32.const 4 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18096 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 582 + i32.const 609 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483647 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $153 - i32.const 17056 + i32.const -1 + i32.const 5 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18160 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 583 + i32.const 610 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -268435455 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $154 - i32.const 17104 + i32.const -1 + i32.const 8 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 584 + i32.const 611 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $155 - i32.const 17152 + i32.const -1 + i32.const 11 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18256 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 585 + i32.const 612 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2147483648 - i32.const 16 - call $~lib/util/number/itoa32 - local.tee $156 - i32.const 17152 + i32.const -1 + i32.const 15 + call $~lib/util/number/utoa32 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 586 + i32.const 613 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 + i32.const -1 + i32.const 17 call $~lib/util/number/utoa32 - local.tee $157 - i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18352 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 590 + i32.const 614 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 2 + i32.const -1 + i32.const 21 call $~lib/util/number/utoa32 - local.tee $158 - i32.const 1616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 591 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 3 - i32.const 2 + i32.const -1 + i32.const 27 call $~lib/util/number/utoa32 - local.tee $159 - i32.const 11984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18448 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 592 + i32.const 616 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 7 - i32.const 2 + i32.const -1 + i32.const 32 call $~lib/util/number/utoa32 - local.tee $160 - i32.const 17200 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18496 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 593 + i32.const 617 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 14 - i32.const 2 + i32.const -1 + i32.const 36 call $~lib/util/number/utoa32 - local.tee $161 - i32.const 17232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 594 + i32.const 618 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 29 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $162 - i32.const 17264 + i64.const 0 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 595 + i32.const 622 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 59 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $163 - i32.const 17296 + i64.const 12 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16112 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 596 + i32.const 623 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 4095 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $164 - i32.const 17328 + i64.const 123 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 597 + i32.const 624 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 33554431 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $165 - i32.const 17376 + i64.const 1234 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 598 + i32.const 625 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -12 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $166 - i32.const 17456 + i64.const 12345 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 599 + i32.const 626 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -4 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $167 - i32.const 17552 + i64.const 123456 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16208 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 600 + i32.const 627 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $168 - i32.const 17648 + i64.const 1234567 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16288 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 601 + i32.const 628 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 2 - call $~lib/util/number/utoa32 - local.tee $169 - i32.const 17744 + i64.const 99999999 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18592 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 602 + i32.const 629 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -2047 - i32.const 2 - call $~lib/util/number/itoa32 - local.tee $170 - i32.const 17840 + i64.const 100000000 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18640 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 604 + i32.const 630 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 3 - call $~lib/util/number/utoa32 - local.tee $171 - i32.const 17888 + i64.const 4294967295 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 608 + i32.const 631 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 4 - call $~lib/util/number/utoa32 - local.tee $172 - i32.const 17952 + i64.const 4294967297 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 609 + i32.const 632 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 5 - call $~lib/util/number/utoa32 - local.tee $173 - i32.const 18016 + i64.const 68719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 610 + i32.const 633 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 8 - call $~lib/util/number/utoa32 - local.tee $174 - i32.const 18064 + i64.const 868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 611 + i32.const 634 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 11 - call $~lib/util/number/utoa32 - local.tee $175 - i32.const 18112 + i64.const 8687194767350 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18832 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 612 + i32.const 635 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 15 - call $~lib/util/number/utoa32 - local.tee $176 - i32.const 18160 + i64.const 86871947673501 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 613 + i32.const 636 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 17 - call $~lib/util/number/utoa32 - local.tee $177 - i32.const 18208 + i64.const 999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18928 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 614 + i32.const 637 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 21 - call $~lib/util/number/utoa32 - local.tee $178 - i32.const 18256 + i64.const 9999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18992 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 615 + i32.const 638 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 27 - call $~lib/util/number/utoa32 - local.tee $179 - i32.const 18304 + i64.const 19999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19056 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 616 + i32.const 639 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 32 - call $~lib/util/number/utoa32 - local.tee $180 - i32.const 18352 + i64.const 129999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19120 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 617 + i32.const 640 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const -1 - i32.const 36 - call $~lib/util/number/utoa32 - local.tee $181 - i32.const 18400 + i64.const 1239999868719476735 + i32.const 10 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19184 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 618 + i32.const 641 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 + global.get $~lib/builtins/u64.MAX_VALUE i32.const 10 call $~lib/util/number/utoa64 - local.tee $182 - i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 622 + i32.const 642 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 + i64.const 0 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $183 - i32.const 15968 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 623 + i32.const 644 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123 + i64.const -1234 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $184 - i32.const 928 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19312 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 624 + i32.const 645 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 + i64.const 4294967295 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $185 - i32.const 12080 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 625 + i32.const 646 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12345 + i64.const 4294967297 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $186 - i32.const 16032 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 626 + i32.const 647 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 123456 + i64.const -4294967295 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $187 - i32.const 16064 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 627 + i32.const 648 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234567 + i64.const 68719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $188 - i32.const 16144 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 18736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 628 + i32.const 649 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 99999999 + i64.const -68719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $189 - i32.const 18448 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 629 + i32.const 650 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 100000000 + i64.const -868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $190 - i32.const 18496 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 630 + i32.const 651 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 + i64.const -999868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $191 - i32.const 16544 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19488 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 631 + i32.const 652 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 + i64.const -19999868719476735 i32.const 10 - call $~lib/util/number/utoa64 - local.tee $192 - i32.const 18544 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 632 + i32.const 653 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 + global.get $~lib/builtins/i64.MAX_VALUE i32.const 10 - call $~lib/util/number/utoa64 - local.tee $193 - i32.const 18592 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 633 + i32.const 654 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 868719476735 + global.get $~lib/builtins/i64.MIN_VALUE i32.const 10 - call $~lib/util/number/utoa64 - local.tee $194 - i32.const 18640 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19680 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 634 + i32.const 655 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8687194767350 - i32.const 10 + i64.const 0 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $195 - i32.const 18688 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 635 + i32.const 659 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 86871947673501 - i32.const 10 + i64.const 1 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $196 - i32.const 18736 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 636 + i32.const 660 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 999868719476735 - i32.const 10 + i64.const 12 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $197 - i32.const 18784 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 12752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 637 + i32.const 661 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9999868719476735 - i32.const 10 + i64.const 1234 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $198 - i32.const 18848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 638 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 19999868719476735 - i32.const 10 + i64.const 1111111 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $199 - i32.const 18912 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 16864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 639 + i32.const 663 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 129999868719476735 - i32.const 10 + i64.const 8589934591 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $200 - i32.const 18976 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19744 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 640 + i32.const 664 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1239999868719476735 - i32.const 10 + i64.const 5942249508321 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $201 - i32.const 19040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 641 + i32.const 665 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/u64.MAX_VALUE - i32.const 10 + i64.const 76310993685985 + i32.const 16 call $~lib/util/number/utoa64 - local.tee $202 - i32.const 19104 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19840 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 642 + i32.const 666 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $203 - i32.const 1552 + i64.const 920735923817967 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 644 + i32.const 667 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1234 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $204 - i32.const 19168 + i64.const 9927935178558959 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19936 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 645 + i32.const 668 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $205 - i32.const 16544 + i64.const 81985529216486895 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 19984 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 646 + i32.const 669 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967297 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $206 - i32.const 18544 + i64.const 1311768467463790320 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20048 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 647 + i32.const 670 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -4294967295 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $207 - i32.const 19200 + i64.const 9223372036854775807 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20112 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 648 + i32.const 671 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 68719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $208 - i32.const 18592 + i64.const -1 + i32.const 16 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 649 + i32.const 672 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -68719476735 - i32.const 10 + i64.const -9223372036854775807 + i32.const 16 call $~lib/util/number/itoa64 - local.tee $209 - i32.const 19248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20240 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 650 + i32.const 674 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -868719476735 - i32.const 10 + i64.const -9223372036854775808 + i32.const 16 call $~lib/util/number/itoa64 - local.tee $210 - i32.const 19296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 651 + i32.const 675 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -999868719476735 - i32.const 10 + i64.const -9223372036854775808 + i32.const 16 call $~lib/util/number/itoa64 - local.tee $211 - i32.const 19344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 652 + i32.const 676 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -19999868719476735 - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $212 - i32.const 19408 + i64.const 0 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1760 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 653 + i32.const 680 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MAX_VALUE - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $213 - i32.const 19472 + i64.const 1 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 654 + i32.const 681 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/i64.MIN_VALUE - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $214 - i32.const 19536 + i64.const 7 + i32.const 2 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17344 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 655 + i32.const 682 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 16 + i64.const 14 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $215 - i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 659 + i32.const 683 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 16 + i64.const 59 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $216 - i32.const 1616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17440 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 660 + i32.const 684 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 12 - i32.const 16 + i64.const 4095 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $217 - i32.const 12544 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17472 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 661 + i32.const 685 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1234 - i32.const 16 + i64.const 4294967295 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $218 - i32.const 16624 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 17888 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 662 + i32.const 686 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1111111 - i32.const 16 + i64.const 562949953421311 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $219 - i32.const 16720 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 663 + i32.const 687 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 8589934591 - i32.const 16 + i64.const -1 + i32.const 2 call $~lib/util/number/utoa64 - local.tee $220 - i32.const 19600 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20496 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 664 + i32.const 688 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 5942249508321 - i32.const 16 - call $~lib/util/number/utoa64 - local.tee $221 - i32.const 19648 + i64.const -8589934591 + i32.const 2 + call $~lib/util/number/itoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20656 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 665 + i32.const 690 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 76310993685985 - i32.const 16 + i64.const -1 + i32.const 3 call $~lib/util/number/utoa64 - local.tee $222 - i32.const 19696 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 666 + i32.const 694 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 920735923817967 - i32.const 16 + i64.const -1 + i32.const 4 call $~lib/util/number/utoa64 - local.tee $223 - i32.const 19744 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20864 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 667 + i32.const 695 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9927935178558959 - i32.const 16 + i64.const -1 + i32.const 5 call $~lib/util/number/utoa64 - local.tee $224 - i32.const 19792 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 20960 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 668 + i32.const 696 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 81985529216486895 - i32.const 16 + i64.const -1 + i32.const 8 call $~lib/util/number/utoa64 - local.tee $225 - i32.const 19840 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 669 + i32.const 697 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1311768467463790320 - i32.const 16 + i64.const -1 + i32.const 11 call $~lib/util/number/utoa64 - local.tee $226 - i32.const 19904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21104 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 670 + i32.const 698 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 9223372036854775807 - i32.const 16 + i64.const -1 + i32.const 15 call $~lib/util/number/utoa64 - local.tee $227 - i32.const 19968 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21168 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 671 + i32.const 699 i32.const 1 call $~lib/builtins/abort unreachable end i64.const -1 - i32.const 16 + i32.const 17 call $~lib/util/number/utoa64 - local.tee $228 - i32.const 20032 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 672 + i32.const 700 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775807 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $229 - i32.const 20096 + i64.const -1 + i32.const 21 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21296 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 674 + i32.const 701 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $230 - i32.const 20160 + i64.const -1 + i32.const 27 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 675 + i32.const 702 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -9223372036854775808 - i32.const 16 - call $~lib/util/number/itoa64 - local.tee $231 - i32.const 20160 + i64.const -1 + i32.const 32 + call $~lib/util/number/utoa64 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21408 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 676 + i32.const 703 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 0 - i32.const 2 + i64.const -1 + i32.const 36 call $~lib/util/number/utoa64 - local.tee $232 - i32.const 1552 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21456 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 680 + i32.const 704 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $233 - i32.const 1616 + f64.const 0 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 681 + i32.const 707 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 7 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $234 - i32.const 17200 + f64.const -0 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 682 + i32.const 708 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 14 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $235 - i32.const 17232 + f64.const nan:0x8000000000000 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 5952 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 683 + i32.const 709 i32.const 1 call $~lib/builtins/abort unreachable - end - i64.const 59 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $236 - i32.const 17296 + end + f64.const inf + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 684 + i32.const 710 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4095 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $237 - i32.const 17328 + f64.const inf + f64.neg + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 7248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 685 + i32.const 711 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 4294967295 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $238 - i32.const 17744 + global.get $~lib/builtins/f64.EPSILON + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 6464 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 686 + i32.const 712 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const 562949953421311 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $239 - i32.const 20224 + global.get $~lib/builtins/f64.EPSILON + f64.neg + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22560 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 687 + i32.const 713 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 2 - call $~lib/util/number/utoa64 - local.tee $240 - i32.const 20352 + global.get $~lib/builtins/f64.MAX_VALUE + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 6528 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 688 + i32.const 714 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -8589934591 - i32.const 2 - call $~lib/util/number/itoa64 - local.tee $241 - i32.const 20512 + global.get $~lib/builtins/f64.MAX_VALUE + f64.neg + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22624 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 690 + i32.const 715 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 3 - call $~lib/util/number/utoa64 - local.tee $242 - i32.const 20608 + f64.const 4185580496821356722454785e274 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22704 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 694 + i32.const 716 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 4 - call $~lib/util/number/utoa64 - local.tee $243 - i32.const 20720 + f64.const 2.2250738585072014e-308 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22768 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 695 + i32.const 717 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 5 - call $~lib/util/number/utoa64 - local.tee $244 - i32.const 20816 + f64.const 4.940656e-318 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22848 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 696 + i32.const 720 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 8 - call $~lib/util/number/utoa64 - local.tee $245 - i32.const 20896 + f64.const 9060801153433600 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22896 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 697 + i32.const 721 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 11 - call $~lib/util/number/utoa64 - local.tee $246 - i32.const 20960 + f64.const 4708356024711512064 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 22960 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 698 + i32.const 722 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 15 - call $~lib/util/number/utoa64 - local.tee $247 - i32.const 21024 + f64.const 9409340012568248320 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23024 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 699 + i32.const 723 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 17 - call $~lib/util/number/utoa64 - local.tee $248 - i32.const 21088 + f64.const 5e-324 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 6608 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 700 + i32.const 724 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 21 - call $~lib/util/number/utoa64 - local.tee $249 - i32.const 21152 + f64.const 1 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23088 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 701 + i32.const 730 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 27 - call $~lib/util/number/utoa64 - local.tee $250 - i32.const 21216 + f64.const 0.1 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 702 + i32.const 731 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 32 - call $~lib/util/number/utoa64 - local.tee $251 - i32.const 21264 + f64.const -1 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23120 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 703 + i32.const 732 i32.const 1 call $~lib/builtins/abort unreachable end - i64.const -1 - i32.const 36 - call $~lib/util/number/utoa64 - local.tee $252 - i32.const 21312 + f64.const -0.1 + call $~lib/util/number/dtoa + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23152 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 704 + i32.const 733 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0 + f64.const 1e6 call $~lib/util/number/dtoa - local.tee $253 - i32.const 21360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23184 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 707 + i32.const 735 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0 + f64.const 1e-06 call $~lib/util/number/dtoa - local.tee $254 - i32.const 21360 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 708 + i32.const 736 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const nan:0x8000000000000 + f64.const -1e6 call $~lib/util/number/dtoa - local.tee $255 - i32.const 5744 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 709 + i32.const 737 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf + f64.const -1e-06 call $~lib/util/number/dtoa - local.tee $256 - i32.const 21392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23328 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 710 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf - f64.neg + f64.const 1e7 call $~lib/util/number/dtoa - local.tee $257 - i32.const 7040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23376 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 711 + i32.const 739 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON + f64.const 1e-07 call $~lib/util/number/dtoa - local.tee $258 - i32.const 6256 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23424 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 712 + i32.const 740 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.EPSILON - f64.neg + f64.const 1.e+308 call $~lib/util/number/dtoa - local.tee $259 - i32.const 22416 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 3824 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 713 + i32.const 742 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE + f64.const -1.e+308 call $~lib/util/number/dtoa - local.tee $260 - i32.const 6320 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23456 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 714 + i32.const 743 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/builtins/f64.MAX_VALUE - f64.neg + f64.const inf call $~lib/util/number/dtoa - local.tee $261 - i32.const 22480 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 715 + i32.const 744 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4185580496821356722454785e274 + f64.const -inf call $~lib/util/number/dtoa - local.tee $262 - i32.const 22560 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 7248 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 716 + i32.const 745 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 2.2250738585072014e-308 + f64.const 1e-308 call $~lib/util/number/dtoa - local.tee $263 - i32.const 22624 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 717 + i32.const 746 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4.940656e-318 + f64.const -1e-308 call $~lib/util/number/dtoa - local.tee $264 - i32.const 22704 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23536 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 720 + i32.const 747 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9060801153433600 + f64.const 1e-323 call $~lib/util/number/dtoa - local.tee $265 - i32.const 22752 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23584 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 721 + i32.const 748 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 4708356024711512064 + f64.const -1e-323 call $~lib/util/number/dtoa - local.tee $266 - i32.const 22816 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 722 + i32.const 749 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 9409340012568248320 + f64.const 0 call $~lib/util/number/dtoa - local.tee $267 - i32.const 22880 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 21504 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 723 + i32.const 750 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 5e-324 + f64.const 4294967272 call $~lib/util/number/dtoa - local.tee $268 - i32.const 6400 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23664 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 724 + i32.const 752 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1 + f64.const 1.2312145673456234e-08 call $~lib/util/number/dtoa - local.tee $269 - i32.const 22944 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23712 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 730 + i32.const 753 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 0.1 + f64.const 555555555.5555556 call $~lib/util/number/dtoa - local.tee $270 - i32.const 3328 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23776 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 731 + i32.const 755 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1 + f64.const 0.9999999999999999 call $~lib/util/number/dtoa - local.tee $271 - i32.const 22976 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23840 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 732 + i32.const 756 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -0.1 + f64.const 1 call $~lib/util/number/dtoa - local.tee $272 - i32.const 23008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23088 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 733 + i32.const 757 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e6 + f64.const 12.34 call $~lib/util/number/dtoa - local.tee $273 - i32.const 23040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23904 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 735 + i32.const 758 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-06 + f64.const 1 + f64.const 3 + f64.div call $~lib/util/number/dtoa - local.tee $274 - i32.const 23088 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 23936 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 736 + i32.const 760 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e6 + f64.const 1234e17 call $~lib/util/number/dtoa - local.tee $275 - i32.const 23136 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24000 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 737 + i32.const 761 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1e-06 + f64.const 1234e18 call $~lib/util/number/dtoa - local.tee $276 - i32.const 23184 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24080 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 738 + i32.const 762 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e7 + f64.const 2.71828 call $~lib/util/number/dtoa - local.tee $277 - i32.const 23232 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24128 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 739 + i32.const 763 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-07 + f64.const 0.0271828 call $~lib/util/number/dtoa - local.tee $278 - i32.const 23280 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24176 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 740 + i32.const 764 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1.e+308 + f64.const 271.828 call $~lib/util/number/dtoa - local.tee $279 - i32.const 3616 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24224 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 742 + i32.const 765 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -1.e+308 + f64.const 1.1e+128 call $~lib/util/number/dtoa - local.tee $280 - i32.const 23312 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24272 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 743 + i32.const 766 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const inf + f64.const 1.1e-64 call $~lib/util/number/dtoa - local.tee $281 - i32.const 21392 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24320 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 744 + i32.const 767 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const -inf + f64.const 0.000035689 call $~lib/util/number/dtoa - local.tee $282 - i32.const 7040 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 24368 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 call $~lib/string/String.__eq i32.eqz if i32.const 0 i32.const 96 - i32.const 745 + i32.const 768 i32.const 1 call $~lib/builtins/abort unreachable end - f64.const 1e-308 - call $~lib/util/number/dtoa - local.tee $283 - i32.const 23360 - call $~lib/string/String.__eq + i32.const 0 + global.set $std/string/str + 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 44 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.fromCharCode (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 0 + i32.gt_s + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $2 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + local.get $3 + local.get $0 + i32.store16 + local.get $2 + if + local.get $3 + local.get $1 + i32.store16 offset=2 + end + 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 $~lib/string/String.fromCodePoint (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.const 1114111 + i32.le_u i32.eqz if i32.const 0 - i32.const 96 - i32.const 746 - i32.const 1 + i32.const 800 + i32.const 33 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const -1e-308 - call $~lib/util/number/dtoa - local.tee $284 - i32.const 23392 - call $~lib/string/String.__eq + local.get $0 + i32.const 65535 + i32.gt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2 + local.get $1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $1 i32.eqz if - i32.const 0 - i32.const 96 - i32.const 747 + local.get $2 + local.get $0 + i32.store16 + else + local.get $0 + i32.const 65536 + i32.sub + local.set $0 + local.get $0 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + local.set $3 + local.get $0 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + local.set $4 + local.get $2 + local.get $4 + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + 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/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 $~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 4 + 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 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 36 + i32.gt_s end - f64.const 1e-323 - call $~lib/util/number/dtoa - local.tee $285 - i32.const 23440 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 96 - i32.const 748 - i32.const 1 + i32.const 14336 + i32.const 14464 + i32.const 373 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const -1e-323 - call $~lib/util/number/dtoa - local.tee $286 - i32.const 23472 - call $~lib/string/String.__eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 96 - i32.const 749 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1760 + 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 - f64.const 0 - call $~lib/util/number/dtoa - local.tee $287 - i32.const 21360 - call $~lib/string/String.__eq - i32.eqz + local.get $0 + i32.const 31 + i32.shr_u + local.set $2 + local.get $2 if i32.const 0 - i32.const 96 - i32.const 750 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.sub + local.set $0 end - f64.const 4294967272 - call $~lib/util/number/dtoa - local.tee $288 - i32.const 23520 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.eq if - i32.const 0 - i32.const 96 - i32.const 752 + 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 - call $~lib/builtins/abort - unreachable - end - f64.const 1.2312145673456234e-08 - call $~lib/util/number/dtoa - local.tee $289 - i32.const 23568 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 753 + i32.shl i32.const 1 - call $~lib/builtins/abort - unreachable - end - f64.const 555555555.5555556 - call $~lib/util/number/dtoa - local.tee $290 - i32.const 23632 - call $~lib/string/String.__eq - i32.eqz - if + 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 96 - i32.const 755 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - f64.const 0.9999999999999999 - call $~lib/util/number/dtoa - local.tee $291 - i32.const 23696 - call $~lib/string/String.__eq - i32.eqz + local.get $2 if - i32.const 0 - i32.const 96 - i32.const 756 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 end - f64.const 1 - call $~lib/util/number/dtoa - local.tee $292 - i32.const 22944 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 757 + 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/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 4 + 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 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 36 + i32.gt_s end - f64.const 12.34 - call $~lib/util/number/dtoa - local.tee $293 - i32.const 23760 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 96 - i32.const 758 - i32.const 1 + i32.const 14336 + i32.const 14464 + i32.const 350 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 1 - f64.const 3 - f64.div - call $~lib/util/number/dtoa - local.tee $294 - i32.const 23792 - call $~lib/string/String.__eq + local.get $0 i32.eqz if - i32.const 0 - i32.const 96 - i32.const 760 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1760 + 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 - f64.const 1234e17 - call $~lib/util/number/dtoa - local.tee $295 - i32.const 23856 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + 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 96 - i32.const 761 i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - f64.const 1234e18 - call $~lib/util/number/dtoa - local.tee $296 - i32.const 23936 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 762 + 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/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 4 + 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 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 36 + i32.gt_s end - f64.const 2.71828 - call $~lib/util/number/dtoa - local.tee $297 - i32.const 23984 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 96 - i32.const 763 - i32.const 1 + i32.const 14336 + i32.const 14464 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 0.0271828 - call $~lib/util/number/dtoa - local.tee $298 - i32.const 24032 - call $~lib/string/String.__eq + local.get $0 + i64.const 0 + i64.ne i32.eqz if - i32.const 0 - i32.const 96 - i32.const 764 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1760 + 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 - f64.const 271.828 - call $~lib/util/number/dtoa - local.tee $299 - i32.const 24080 - call $~lib/string/String.__eq - i32.eqz + local.get $1 + i32.const 10 + i32.eq if - i32.const 0 - i32.const 96 - i32.const 765 - i32.const 1 - call $~lib/builtins/abort - unreachable + 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 - f64.const 1.1e+128 - call $~lib/util/number/dtoa - local.tee $300 - i32.const 24128 - call $~lib/string/String.__eq - i32.eqz - if - i32.const 0 - i32.const 96 - i32.const 766 + local.get $2 + 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/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 4 + 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 - call $~lib/builtins/abort - unreachable + else + local.get $1 + i32.const 36 + i32.gt_s end - f64.const 1.1e-64 - call $~lib/util/number/dtoa - local.tee $301 - i32.const 24176 - call $~lib/string/String.__eq - i32.eqz if - i32.const 0 - i32.const 96 - i32.const 767 - i32.const 1 + i32.const 14336 + i32.const 14464 + i32.const 431 + i32.const 5 call $~lib/builtins/abort unreachable end - f64.const 0.000035689 - call $~lib/util/number/dtoa - local.tee $302 - i32.const 24224 - call $~lib/string/String.__eq + local.get $0 + i64.const 0 + i64.ne i32.eqz if - i32.const 0 - i32.const 96 - i32.const 768 - i32.const 1 - call $~lib/builtins/abort - unreachable + i32.const 1760 + 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 - global.get $std/string/str - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $36 - call $~lib/rt/pure/__release - local.get $37 - call $~lib/rt/pure/__release - local.get $38 - call $~lib/rt/pure/__release - local.get $39 - call $~lib/rt/pure/__release - local.get $40 - call $~lib/rt/pure/__release - local.get $41 - call $~lib/rt/pure/__release - local.get $42 - call $~lib/rt/pure/__release - local.get $43 - call $~lib/rt/pure/__release - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $46 - call $~lib/rt/pure/__release - local.get $47 - call $~lib/rt/pure/__release - local.get $48 - call $~lib/rt/pure/__release - local.get $49 - call $~lib/rt/pure/__release - local.get $50 - call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $53 - call $~lib/rt/pure/__release - local.get $54 - call $~lib/rt/pure/__release - local.get $55 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release - local.get $57 - call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $59 - call $~lib/rt/pure/__release - local.get $60 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release - local.get $75 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $77 - call $~lib/rt/pure/__release - local.get $78 - call $~lib/rt/pure/__release - local.get $79 - call $~lib/rt/pure/__release - local.get $80 - call $~lib/rt/pure/__release - local.get $81 - call $~lib/rt/pure/__release - local.get $82 - call $~lib/rt/pure/__release - local.get $83 - call $~lib/rt/pure/__release - local.get $84 - call $~lib/rt/pure/__release - local.get $85 - call $~lib/rt/pure/__release - local.get $86 - call $~lib/rt/pure/__release - local.get $87 - call $~lib/rt/pure/__release - local.get $88 - call $~lib/rt/pure/__release - local.get $89 - call $~lib/rt/pure/__release - local.get $90 - call $~lib/rt/pure/__release - local.get $91 - call $~lib/rt/pure/__release - local.get $92 - call $~lib/rt/pure/__release - local.get $93 - call $~lib/rt/pure/__release - local.get $94 - call $~lib/rt/pure/__release - local.get $95 - call $~lib/rt/pure/__release - local.get $96 - call $~lib/rt/pure/__release - local.get $97 - call $~lib/rt/pure/__release - local.get $98 - call $~lib/rt/pure/__release - local.get $99 - call $~lib/rt/pure/__release - local.get $100 - call $~lib/rt/pure/__release - local.get $101 - call $~lib/rt/pure/__release - local.get $102 - call $~lib/rt/pure/__release - local.get $103 - call $~lib/rt/pure/__release - local.get $104 - call $~lib/rt/pure/__release - local.get $105 - call $~lib/rt/pure/__release - local.get $106 - call $~lib/rt/pure/__release - local.get $107 - call $~lib/rt/pure/__release - local.get $108 - call $~lib/rt/pure/__release - local.get $109 - call $~lib/rt/pure/__release - local.get $110 - call $~lib/rt/pure/__release - local.get $111 - call $~lib/rt/pure/__release - local.get $112 - call $~lib/rt/pure/__release - local.get $113 - call $~lib/rt/pure/__release - local.get $114 - call $~lib/rt/pure/__release - local.get $115 - call $~lib/rt/pure/__release - local.get $116 - call $~lib/rt/pure/__release - local.get $117 - call $~lib/rt/pure/__release - local.get $118 - call $~lib/rt/pure/__release - local.get $119 - call $~lib/rt/pure/__release - local.get $120 - call $~lib/rt/pure/__release - local.get $121 - call $~lib/rt/pure/__release - local.get $122 - call $~lib/rt/pure/__release - local.get $123 - call $~lib/rt/pure/__release - local.get $124 - call $~lib/rt/pure/__release - local.get $125 - call $~lib/rt/pure/__release - local.get $126 - call $~lib/rt/pure/__release - local.get $127 - call $~lib/rt/pure/__release - local.get $128 - call $~lib/rt/pure/__release - local.get $129 - call $~lib/rt/pure/__release - local.get $130 - call $~lib/rt/pure/__release - local.get $131 - call $~lib/rt/pure/__release - local.get $132 - call $~lib/rt/pure/__release - local.get $133 - call $~lib/rt/pure/__release - local.get $134 - call $~lib/rt/pure/__release - local.get $135 - call $~lib/rt/pure/__release - local.get $136 - call $~lib/rt/pure/__release - local.get $137 - call $~lib/rt/pure/__release - local.get $138 - call $~lib/rt/pure/__release - local.get $139 - call $~lib/rt/pure/__release - local.get $140 - call $~lib/rt/pure/__release - local.get $141 - call $~lib/rt/pure/__release - local.get $142 - call $~lib/rt/pure/__release - local.get $143 - call $~lib/rt/pure/__release - local.get $144 - call $~lib/rt/pure/__release - local.get $145 - call $~lib/rt/pure/__release - local.get $146 - call $~lib/rt/pure/__release - local.get $147 - call $~lib/rt/pure/__release - local.get $148 - call $~lib/rt/pure/__release - local.get $149 - call $~lib/rt/pure/__release - local.get $150 - call $~lib/rt/pure/__release - local.get $151 - call $~lib/rt/pure/__release - local.get $152 - call $~lib/rt/pure/__release - local.get $153 - call $~lib/rt/pure/__release - local.get $154 - call $~lib/rt/pure/__release - local.get $155 - call $~lib/rt/pure/__release - local.get $156 - call $~lib/rt/pure/__release - local.get $157 - call $~lib/rt/pure/__release - local.get $158 - call $~lib/rt/pure/__release - local.get $159 - call $~lib/rt/pure/__release - local.get $160 - call $~lib/rt/pure/__release - local.get $161 - call $~lib/rt/pure/__release - local.get $162 - call $~lib/rt/pure/__release - local.get $163 - call $~lib/rt/pure/__release - local.get $164 - call $~lib/rt/pure/__release - local.get $165 - call $~lib/rt/pure/__release - local.get $166 - call $~lib/rt/pure/__release - local.get $167 - call $~lib/rt/pure/__release - local.get $168 - call $~lib/rt/pure/__release - local.get $169 - call $~lib/rt/pure/__release - local.get $170 - call $~lib/rt/pure/__release - local.get $171 - call $~lib/rt/pure/__release - local.get $172 - call $~lib/rt/pure/__release - local.get $173 - call $~lib/rt/pure/__release - local.get $174 - call $~lib/rt/pure/__release - local.get $175 - call $~lib/rt/pure/__release - local.get $176 - call $~lib/rt/pure/__release - local.get $177 - call $~lib/rt/pure/__release - local.get $178 - call $~lib/rt/pure/__release - local.get $179 - call $~lib/rt/pure/__release - local.get $180 - call $~lib/rt/pure/__release - local.get $181 - call $~lib/rt/pure/__release - local.get $182 - call $~lib/rt/pure/__release - local.get $183 - call $~lib/rt/pure/__release - local.get $184 - call $~lib/rt/pure/__release - local.get $185 - call $~lib/rt/pure/__release - local.get $186 - call $~lib/rt/pure/__release - local.get $187 - call $~lib/rt/pure/__release - local.get $188 - call $~lib/rt/pure/__release - local.get $189 - call $~lib/rt/pure/__release - local.get $190 - call $~lib/rt/pure/__release - local.get $191 - call $~lib/rt/pure/__release - local.get $192 - call $~lib/rt/pure/__release - local.get $193 - call $~lib/rt/pure/__release - local.get $194 - call $~lib/rt/pure/__release - local.get $195 - call $~lib/rt/pure/__release - local.get $196 - call $~lib/rt/pure/__release - local.get $197 - call $~lib/rt/pure/__release - local.get $198 - call $~lib/rt/pure/__release - local.get $199 - call $~lib/rt/pure/__release - local.get $200 - call $~lib/rt/pure/__release - local.get $201 - call $~lib/rt/pure/__release - local.get $202 - call $~lib/rt/pure/__release - local.get $203 - call $~lib/rt/pure/__release - local.get $204 - call $~lib/rt/pure/__release - local.get $205 - call $~lib/rt/pure/__release - local.get $206 - call $~lib/rt/pure/__release - local.get $207 - call $~lib/rt/pure/__release - local.get $208 - call $~lib/rt/pure/__release - local.get $209 - call $~lib/rt/pure/__release - local.get $210 - call $~lib/rt/pure/__release - local.get $211 - call $~lib/rt/pure/__release - local.get $212 - call $~lib/rt/pure/__release - local.get $213 - call $~lib/rt/pure/__release - local.get $214 - call $~lib/rt/pure/__release - local.get $215 - call $~lib/rt/pure/__release - local.get $216 - call $~lib/rt/pure/__release - local.get $217 - call $~lib/rt/pure/__release - local.get $218 - call $~lib/rt/pure/__release - local.get $219 - call $~lib/rt/pure/__release - local.get $220 - call $~lib/rt/pure/__release - local.get $221 - call $~lib/rt/pure/__release - local.get $222 - call $~lib/rt/pure/__release - local.get $223 - call $~lib/rt/pure/__release - local.get $224 - call $~lib/rt/pure/__release - local.get $225 - call $~lib/rt/pure/__release - local.get $226 - call $~lib/rt/pure/__release - local.get $227 - call $~lib/rt/pure/__release - local.get $228 - call $~lib/rt/pure/__release - local.get $229 - call $~lib/rt/pure/__release - local.get $230 - call $~lib/rt/pure/__release - local.get $231 - call $~lib/rt/pure/__release - local.get $232 - call $~lib/rt/pure/__release - local.get $233 - call $~lib/rt/pure/__release - local.get $234 - call $~lib/rt/pure/__release - local.get $235 - call $~lib/rt/pure/__release - local.get $236 - call $~lib/rt/pure/__release - local.get $237 - call $~lib/rt/pure/__release - local.get $238 - call $~lib/rt/pure/__release - local.get $239 - call $~lib/rt/pure/__release - local.get $240 - call $~lib/rt/pure/__release - local.get $241 - call $~lib/rt/pure/__release - local.get $242 - call $~lib/rt/pure/__release - local.get $243 - call $~lib/rt/pure/__release - local.get $244 - call $~lib/rt/pure/__release - local.get $245 - call $~lib/rt/pure/__release - local.get $246 - call $~lib/rt/pure/__release - local.get $247 - call $~lib/rt/pure/__release - local.get $248 - call $~lib/rt/pure/__release - local.get $249 - call $~lib/rt/pure/__release - local.get $250 - call $~lib/rt/pure/__release - local.get $251 - call $~lib/rt/pure/__release - local.get $252 - call $~lib/rt/pure/__release - local.get $253 - call $~lib/rt/pure/__release - local.get $254 - call $~lib/rt/pure/__release - local.get $255 - call $~lib/rt/pure/__release - local.get $256 - call $~lib/rt/pure/__release - local.get $257 - call $~lib/rt/pure/__release - local.get $258 - call $~lib/rt/pure/__release - local.get $259 - call $~lib/rt/pure/__release - local.get $260 - call $~lib/rt/pure/__release - local.get $261 - call $~lib/rt/pure/__release - local.get $262 - call $~lib/rt/pure/__release - local.get $263 - call $~lib/rt/pure/__release - local.get $264 - call $~lib/rt/pure/__release - local.get $265 - call $~lib/rt/pure/__release - local.get $266 - call $~lib/rt/pure/__release - local.get $267 - call $~lib/rt/pure/__release - local.get $268 - call $~lib/rt/pure/__release - local.get $269 - call $~lib/rt/pure/__release - local.get $270 - call $~lib/rt/pure/__release - local.get $271 - call $~lib/rt/pure/__release - local.get $272 - call $~lib/rt/pure/__release - local.get $273 - call $~lib/rt/pure/__release - local.get $274 - call $~lib/rt/pure/__release - local.get $275 - call $~lib/rt/pure/__release - local.get $276 - call $~lib/rt/pure/__release - local.get $277 - call $~lib/rt/pure/__release - local.get $278 - call $~lib/rt/pure/__release - local.get $279 - call $~lib/rt/pure/__release - local.get $280 - call $~lib/rt/pure/__release - local.get $281 - call $~lib/rt/pure/__release - local.get $282 - call $~lib/rt/pure/__release - local.get $283 - call $~lib/rt/pure/__release - local.get $284 - call $~lib/rt/pure/__release - local.get $285 - call $~lib/rt/pure/__release - local.get $286 - call $~lib/rt/pure/__release - local.get $287 - call $~lib/rt/pure/__release - local.get $288 - call $~lib/rt/pure/__release - local.get $289 - call $~lib/rt/pure/__release - local.get $290 - call $~lib/rt/pure/__release - local.get $291 - call $~lib/rt/pure/__release - local.get $292 - call $~lib/rt/pure/__release - local.get $293 - call $~lib/rt/pure/__release - local.get $294 - call $~lib/rt/pure/__release - local.get $295 - call $~lib/rt/pure/__release - local.get $296 - call $~lib/rt/pure/__release - local.get $297 - call $~lib/rt/pure/__release - local.get $298 - call $~lib/rt/pure/__release - local.get $299 - call $~lib/rt/pure/__release - local.get $300 - call $~lib/rt/pure/__release - local.get $301 - call $~lib/rt/pure/__release - local.get $302 - call $~lib/rt/pure/__release - ) - (func $std/string/getString (result i32) - global.get $std/string/str - call $~lib/rt/pure/__retain - ) - (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) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 268435455 - i32.and + i64.const 63 + i64.shr_u + i32.wrap_i64 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 + local.get $2 if - i32.const 0 - i32.const 176 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable + i64.const 0 + local.get $0 + i64.sub + local.set $0 end - local.get $2 - i32.const 1 + local.get $1 + i32.const 10 i32.eq if local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz + 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 176 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 - local.get $0 - call $~lib/rt/pure/finalize else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz + 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 176 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + 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 - i32.const 1 - drop - 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 - ) - (func $~start - call $start:std/string - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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 - i32.eqz + local.get $2 if - i32.const 0 - i32.const 176 - i32.const 69 - i32.const 16 - call $~lib/builtins/abort - unreachable + local.get $3 + i32.const 45 + i32.store16 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 + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (func $~lib/util/number/dtoa (param $0 f64) (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 - local.tee $2 + f64.const 0 + f64.eq if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit + i32.const 21504 + 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 - ) - (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 + f64.sub + f64.const 0 + f64.eq + i32.eqz + if + local.get $0 + local.get $0 + f64.ne 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 5952 + local.set $3 + global.get $~lib/memory/__stack_pointer 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#__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/rt/__visit_members (param $0 i32) (param $1 i32) - block $invalid - block $~lib/array/Array - 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 $~lib/array/Array<~lib/string/String> $~lib/array/Array $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<~lib/string/String>~visit + global.set $~lib/memory/__stack_pointer + local.get $3 return end + i32.const 7248 + i32.const 21536 local.get $0 - local.get $1 - call $~lib/array/Array~visit + 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 - unreachable + i32.const 21568 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 21568 + local.get $1 + call $~lib/memory/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 ) ) diff --git a/tests/compiler/std/symbol.json b/tests/compiler/std/symbol.json index bf222c4d2d..65091e5197 100644 --- a/tests/compiler/std/symbol.json +++ b/tests/compiler/std/symbol.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 13100f4a86..26e4d69562 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1,45 +1,93 @@ (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_i32_=>_none (func (param i32 i32))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param 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))) (memory $0 1) - (data (i32.const 1036) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\001\002\003") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") - (data (i32.const 1116) ",\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 1164) "<\00\00\00\01\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 1228) "<\00\00\00\01\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 1292) ",\00\00\00\01\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 1340) "<\00\00\00\01\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 1404) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 1436) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") - (data (i32.const 1484) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") - (data (i32.const 1548) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") - (data (i32.const 1596) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") - (data (i32.const 1628) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") - (data (i32.const 1676) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") - (data (i32.const 1708) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") - (data (i32.const 1756) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") - (data (i32.const 1788) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") - (data (i32.const 1836) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") - (data (i32.const 1884) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") - (data (i32.const 1932) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") - (data (i32.const 1980) "\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 2012) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00)") - (data (i32.const 2044) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") - (data (i32.const 2092) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") - (data (i32.const 2140) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") - (data (i32.const 2204) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s") + (data (i32.const 1116) "<") + (data (i32.const 1128) "\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 1180) "<") + (data (i32.const 1192) "\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 1308) "<") + (data (i32.const 1320) "\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 1372) ",") + (data (i32.const 1384) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1452) "<") + (data (i32.const 1464) "\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 1516) ",") + (data (i32.const 1528) "\01\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data (i32.const 1564) "<") + (data (i32.const 1576) "\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 1628) "<") + (data (i32.const 1640) "\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 1692) ",") + (data (i32.const 1704) "\01\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data (i32.const 1740) "<") + (data (i32.const 1752) "\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 1804) "\1c") + (data (i32.const 1816) "\01") + (data (i32.const 1836) ",") + (data (i32.const 1848) "\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e") + (data (i32.const 1884) "<") + (data (i32.const 1896) "\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e") + (data (i32.const 1948) ",") + (data (i32.const 1960) "\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p") + (data (i32.const 1996) "\1c") + (data (i32.const 2008) "\01\00\00\00\n\00\00\00m\00a\00t\00c\00h") + (data (i32.const 2028) ",") + (data (i32.const 2040) "\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e") + (data (i32.const 2076) "\1c") + (data (i32.const 2088) "\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h") + (data (i32.const 2108) ",") + (data (i32.const 2120) "\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s") + (data (i32.const 2156) "\1c") + (data (i32.const 2168) "\01\00\00\00\n\00\00\00s\00p\00l\00i\00t") + (data (i32.const 2188) ",") + (data (i32.const 2200) "\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e") + (data (i32.const 2236) ",") + (data (i32.const 2248) "\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g") + (data (i32.const 2284) ",") + (data (i32.const 2296) "\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s") + (data (i32.const 2332) ",") + (data (i32.const 2344) "\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(") + (data (i32.const 2380) "\1c") + (data (i32.const 2392) "\01\00\00\00\08\00\00\00n\00u\00l\00l") + (data (i32.const 2412) "\1c") + (data (i32.const 2424) "\01\00\00\00\02\00\00\00)") + (data (i32.const 2444) ",") + (data (i32.const 2456) "\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)") + (data (i32.const 2492) ",") + (data (i32.const 2504) "\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)") + (data (i32.const 2540) "<") + (data (i32.const 2552) "\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)") + (data (i32.const 2604) "L") + (data (i32.const 2616) "\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)") + (data (i32.const 2688) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 2716) "\10\01\82\00\00\00\00\00\10A\02") (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/symbol/idToString (mut i32) (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) (global $std/symbol/sym4 (mut i32) (i32.const 0)) @@ -48,9 +96,10 @@ (global $std/symbol/key3 (mut i32) (i32.const 0)) (global $std/symbol/key4 (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 19116)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~lib/symbol/Symbol (result i32) (local $0 i32) global.get $~lib/symbol/nextId @@ -65,1322 +114,3386 @@ end local.get $0 ) - (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) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 1073741804 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $~lib/symbol/stringToId + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $0 - i32.const 16 - i32.add - local.tee $2 - i32.const 1073741820 - i32.gt_u + global.get $~lib/symbol/idToString + local.tee $0 if - unreachable + local.get $0 + call $~lib/rt/itcms/__visit 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 + global.get $std/symbol/key1 + local.tee $0 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 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key2 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1328 + call $~lib/rt/itcms/__visit + i32.const 1536 + call $~lib/rt/itcms/__visit + i32.const 1648 + call $~lib/rt/itcms/__visit + i32.const 1136 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - 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 - 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 + ) + (func $~lib/rt/itcms/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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.const 0 + i32.or + i32.store offset=4 + local.get $0 + local.get $3 i32.store offset=8 - local.get $2 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + i32.store offset=8 ) - (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) (local $2 i32) - block $~lib/util/memory/memset|inlined.0 - local.get $1 + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 i32.eqz - br_if $~lib/util/memory/memset|inlined.0 + if + i32.const 0 + i32.const 1200 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink local.get $0 - i32.const 0 - i32.store8 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 19116 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end local.get $0 - local.get $1 - i32.add - i32.const 4 - i32.sub + i32.load offset=8 local.tee $2 - i32.const 0 - i32.store8 offset=3 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end 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 + i32.store offset=8 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 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 2688 + i32.load + i32.gt_u + if + i32.const 1328 + i32.const 1392 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 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.shl + i32.const 2692 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.load + i32.const 32 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 + end + 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) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if i32.const 0 - i32.store offset=8 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 + i32.const 1472 + i32.const 273 + 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.store offset=20 + i32.const 1472 + i32.const 275 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if 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 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 1472 + i32.const 288 + 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 - local.get $1 - i32.const 0 - i32.store offset=12 - local.get $0 + 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.and - i32.const 24 + i32.shl i32.add - local.tee $1 + i32.const 2 + i32.shl i32.add - local.set $0 - local.get $2 - local.get $1 - i32.sub - local.set $1 - loop $while-continue|0 + 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.const 32 - i32.ge_u + i32.store offset=4 + local.get $1 + i32.eqz if local.get $0 - i64.const 0 - i64.store - local.get $0 - i64.const 0 - i64.store offset=8 - local.get $0 - i64.const 0 - i64.store offset=16 - local.get $0 - i64.const 0 - i64.store offset=24 - local.get $1 - i32.const 32 - i32.sub - local.set $1 local.get $0 - i32.const 32 - i32.add - local.set $0 - br $while-continue|0 + i32.load + i32.const -2 + local.get $3 + i32.rotl + i32.and + i32.store end end end ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u + (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 1136 - i32.const 1184 - i32.const 49 - i32.const 43 + i32.const 0 + i32.const 1472 + i32.const 201 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/rt/stub/__new - local.tee $1 - local.get $0 - call $~lib/memory/memory.fill local.get $1 - ) - (func $~lib/util/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const -2128831035 - local.set $1 - local.get $0 + i32.load + local.tee $4 + i32.const 1 + i32.and + i32.eqz if - local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.set $3 - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_u - if - local.get $1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + i32.const 0 + i32.const 1472 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable end local.get $1 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - local.get $0 + i32.const 4 + i32.add local.get $1 - i32.eq + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.tee $2 + i32.const 1 + i32.and if - i32.const 1 - return - end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - 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 - br_if $folding-inner0 - block $__inlined_func$~lib/util/string/compareImpl (result i32) + 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.tee $3 - i32.const 7 - i32.and + local.get $5 + call $~lib/rt/tlsf/removeBlock local.get $1 - i32.const 7 + local.get $3 + local.get $4 + i32.const 3 i32.and i32.or - i32.eqz - i32.const 0 - local.get $2 - local.tee $0 + local.tee $4 + i32.store + local.get $1 i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $0 - i32.const 4 - i32.sub - local.tee $0 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end - end - loop $while-continue|1 - local.get $0 - local.tee $2 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - if - local.get $3 - i32.load16_u - local.tee $2 - local.get $1 - i32.load16_u - local.tee $4 - i32.ne - if - local.get $2 - local.get $4 - i32.sub - br $__inlined_func$~lib/util/string/compareImpl - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end - end - i32.const 0 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $5 + i32.load + local.set $2 end - i32.eqz - return end - i32.const 0 - ) - (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load - local.get $1 - local.get $0 - i32.load offset=4 - i32.and + local.get $4 i32.const 2 - i32.shl - i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 + 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 1472 + i32.const 224 + 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 - i32.load offset=8 - local.tee $1 - i32.const 1 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $3 + local.get $8 + local.get $7 + i32.const 3 i32.and - if (result i32) - i32.const 0 - else - local.get $0 - i32.load - i32.const 1056 - call $~lib/string/String.__eq - end - if - local.get $0 - return - end + i32.or + local.tee $4 + i32.store + local.get $3 + else local.get $1 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 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 - ) - (func $~lib/map/Map<~lib/string/String,usize>#rehash (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + local.get $3 + i32.const 12 + i32.ge_u + select + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 local.get $1 - i32.const 1 + i32.const 4 i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - 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.set $3 - local.get $0 - i32.load offset=8 - local.tee $8 - local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne - if - local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load - local.tee $7 - i32.store - local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $7 - call $~lib/util/hash/hashStr - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 - end - end - local.get $4 - local.tee $2 - local.get $0 - i32.load i32.ne - drop - local.get $0 - local.get $2 + if + i32.const 0 + i32.const 1472 + i32.const 240 + 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 1472 + i32.const 256 + 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 $3 - local.tee $1 - local.get $0 - i32.load offset=8 - i32.ne - drop - local.get $0 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.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - local.get $0 - i32.const 255 - i32.and - i32.const -2128831035 - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.load - local.get $2 + i32.const 1 + local.get $6 + i32.shl + i32.or + i32.store local.get $0 - i32.load offset=4 - i32.and + local.get $6 i32.const 2 i32.shl i32.add - i32.load - local.set $0 - loop $while-continue|0 - local.get $0 - if - local.get $0 - i32.load offset=8 - local.tee $2 - i32.const 1 - i32.and - if (result i32) - i32.const 0 - else - local.get $1 - local.get $0 - i32.load - i32.eq - end - if - local.get $0 - return - end - local.get $2 - i32.const -2 - i32.and - local.set $0 - br $while-continue|0 - end - end - i32.const 0 + 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/map/Map#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) local.get $1 - i32.const 1 + local.get $2 + i32.gt_u + if + i32.const 0 + i32.const 1472 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 i32.add - local.tee $2 - i32.const 2 - i32.shl - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 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.set $3 - local.get $0 - i32.load offset=8 - local.tee $8 + i32.const -16 + i32.and local.get $0 - i32.load offset=16 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $3 - local.set $2 - loop $while-continue|0 - local.get $5 - local.get $8 - i32.ne + i32.load offset=1568 + local.tee $2 + if + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.lt_u if - local.get $8 - i32.load offset=8 - i32.const 1 - i32.and - i32.eqz - if - local.get $2 - local.get $8 - i32.load - local.tee $7 - i32.store - local.get $2 - local.get $8 - i32.load offset=4 - i32.store offset=4 - local.get $2 - local.get $4 - local.get $7 - call $~lib/util/hash/hash32 - local.get $1 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $7 - i32.load - i32.store offset=8 - local.get $7 - local.get $2 - i32.store - local.get $2 - i32.const 12 - i32.add - local.set $2 - end - local.get $8 - i32.const 12 - i32.add - local.set $8 - br $while-continue|0 + i32.const 0 + i32.const 1472 + i32.const 388 + 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 1472 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable end end - local.get $4 + local.get $1 + i32.sub local.tee $2 - local.get $0 - i32.load - i32.ne - drop - local.get $0 + 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 $0 local.get $1 + i32.const 0 i32.store offset=4 - local.get $3 - local.tee $1 - local.get $0 - i32.load offset=8 - i32.ne - drop - local.get $0 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 $6 - i32.store offset=12 - local.get $0 - local.get $0 - i32.load offset=20 - i32.store offset=16 - ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + local.get $2 + i32.store offset=1568 local.get $0 local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - local.tee $3 - call $~lib/map/Map#find - local.tee $2 + 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 - local.get $2 - i32.load offset=4 - i32.const 1056 - i32.ne + unreachable + end + i32.const 19120 + i32.const 0 + i32.store + i32.const 20688 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u if - local.get $2 - i32.const 1056 + local.get $1 + i32.const 2 + i32.shl + i32.const 19120 + i32.add + i32.const 0 i32.store offset=4 - end - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else + i32.const 0 + local.set $0 + loop $for-loop|1 local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or + 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 19120 + 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 - call $~lib/map/Map#rehash + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - local.get $0 - i32.load offset=8 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.tee $2 - local.get $1 - i32.store - local.get $2 - i32.const 1056 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $2 - local.get $0 - i32.load - local.get $3 - local.get $0 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add - local.tee $0 - i32.load - i32.store offset=8 - local.get $0 - local.get $2 - i32.store end + i32.const 19120 + i32.const 20692 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 19120 + global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/symbol/_Symbol.for (result i32) + (func $~lib/rt/itcms/step (result i32) (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/symbol/stringToId - if - global.get $~lib/symbol/stringToId - i32.const 1056 - call $~lib/util/hash/hashStr - call $~lib/map/Map<~lib/string/String,usize>#find - if - global.get $~lib/symbol/stringToId - i32.const 1056 - call $~lib/util/hash/hashStr - call $~lib/map/Map<~lib/string/String,usize>#find + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 19116 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter local.tee $0 - i32.eqz + global.get $~lib/rt/itcms/toSpace + i32.ne if - i32.const 1248 - i32.const 1312 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1200 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19116 + 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 $1 + i32.const 19116 + i32.ge_u + 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 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return end - local.get $0 - i32.load offset=4 - return + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state end - else - i32.const 24 - i32.const 3 - call $~lib/rt/stub/__new - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - global.set $~lib/symbol/stringToId - i32.const 24 - i32.const 4 - call $~lib/rt/stub/__new - local.tee $0 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 3 - i32.store offset=4 - local.get $0 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 - global.set $~lib/symbol/idToString - end - global.get $~lib/symbol/nextId - local.tee $0 - i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $0 - i32.eqz - if - unreachable + return end - global.get $~lib/symbol/stringToId - local.tee $1 - i32.const 1056 - call $~lib/util/hash/hashStr - local.tee $3 - call $~lib/map/Map<~lib/string/String,usize>#find - local.tee $2 + global.get $~lib/rt/itcms/visitCount + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u if - local.get $2 - local.get $0 - i32.store offset=4 - else - local.get $1 - i32.load offset=16 - local.get $1 - i32.load offset=12 - i32.eq - if - local.get $1 - local.get $1 - i32.load offset=20 - local.get $1 - i32.load offset=12 - i32.const 3 - i32.mul - i32.const 4 - i32.div_s - i32.lt_s - if (result i32) - local.get $1 - i32.load offset=4 - else - local.get $1 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,usize>#rehash - end - local.get $1 - i32.load offset=8 local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + i32.const 31 local.get $1 - i32.load offset=16 - local.tee $2 i32.const 1 - i32.add - i32.store offset=16 - local.get $2 - i32.const 12 - i32.mul - i32.add - local.tee $2 - i32.const 1056 - i32.store - local.get $2 - local.get $0 - i32.store offset=4 - local.get $1 + i32.const 27 local.get $1 - i32.load offset=20 - i32.const 1 + i32.clz + i32.sub + i32.shl i32.add - i32.store offset=20 - local.get $2 + i32.const 1 + i32.sub local.get $1 - i32.load - local.get $3 local.get $1 - i32.load offset=4 - i32.and - i32.const 2 - i32.shl - i32.add + i32.const 536870910 + i32.lt_u + select local.tee $1 - i32.load - i32.store offset=8 + i32.clz + i32.sub + local.set $2 local.get $1 local.get $2 - i32.store - end - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#set - local.get $0 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 + 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 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find + i32.const 16 + i32.lt_u i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/hash/hash32 - call $~lib/map/Map#find - local.tee $0 + local.get $2 + i32.const 23 + i32.lt_u + select i32.eqz if - i32.const 1248 - i32.const 1312 - i32.const 105 - i32.const 17 + i32.const 0 + i32.const 1472 + i32.const 334 + i32.const 14 call $~lib/builtins/abort unreachable end local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add i32.load offset=4 - ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - global.get $~lib/symbol/idToString + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 if (result i32) - global.get $~lib/symbol/idToString local.get $0 - call $~lib/map/Map#has + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 else - i32.const 0 - end - if (result i32) - global.get $~lib/symbol/idToString local.get $0 - call $~lib/map/Map#get - else - i32.const 0 + i32.load + i32.const -1 + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1472 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end end ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/util/memory/memmove|inlined.0 - local.get $2 - local.set $4 + local.get $1 + i32.const 1073741820 + i32.ge_u + if + i32.const 1136 + i32.const 1472 + i32.const 462 + i32.const 30 + 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 $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 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 + local.get $3 local.get $1 - i32.lt_u + local.get $3 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s if - local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and - i32.eq + local.get $3 + memory.grow + i32.const 0 + i32.lt_s 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 + unreachable 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 + 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 1472 + i32.const 500 + 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 1472 + i32.const 502 + 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 $3 + local.get $2 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1472 + i32.const 361 + 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 $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 $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 + local.get $1 + ) + (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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1136 + i32.const 1200 + i32.const 256 + 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + local.get $0 + i32.const 16 + i32.add + local.set $2 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $2 + 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 + 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 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + local.get $0 + call $~lib/memory/memory.fill + local.get $1 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1200 + i32.const 290 + 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 + local.set $4 + local.get $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $2 + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + else + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $4 + i32.const 3 + i32.eq + select + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/map/Map<~lib/string/String,usize>#set:buckets (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/map/Map<~lib/string/String,usize>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const -2128831035 + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + local.tee $2 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $6 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $5 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $3 + i32.store offset=4 + local.get $0 + i32.load offset=8 + local.tee $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $2 + local.get $8 + i32.load + local.tee $7 + i32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hash32 + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map<~lib/string/String,usize>#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,usize>#set:entries + 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/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 + 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) + (local $1 i32) + (local $2 i32) + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|0 + end + end + local.get $2 + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.tee $2 + local.tee $1 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $0 + loop $while-continue|00 + local.get $0 + local.get $1 + i32.gt_u + if + local.get $1 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $1 + i32.load offset=4 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 12 + i32.add + local.set $1 + br $while-continue|00 + end + end + local.get $2 + call $~lib/rt/itcms/__visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 2732 + i32.lt_s + if + i32.const 19136 + i32.const 19184 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if + local.get $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 i32.add + local.set $3 local.get $1 - local.get $4 + i32.const 8 i32.add - i32.load8_u - i32.store8 - br $while-continue|3 + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 end end - loop $while-continue|4 - local.get $4 - i32.const 8 - i32.ge_u + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne 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 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 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 + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/map/Map<~lib/string/String,usize>#find (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load + local.get $1 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $1 + i32.const 1056 + call $~lib/string/String.__eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/map/Map<~lib/string/String,usize>#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 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 + 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 $8 + 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 $8 + i32.ne + if + local.get $8 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.load + local.tee $7 + i32.store offset=8 + local.get $2 + local.get $7 + i32.store + local.get $2 + local.get $8 + i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $2 + local.get $6 + local.get $7 + call $~lib/util/hash/hashStr + local.get $1 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $7 + i32.load + i32.store offset=8 + local.get $7 + local.get $2 + i32.store + local.get $2 + i32.const 12 + i32.add + local.set $2 + end + local.get $8 + i32.const 12 + i32.add + local.set $8 + br $while-continue|0 + end + end + local.get $0 + local.get $6 + call $~lib/map/Map<~lib/string/String,usize>#set:buckets + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,usize>#set:entries + 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 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,usize>#set (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + 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 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1056 + call $~lib/util/hash/hashStr + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/map/Map<~lib/string/String,usize>#find + local.tee $2 + if + local.get $2 + local.get $1 + i32.store offset=4 + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,usize>#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $2 + i32.const 1056 + i32.store + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#set (param $0 i32) (param $1 i32) + (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 + local.get $1 + call $~lib/util/hash/hash32 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $3 + call $~lib/map/Map#find + local.tee $2 + if + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $2 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $2 + i32.const 1056 + i32.store offset=4 + local.get $0 + i32.const 1056 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + local.get $2 + local.get $0 + i32.load + local.get $3 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $0 + i32.load + i32.store offset=8 + local.get $0 + local.get $2 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol.for (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/symbol/stringToId + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=12 + local.get $0 + i32.const 1056 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,usize>#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=12 + local.get $0 + i32.const 1056 + call $~lib/util/hash/hashStr + call $~lib/map/Map<~lib/string/String,usize>#find + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return end + else + global.get $~lib/memory/__stack_pointer + i32.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 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/symbol/stringToId + global.get $~lib/memory/__stack_pointer + i32.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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:buckets + local.get $0 + i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:entries + local.get $0 + i32.const 4 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $~lib/symbol/idToString + end + global.get $~lib/symbol/nextId + local.tee $0 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $0 + i32.eqz + if + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/stringToId + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/map/Map<~lib/string/String,usize>#set + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/map/Map#set + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/hash/hash32 + call $~lib/map/Map#find + local.tee $0 + i32.eqz + if + i32.const 1648 + i32.const 1712 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/symbol/idToString + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/map/Map#has + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + global.get $~lib/symbol/idToString + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/map/Map#get + else + i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (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 $2 i32) (local $3 i32) (local $4 i32) - local.get $1 - i32.const 2000 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.const 2400 + local.get $0 select - local.tee $3 - i32.const 20 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.tee $4 + 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.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 2400 + i32.store + i32.const 2400 + local.set $1 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - i32.const 1 - i32.shl - local.tee $1 - i32.add - local.tee $2 - i32.eqz - if - i32.const 1424 - return - end - local.get $2 - i32.const 1 - call $~lib/rt/stub/__new - local.tee $2 - local.get $0 - local.get $1 - call $~lib/memory/memory.copy + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 + i32.store offset=4 + block $__inlined_func$~lib/string/String#concat + local.get $2 + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1824 + local.set $2 + br $__inlined_func$~lib/string/String#concat + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $3 + call $~lib/memory/memory.copy + local.get $2 + local.get $3 + i32.add + local.get $1 + local.get $4 + call $~lib/memory/memory.copy + 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 8 i32.add - local.get $3 - local.get $4 - call $~lib/memory/memory.copy + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) - i32.const 1952 - block $break|0 (result i32) + (local $1 i32) + (local $2 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 + i32.const 1824 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1824 + i32.store + block $break|0 block $case11|0 block $case10|0 block $case9|0 @@ -1398,67 +3511,154 @@ i32.sub br_table $case0|0 $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 $case6|0 $case7|0 $case8|0 $case9|0 $case10|0 $case11|0 end - i32.const 1456 + i32.const 1856 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1856 + i32.store br $break|0 end - i32.const 1504 + i32.const 1904 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1904 + i32.store br $break|0 end - i32.const 1568 + i32.const 1968 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1968 + i32.store br $break|0 end - i32.const 1616 + i32.const 2016 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2016 + i32.store br $break|0 end - i32.const 1648 + i32.const 2048 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2048 + i32.store br $break|0 end - i32.const 1696 + i32.const 2096 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2096 + i32.store br $break|0 end - i32.const 1728 + i32.const 2128 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2128 + i32.store br $break|0 end - i32.const 1776 + i32.const 2176 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2176 + i32.store br $break|0 end - i32.const 1808 + i32.const 2208 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2208 + i32.store br $break|0 end - i32.const 1856 + i32.const 2256 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2256 + i32.store br $break|0 end - i32.const 1904 + i32.const 2304 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 2304 + i32.store br $break|0 end global.get $~lib/symbol/idToString if (result i32) + global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/idToString + local.tee $2 + i32.store offset=4 + local.get $2 local.get $0 call $~lib/map/Map#has else i32.const 0 end - if (result i32) + if + global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/idToString + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 call $~lib/map/Map#get - else - i32.const 1424 + local.tee $1 + i32.store end end - call $~lib/string/String#concat - local.tee $0 - i32.const 2000 + global.get $~lib/memory/__stack_pointer + i32.const 2352 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + i32.const 2352 + local.get $1 + call $~lib/string/String.__concat + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - select - i32.const 2032 - call $~lib/string/String#concat + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2432 + i32.store offset=8 + local.get $0 + i32.const 2432 + call $~lib/string/String.__concat + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $start:std/symbol (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store call $~lib/symbol/Symbol global.set $std/symbol/sym1 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store call $~lib/symbol/Symbol global.set $std/symbol/sym2 global.get $std/symbol/sym1 @@ -1472,10 +3672,23 @@ call $~lib/builtins/abort unreachable end - i32.const 2284 - global.set $~lib/rt/stub/offset + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1424 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store call $~lib/symbol/_Symbol.for global.set $std/symbol/sym3 + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store call $~lib/symbol/_Symbol.for global.set $std/symbol/sym4 global.get $std/symbol/sym3 @@ -1513,12 +3726,15 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor local.tee $0 + i32.store offset=4 + local.get $0 i32.eqz if - i32.const 1360 + i32.const 1760 i32.const 1088 i32.const 17 i32.const 12 @@ -1527,12 +3743,15 @@ end local.get $0 global.set $std/symbol/key3 + global.get $~lib/memory/__stack_pointer global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor local.tee $0 + i32.store offset=4 + local.get $0 i32.eqz if - i32.const 1360 + i32.const 1760 i32.const 1088 i32.const 18 i32.const 12 @@ -1541,7 +3760,14 @@ end local.get $0 global.set $std/symbol/key4 + global.get $~lib/memory/__stack_pointer global.get $std/symbol/key3 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=8 + local.get $0 i32.const 1056 call $~lib/string/String.__eq i32.eqz @@ -1553,8 +3779,16 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/symbol/key3 + local.tee $0 + i32.store + local.get $0 + global.get $~lib/memory/__stack_pointer global.get $std/symbol/key4 + local.tee $0 + i32.store offset=8 + local.get $0 call $~lib/string/String.__eq i32.eqz if @@ -1567,7 +3801,15 @@ end call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - i32.const 2064 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2464 + i32.store offset=8 + local.get $0 + i32.const 2464 call $~lib/string/String.__eq i32.eqz if @@ -1580,7 +3822,15 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - i32.const 2112 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2512 + i32.store offset=8 + local.get $0 + i32.const 2512 call $~lib/string/String.__eq i32.eqz if @@ -1595,7 +3845,15 @@ global.set $std/symbol/isConcatSpreadable i32.const 1 call $~lib/symbol/_Symbol#toString - i32.const 2160 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2560 + i32.store offset=8 + local.get $0 + i32.const 2560 call $~lib/string/String.__eq i32.eqz if @@ -1608,7 +3866,15 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - i32.const 2224 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2624 + i32.store offset=8 + local.get $0 + i32.const 2624 call $~lib/string/String.__eq i32.eqz if @@ -1619,14 +3885,45 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started + (func $~lib/arraybuffer/ArrayBuffer#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.const 1073741820 + i32.gt_u if - return + i32.const 1536 + i32.const 1584 + i32.const 49 + i32.const 43 + call $~lib/builtins/abort + unreachable end - i32.const 1 - global.set $~started - call $start:std/symbol + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index cc2705015b..7b03beefdf 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -1,48 +1,67 @@ (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_=>_i32 (func (param i32 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_=>_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 $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\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 44) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00\00\00") - (data (i32.const 92) ",\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 140) "<\00\00\00\01\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 204) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00") - (data (i32.const 268) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 316) "<\00\00\00\01\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\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 412) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00\00\00\00\00\00\00") - (data (i32.const 460) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00") - (data (i32.const 524) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 572) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00\00\00") - (data (i32.const 604) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 652) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") - (data (i32.const 684) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 732) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00\00\00") - (data (i32.const 764) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00\00\00\00\00\00\00") - (data (i32.const 812) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00\00\00\00\00\00\00") - (data (i32.const 860) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00\00\00\00\00\00\00") - (data (i32.const 908) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 956) "\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 988) "\1c\00\00\00\01\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") - (data (i32.const 1020) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00\00\00\00\00\00\00") - (data (i32.const 1116) "<\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00\00\00\00\00\00\00") - (data (i32.const 1180) "L\00\00\00\01\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) "\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 44) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00s\00t\00d\00/\00s\00y\00m\00b\00o\00l\00.\00t\00s\00\00\00") + (data (i32.const 92) "<\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 156) "<\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 224) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\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\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 348) ",\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 400) "\00\00\00\00\00\00\00\00\00\00\00\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\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 492) ",\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 540) "<\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 604) "<\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 668) ",\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\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\1e\00\00\00u\00n\00e\00x\00p\00e\00c\00t\00e\00d\00 \00n\00u\00l\00l\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 780) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 812) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00\00\00\00\00\00\00") + (data (i32.const 860) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00$\00\00\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00\00\00\00\00\00\00\00\00") + (data (i32.const 924) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00i\00s\00R\00e\00g\00E\00x\00p\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 972) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00m\00a\00t\00c\00h\00\00\00") + (data (i32.const 1004) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00r\00e\00p\00l\00a\00c\00e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1052) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00e\00a\00r\00c\00h\00") + (data (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00s\00p\00e\00c\00i\00e\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1132) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\n\00\00\00s\00p\00l\00i\00t\00\00\00") + (data (i32.const 1164) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00P\00r\00i\00m\00i\00t\00i\00v\00e\00\00\00\00\00\00\00") + (data (i32.const 1212) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00o\00S\00t\00r\00i\00n\00g\00T\00a\00g\00\00\00\00\00\00\00") + (data (i32.const 1260) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00u\00n\00s\00c\00o\00p\00a\00b\00l\00e\00s\00\00\00\00\00\00\00") + (data (i32.const 1308) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00S\00y\00m\00b\00o\00l\00(\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1356) "\1c\00\00\00\00\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 1388) "\1c\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") + (data (i32.const 1420) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00S\00y\00m\00b\00o\00l\00(\00)\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1468) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00S\00y\00m\00b\00o\00l\00(\001\002\003\00)\00\00\00\00\00\00\00") + (data (i32.const 1516) "<\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00&\00\00\00S\00y\00m\00b\00o\00l\00(\00h\00a\00s\00I\00n\00s\00t\00a\00n\00c\00e\00)\00\00\00\00\00\00\00") + (data (i32.const 1580) "L\00\00\00\00\00\00\00\00\00\00\00\01\00\00\004\00\00\00S\00y\00m\00b\00o\00l\00(\00i\00s\00C\00o\00n\00c\00a\00t\00S\00p\00r\00e\00a\00d\00a\00b\00l\00e\00)\00\00\00\00\00\00\00\00\00") + (data (i32.const 1664) "\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\10\01\82\00\00\00\00\00\10A\02\00\00\00\00\00") (table $0 1 funcref) (global $~lib/symbol/nextId (mut i32) (i32.const 12)) (global $std/symbol/sym1 (mut i32) (i32.const 0)) (global $std/symbol/sym2 (mut i32) (i32.const 0)) (global $~lib/symbol/stringToId (mut i32) (i32.const 0)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/symbol/idToString (mut i32) (i32.const 0)) (global $std/symbol/sym3 (mut i32) (i32.const 0)) @@ -55,22 +74,16 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $~lib/symbol/_Symbol.isConcatSpreadable i32 (i32.const 2)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 1664)) + (global $~lib/memory/__data_end i32 (i32.const 1708)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18092)) + (global $~lib/memory/__heap_base i32 (i32.const 18092)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 1260)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) + (export "_start" (func $~start)) (func $~lib/symbol/Symbol (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 global.get $~lib/symbol/nextId local.tee $1 i32.const 1 @@ -84,862 +97,904 @@ unreachable end local.get $2 - local.set $1 + ) + (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 - call $~lib/rt/stub/__release local.get $1 + i32.store offset=8 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + 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 - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 176 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 176 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + local.get $1 + i32.load i32.gt_u if + i32.const 304 + i32.const 368 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 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.const 8 + i32.mul i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 - local.get $3 - i32.store - local.get $2 + i32.load ) - (func $~lib/rt/stub/__new (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $0 i32) (result i32) + (local $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - unreachable + 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 - i32.const 16 + ) + (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 - i32.add - call $~lib/rt/stub/__alloc - local.set $2 + local.get $1 local.get $2 - i32.const 4 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.store offset=4 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 local.get $3 - i32.const 0 - i32.store offset=8 + call $~lib/rt/itcms/Object#set:prev local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next 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 + call $~lib/rt/itcms/Object#set:prev ) - (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 + (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 - 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.load offset=8 + local.tee $1 i32.eqz - if - br $~lib/util/memory/memset|inlined.0 + if (result i32) + i32.const 0 + i32.const 176 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 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 + 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 - 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 + call $~lib/rt/itcms/Object#linkTo ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + local.get $0 + i32.eqz if - i32.const 112 - i32.const 160 - i32.const 49 - i32.const 43 - call $~lib/builtins/abort - unreachable + return end - local.get $1 - i32.const 0 - call $~lib/rt/stub/__new + local.get $0 + i32.const 20 + i32.sub local.set $2 - local.get $2 i32.const 0 - local.get $1 - call $~lib/memory/memory.fill + drop local.get $2 - call $~lib/rt/stub/__retain - local.set $3 + 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 - call $~lib/rt/stub/__release - local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add ) - (func $~lib/map/Map<~lib/string/String,usize>#constructor (param $0 i32) (result i32) + (func $~lib/rt/tlsf/Root#set:flMap (param $0 i32) (param $1 i32) local.get $0 - i32.eqz - if - i32.const 24 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end + local.get $1 + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $0 i32) (param $1 i32) local.get $0 - i32.const 4 - i32.const 1 - i32.sub + local.get $1 i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor + local.get $1 i32.store offset=8 - 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 - local.get $0 - ) - (func $~lib/map/Map#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 24 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 - i32.const 0 - i32.const 4 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store - local.get $0 - i32.const 4 - i32.const 1 - i32.sub - i32.store offset=4 - local.get $0 - i32.const 0 - i32.const 4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - i32.store offset=8 - 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 - local.get $0 ) - (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/hash/hashStr (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - i32.const -2128831035 - local.set $1 - local.get $0 - i32.const 0 - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - 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 $1 - local.get $0 - local.get $2 - i32.add - i32.load8_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - end - local.get $1 - local.set $3 - local.get $0 - call $~lib/rt/stub/__release - 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) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - local.get $0 + (local $11 i32) local.get $1 + i32.load + local.set $2 i32.const 1 - i32.shl - i32.add - local.set $5 + drop 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 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 273 + 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 $4 - i32.const 4 + local.get $3 + i32.const 12 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 + local.get $3 + i32.const 1073741820 + i32.lt_u else i32.const 0 end + i32.eqz if - block $do-break|0 - loop $do-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|0 - end - end + i32.const 0 + i32.const 448 + i32.const 275 + i32.const 14 + call $~lib/builtins/abort + unreachable end - loop $while-continue|1 + 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 - local.tee $7 + 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 448 + i32.const 288 + 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 - local.set $7 + call $~lib/rt/tlsf/Block#set:next + end + local.get $7 + if 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 - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 - return - end - local.get $5 + 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 - local.set $5 - local.get $6 + 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.set $6 - br $while-continue|1 + 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 - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + i32.const 1 + drop local.get $1 - i32.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - 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 + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 448 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 local.get $1 - call $~lib/string/String#get:length - i32.ne + i32.load + local.set $2 + i32.const 1 + drop + local.get $2 + i32.const 1 + i32.and + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return + i32.const 448 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 local.get $1 - i32.const 0 + local.set $3 + local.get $3 + i32.const 4 + i32.add local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $~lib/map/Map<~lib/string/String,usize>#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.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 i32.load - local.get $2 - local.get $0 - i32.load offset=4 + i32.const 3 + i32.const -1 + i32.xor i32.and - i32.const 4 - i32.mul i32.add + local.set $4 + local.get $4 i32.load - local.set $3 - loop $while-continue|0 + 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 - local.set $4 - local.get $4 + i32.const 1073741820 + i32.lt_u if - local.get $3 - i32.load offset=8 - local.set $5 - local.get $5 - i32.const 1 + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - call $~lib/string/String.__eq - else - i32.const 0 - end - if - local.get $3 - local.set $6 - local.get $1 - call $~lib/rt/stub/__release - local.get $6 - return - end - local.get $5 - i32.const 1 + 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 - local.set $3 - br $while-continue|0 + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 end end - i32.const 0 - local.set $4 - local.get $1 - call $~lib/rt/stub/__release - local.get $4 - ) - (func $~lib/map/Map<~lib/string/String,usize>#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - local.get $1 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + local.get $2 + i32.const 2 + i32.and + if local.get $1 - call $~lib/rt/stub/__retain - local.set $2 + 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 $2 - call $~lib/util/hash/hashStr - local.set $3 - local.get $2 - call $~lib/rt/stub/__release local.get $3 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 224 + 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 - call $~lib/map/Map<~lib/string/String,usize>#find - i32.const 0 - i32.ne - local.set $2 - local.get $1 - call $~lib/rt/stub/__release + local.get $4 + local.get $5 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo local.get $2 - ) - (func $~lib/map/Map<~lib/string/String,usize>#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + 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 448 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 + i32.const 4 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 240 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub local.get $1 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $2 + 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 - drop - local.get $2 - call $~lib/util/hash/hashStr - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.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 - call $~lib/map/Map<~lib/string/String,usize>#find - local.set $4 - local.get $4 i32.eqz if - i32.const 224 - i32.const 288 - i32.const 105 - i32.const 17 + i32.const 0 + i32.const 448 + i32.const 256 + i32.const 14 call $~lib/builtins/abort unreachable end - local.get $4 - i32.load offset=4 - local.set $2 + 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 - call $~lib/rt/stub/__release - local.get $2 + 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/map/Map<~lib/string/String,usize>#rehash (param $0 i32) (param $1 i32) - (local $2 i32) + (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) @@ -947,1059 +1002,2126 @@ (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 $1 i32.const 1 - i32.add - local.set $2 - i32.const 0 + drop + local.get $1 local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 448 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s + 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.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor local.set $5 - local.get $0 - i32.load offset=8 + 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 448 + i32.const 388 + 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 448 + i32.const 401 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub local.set $6 local.get $6 - local.get $0 - i32.load offset=16 + i32.const 4 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.load - call $~lib/rt/stub/__retain - local.set $12 - local.get $11 - local.get $12 - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - local.get $12 - call $~lib/rt/stub/__retain - local.set $13 - i32.const 1 - drop - local.get $13 - call $~lib/util/hash/hashStr - local.set $14 - local.get $13 - call $~lib/rt/stub/__release - local.get $14 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 - end - 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 - i32.store offset=8 - local.get $14 - local.get $8 - i32.store - local.get $8 - i32.const 12 - i32.add - local.set $8 - local.get $12 - call $~lib/rt/stub/__release - end - local.get $6 - i32.const 12 - i32.add - local.set $6 - br $while-continue|0 - end - end - local.get $0 - local.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 - i32.ne + i32.const 4 + i32.add + i32.lt_u if - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $9 - call $~lib/rt/stub/__release + i32.const 0 + return end - local.get $12 - i32.store - local.get $0 + local.get $6 + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $7 local.get $1 - i32.store offset=4 - local.get $0 - local.tee $13 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne - if - local.get $14 - call $~lib/rt/stub/__retain - local.set $14 - local.get $11 - call $~lib/rt/stub/__release - end - local.get $14 - i32.store offset=8 - local.get $0 + 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.store offset=12 - local.get $0 + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo local.get $0 - i32.load offset=20 - i32.store offset=16 + local.set $9 + local.get $4 + local.set $3 + local.get $9 local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 ) - (func $~lib/map/Map<~lib/string/String,usize>#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/stub/__retain + (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 - block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $3 - i32.const 1 - drop - local.get $3 - call $~lib/util/hash/hashStr - local.set $4 - local.get $3 - call $~lib/rt/stub/__release - local.get $4 - br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 - end - local.set $5 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 - local.get $5 - call $~lib/map/Map<~lib/string/String,usize>#find - local.set $6 - local.get $6 - if - i32.const 0 - drop - local.get $6 + i32.gt_s + if (result i32) local.get $2 - i32.store offset=4 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 - i32.const 1 - i32.shl - i32.const 1 - i32.or - end - call $~lib/map/Map<~lib/string/String,usize>#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $4 - i32.const 1 - i32.add - i32.store offset=16 - local.get $4 - i32.const 12 - i32.mul - i32.add - local.set $6 - local.get $6 - local.get $1 - call $~lib/rt/stub/__retain - i32.store - local.get $6 - local.get $2 - i32.store offset=4 - local.get $0 - local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 - local.get $0 - i32.load - local.get $5 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - local.set $4 - local.get $6 - local.get $4 - i32.load - i32.store offset=8 - local.get $4 - local.get $6 - i32.store - local.get $3 - call $~lib/rt/stub/__release + i32.const 0 + end + if + unreachable end local.get $0 - call $~lib/rt/stub/__retain + 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 $1 - call $~lib/rt/stub/__release + local.get $5 local.get $4 - ) - (func $~lib/util/hash/hash32 (param $0 i32) (result i32) - (local $1 i32) - i32.const -2128831035 - local.set $1 - local.get $1 - local.get $0 - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 8 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 16 - i32.shr_u - i32.const 255 - i32.and - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - local.get $0 - i32.const 24 - i32.shr_u - i32.xor - i32.const 16777619 - i32.mul - local.set $1 - local.get $1 - ) - (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - i32.load - local.get $2 - local.get $0 - i32.load offset=4 - i32.and - i32.const 4 - i32.mul - i32.add - i32.load - local.set $3 - loop $while-continue|0 - local.get $3 + 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 - i32.load offset=8 - local.set $5 + local.set $8 local.get $5 - i32.const 1 - i32.and - i32.eqz - if (result i32) - local.get $3 - i32.load - local.get $1 - i32.eq - else - i32.const 0 - end - if - local.get $3 - return + 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.const -1 - i32.xor - i32.and - local.set $3 - br $while-continue|0 + i32.add + local.set $5 + br $for-loop|0 end end - i32.const 0 - ) - (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) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - local.get $1 - i32.const 1 + local.get $0 + i32.const 1572 i32.add - local.set $2 - i32.const 0 - local.get $2 - i32.const 4 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $3 - local.get $2 - i32.const 8 - i32.mul - i32.const 3 - i32.div_s - local.set $4 + local.set $12 i32.const 0 - local.get $4 - i32.const 12 - i32.mul - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $5 + 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.load offset=8 - local.set $6 - local.get $6 + i32.const 4 + i32.sub + local.set $1 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.load - local.set $12 - local.get $11 - local.get $12 - i32.store - local.get $11 - local.get $10 - i32.load offset=4 - i32.store offset=4 - block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $12 - local.set $13 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $13 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.1 - end - 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 - i32.store offset=8 - 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.tee $11 - local.get $3 - local.tee $12 - local.get $11 - i32.load - local.tee $9 + 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 - local.get $12 - call $~lib/rt/stub/__retain - local.set $12 - local.get $9 - call $~lib/rt/stub/__release + i32.const 0 + i32.const 448 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $12 - i32.store + 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 - i32.store offset=4 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) local.get $0 - local.tee $13 - local.get $5 - local.tee $14 - local.get $13 - i32.load offset=8 - local.tee $11 - i32.ne + global.get $~lib/memory/__heap_base + i32.lt_u if - local.get $14 - call $~lib/rt/stub/__retain - local.set $14 - local.get $11 - call $~lib/rt/stub/__release + return end - local.get $14 - i32.store offset=8 - local.get $0 - local.get $4 - i32.store offset=12 - local.get $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.load offset=20 - i32.store offset=16 - local.get $3 - call $~lib/rt/stub/__release - local.get $5 - call $~lib/rt/stub/__release + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock ) - (func $~lib/map/Map#set (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 - block $~lib/util/hash/HASH|inlined.0 (result i32) - local.get $1 - local.set $3 + (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 - drop + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $0 i32.const 0 - drop + 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.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $3 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.0 + i32.add + call $~lib/rt/tlsf/__free end - local.set $4 - local.get $0 - local.get $1 - local.get $4 - call $~lib/map/Map#find - local.set $5 - local.get $5 - if - i32.const 1 - drop - local.get $5 - i32.load offset=4 - local.set $3 - local.get $2 - local.get $3 - i32.ne - if - local.get $5 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=4 - local.get $3 - call $~lib/rt/stub/__release - end - else - local.get $0 - i32.load offset=16 - local.get $0 - i32.load offset=12 - i32.eq - if - local.get $0 - 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 - if (result i32) - local.get $0 - i32.load offset=4 - else - local.get $0 - i32.load offset=4 + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + 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 - i32.shl + 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.or + i32.mul + return end - call $~lib/map/Map#rehash - end - local.get $0 - i32.load offset=8 - call $~lib/rt/stub/__retain - local.set $3 - local.get $3 - local.get $0 - local.get $0 - i32.load offset=16 - local.tee $6 - i32.const 1 - i32.add - i32.store offset=16 - local.get $6 - i32.const 12 - i32.mul - i32.add - local.set $5 - local.get $5 - local.get $1 - i32.store - local.get $5 - local.get $2 - call $~lib/rt/stub/__retain - i32.store offset=4 + 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 + 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 + 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 176 + i32.const 224 + 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) + (local $1 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-continue|0 local.get $0 - i32.load offset=20 - i32.const 1 - i32.add - i32.store offset=20 + 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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end local.get $0 - i32.load - local.get $4 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.load offset=4 - i32.and i32.const 4 - i32.mul i32.add - local.set $6 - local.get $5 - local.get $6 - i32.load - i32.store offset=8 - local.get $6 - local.get $5 - i32.store - local.get $3 - call $~lib/rt/stub/__release + 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 - call $~lib/rt/stub/__retain - local.set $6 - local.get $2 - call $~lib/rt/stub/__release - local.get $6 + i32.const 1073741820 + i32.ge_u + if + i32.const 112 + i32.const 448 + i32.const 462 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + call $~lib/rt/tlsf/computeSize ) - (func $~lib/symbol/_Symbol.for (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - global.get $~lib/symbol/stringToId - i32.eqz + (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 - call $~lib/map/Map<~lib/string/String,usize>#constructor - local.set $1 - global.get $~lib/symbol/stringToId - call $~lib/rt/stub/__release - local.get $1 - global.set $~lib/symbol/stringToId - i32.const 0 - call $~lib/map/Map#constructor - local.set $1 - global.get $~lib/symbol/idToString - call $~lib/rt/stub/__release + local.set $2 local.get $1 - global.set $~lib/symbol/idToString + i32.const 4 + i32.shr_u + local.set $3 else - global.get $~lib/symbol/stringToId - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#has - if - global.get $~lib/symbol/stringToId - local.get $0 - call $~lib/map/Map<~lib/string/String,usize>#get - local.set $1 - local.get $0 - call $~lib/rt/stub/__release + 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 - return 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 - global.get $~lib/symbol/nextId - local.tee $1 i32.const 1 - i32.add - global.set $~lib/symbol/nextId - local.get $1 - local.set $2 + 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 448 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort unreachable end - global.get $~lib/symbol/stringToId local.get $0 + local.set $5 local.get $2 - call $~lib/map/Map<~lib/string/String,usize>#set - call $~lib/rt/stub/__release - global.get $~lib/symbol/idToString - local.get $2 - local.get $0 - call $~lib/map/Map#set - call $~lib/rt/stub/__release - local.get $2 - local.set $1 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - ) - (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.2 - end - call $~lib/map/Map#find + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 - i32.ne - ) - (func $~lib/map/Map#get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $0 - local.get $1 - block $~lib/util/hash/HASH|inlined.3 (result i32) - local.get $1 - local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 4 - i32.const 1 - i32.eq - drop - i32.const 4 - i32.const 2 - i32.eq - drop - i32.const 4 - i32.const 4 - i32.eq - drop - local.get $2 - call $~lib/util/hash/hash32 - br $~lib/util/hash/HASH|inlined.3 - end - call $~lib/map/Map#find - local.set $3 + 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 - i32.const 224 - i32.const 288 - i32.const 105 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - call $~lib/rt/stub/__retain - ) - (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) - global.get $~lib/symbol/idToString - i32.const 0 - i32.ne - if (result i32) - global.get $~lib/symbol/idToString - local.get $0 - call $~lib/map/Map#has - else - i32.const 0 - end - if (result i32) - global.get $~lib/symbol/idToString local.get $0 - call $~lib/map/Map#get - else + i32.load i32.const 0 - call $~lib/rt/stub/__retain - 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 + i32.const -1 + i32.xor local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end + 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.tee $6 - i32.const 1 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl i32.add - local.set $0 - local.get $6 - local.get $1 - local.tee $6 + i32.load offset=4 + local.set $6 i32.const 1 - i32.add - local.set $1 + drop 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 + i32.eqz 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 + i32.const 0 + i32.const 448 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable 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.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 - 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.const 2 + i32.shl i32.add - local.set $1 + 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.and + 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 - 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 + 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 448 + i32.const 361 + 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 - 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 + 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 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.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 + i32.const 448 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable end - return end + i32.const 1 + drop + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and local.get $2 - i32.const 32 i32.ge_u + i32.eqz 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 + i32.const 0 + i32.const 448 + i32.const 502 + 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 + 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/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 112 + i32.const 176 + i32.const 256 + 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 176 + i32.const 290 + 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/map/Map<~lib/string/String,usize>#set:buckets (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/map/Map<~lib/string/String,usize>#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map<~lib/string/String,usize>#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map<~lib/string/String,usize>#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map<~lib/string/String,usize>#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (func $~lib/map/Map#set:buckets (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/map/Map#set:bucketsMask (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/Map#set:entries (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/map/Map#set:entriesCapacity (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=12 + ) + (func $~lib/map/Map#set:entriesOffset (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=16 + ) + (func $~lib/map/Map#set:entriesCount (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=20 + ) + (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-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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/map/MapEntry<~lib/string/String,usize>#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry<~lib/string/String,usize>#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry<~lib/string/String,usize>#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (func $~lib/util/hash/hash32 (param $0 i32) (result i32) + (local $1 i32) + i32.const -2128831035 + local.set $1 + local.get $1 + local.get $0 + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 8 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 16 + i32.shr_u + i32.const 255 + i32.and + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + local.get $0 + i32.const 24 + i32.shr_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $1 + ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.get $1 + i32.eq + else + i32.const 0 + end + if + local.get $3 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + ) + (func $~lib/map/MapEntry#set:value (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/map/MapEntry#set:key (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store + ) + (func $~lib/map/MapEntry#set:taggedNext (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 + ) + (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) + (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 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $2 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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.load + 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 + block $~lib/util/hash/HASH|inlined.1 (result i32) + local.get $12 + local.set $13 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $13 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.1 + end + 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/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 @@ -2586,479 +3708,1856 @@ i32.load8_u i32.store8 local.get $0 - local.tee $5 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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.add - local.set $0 + 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/__visit_globals (param $0 i32) + (local $1 i32) + global.get $~lib/symbol/stringToId + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $~lib/symbol/idToString + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key1 + local.tee $1 + if local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $2 - i32.const 8 - i32.and + global.get $std/symbol/key2 + local.tee $1 if + local.get $1 local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key3 + local.tee $1 + 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 + call $~lib/rt/itcms/__visit + end + global.get $std/symbol/key4 + local.tee $1 + 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 + call $~lib/rt/itcms/__visit + end + i32.const 304 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 512 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 624 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 112 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (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 - local.tee $5 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/map/Map<~lib/string/String,usize>#__visit (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 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 1 + if (result i32) i32.const 1 - i32.add - local.set $1 + else + i32.const 0 + end + drop + local.get $2 + local.set $3 + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 + if + local.get $3 + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + i32.const 1 + drop + local.get $6 + i32.load + local.set $7 + i32.const 0 + drop + local.get $7 + local.get $1 + call $~lib/rt/itcms/__visit + i32.const 0 + drop + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map<~lib/string/String,usize>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,usize>#__visit + ) + (func $~lib/map/Map#__visit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.set $2 + i32.const 0 + if (result i32) i32.const 1 - i32.add - local.set $0 + else + i32.const 1 + end + drop + local.get $2 + local.set $3 + local.get $3 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $4 + loop $while-continue|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 local.get $5 + if + local.get $3 + local.set $6 + local.get $6 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + drop + i32.const 1 + drop + local.get $6 + i32.load offset=4 + local.set $7 + i32.const 0 + drop + local.get $7 + local.get $1 + call $~lib/rt/itcms/__visit + end + local.get $3 + i32.const 12 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/map/Map~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/map/Map#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/map/Map + block $~lib/map/Map<~lib/string/String,usize> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/map/Map<~lib/string/String,usize> $~lib/map/Map $invalid + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,usize>~visit + return + end + local.get $0 local.get $1 - local.tee $5 + call $~lib/map/Map~visit + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/symbol + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 18112 + i32.const 18160 i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/util/hash/hashStr (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 + i32.const -2128831035 + local.set $1 + local.get $0 + i32.const 0 + i32.ne + if + i32.const 0 + local.set $2 local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 + i32.store local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 + call $~lib/string/String#get:length i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + i32.shl + 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 $1 + local.get $0 + local.get $2 + i32.add + i32.load8_u + i32.xor + i32.const 16777619 + i32.mul + local.set $1 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + end + local.get $1 + 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.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + i32.const 0 + i32.eq + if (result i32) i32.const 1 - i32.add - local.set $0 - local.get $5 + else local.get $1 - local.tee $5 - i32.const 1 + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $0 - local.get $5 + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/map/Map<~lib/string/String,usize>#find (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if + local.get $3 + i32.load offset=8 + local.set $5 + local.get $5 + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $3 + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/string/String.__eq + else + i32.const 0 + end + if + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + local.get $5 + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $3 + br $while-continue|0 + end + end + i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/map/Map<~lib/string/String,usize>#has (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=8 + i32.const 1 + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.0 + end + call $~lib/map/Map<~lib/string/String,usize>#find + i32.const 0 + i32.ne + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/map/Map<~lib/string/String,usize>#get (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 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) + global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $5 + local.tee $2 + i32.store offset=8 i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + drop + local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.1 + end + call $~lib/map/Map<~lib/string/String,usize>#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 624 + i32.const 688 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/map/Map<~lib/string/String,usize>#rehash (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $1 + i32.const 1 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 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 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + 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 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.load + local.tee $12 + i32.store offset=8 + local.get $11 + local.get $12 + call $~lib/map/MapEntry<~lib/string/String,usize>#set:key + local.get $11 + local.get $10 + i32.load offset=4 + call $~lib/map/MapEntry<~lib/string/String,usize>#set:value + block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $12 + local.tee $13 + i32.store offset=12 + i32.const 1 + drop + local.get $13 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=16 + local.get $15 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 + end + 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<~lib/string/String,usize>#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<~lib/string/String,usize>#set:buckets + local.get $0 + local.get $1 + call $~lib/map/Map<~lib/string/String,usize>#set:bucketsMask + local.get $0 + local.get $5 + call $~lib/map/Map<~lib/string/String,usize>#set:entries + local.get $0 + local.get $4 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity + local.get $0 + local.get $0 + i32.load offset=20 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesOffset + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/map/Map<~lib/string/String,usize>#set (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) + global.get $~lib/memory/__stack_pointer local.get $1 - local.tee $5 + local.tee $3 + i32.store i32.const 1 - i32.add - local.set $1 + drop + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/util/hash/hashStr + br $~lib/util/hash/HASH<~lib/string/String>|inlined.2 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + local.get $4 + call $~lib/map/Map<~lib/string/String,usize>#find + local.set $5 + local.get $5 + if local.get $5 - i32.load8_u - i32.store8 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,usize>#set:value + i32.const 0 + drop + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + i32.eq + if + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map<~lib/string/String,usize>#rehash + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.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.load offset=8 + local.tee $3 + i32.store + local.get $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.load offset=16 + local.tee $6 i32.const 1 i32.add - local.set $0 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesOffset + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 local.get $5 local.get $1 - local.tee $5 + call $~lib/map/MapEntry<~lib/string/String,usize>#set:key 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 + drop local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 local.get $1 - local.tee $5 i32.const 1 - i32.add - local.set $1 + call $~lib/rt/itcms/__link local.get $5 - i32.load8_u - i32.store8 + local.get $2 + call $~lib/map/MapEntry<~lib/string/String,usize>#set:value + i32.const 0 + drop 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 $0 + i32.load offset=20 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 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesCount local.get $0 - local.tee $5 - i32.const 1 + i32.load + local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul i32.add - local.set $0 + local.set $6 local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 + local.get $6 + i32.load + call $~lib/map/MapEntry<~lib/string/String,usize>#set:taggedNext + local.get $6 local.get $5 - i32.load8_u - i32.store8 + i32.store end + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 ) - (func $~lib/memory/memory.copy (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/map/Map#set (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) - block $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 - local.set $4 - local.get $2 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $3 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.0 + end + local.set $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $1 + local.get $4 + call $~lib/map/Map#find + local.set $5 + local.get $5 + if local.get $5 - local.get $4 + local.get $2 + call $~lib/map/MapEntry#set:value + i32.const 1 + drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + else + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 i32.eq if - br $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + 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 + if (result i32) + local.get $0 + i32.load offset=4 + else + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $~lib/map/Map#rehash end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $6 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesOffset + local.get $6 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $5 + local.get $1 + call $~lib/map/MapEntry#set:key i32.const 0 + drop + local.get $5 + local.get $2 + call $~lib/map/MapEntry#set:value i32.const 1 - i32.lt_s drop + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + call $~lib/map/Map#set:entriesCount + local.get $0 + i32.load local.get $4 + local.get $0 + i32.load offset=4 + i32.and + i32.const 4 + i32.mul + i32.add + local.set $6 local.get $5 - i32.sub - local.get $3 - i32.sub + local.get $6 + i32.load + call $~lib/map/MapEntry#set:taggedNext + local.get $6 + local.get $5 + i32.store + end + local.get $0 + 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/symbol/_Symbol.for (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/symbol/stringToId + i32.eqz + if i32.const 0 + call $~lib/map/Map<~lib/string/String,usize>#constructor + global.set $~lib/symbol/stringToId + i32.const 0 + call $~lib/map/Map#constructor + global.set $~lib/symbol/idToString + else + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.shl - i32.sub - i32.le_u + i32.store + local.get $3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/map/Map<~lib/string/String,usize>#has if - local.get $5 - local.get $4 + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer 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 + i32.store + local.get $3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $~lib/map/Map<~lib/string/String,usize>#get + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end end + global.get $~lib/symbol/nextId + local.tee $1 + i32.const 1 + i32.add + global.set $~lib/symbol/nextId + local.get $1 + local.set $2 + local.get $2 + i32.eqz + if + unreachable + end + global.get $~lib/symbol/stringToId + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + call $~lib/map/Map<~lib/string/String,usize>#set + drop + global.get $~lib/symbol/idToString + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $2 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/map/Map#set + drop + local.get $2 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/map/Map#has (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 $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $1 + block $~lib/util/hash/HASH|inlined.2 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.2 + end + call $~lib/map/Map#find + i32.const 0 + i32.ne + 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/map/Map#get (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 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + block $~lib/util/hash/HASH|inlined.3 (result i32) + local.get $1 + local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 1 + i32.eq + drop + i32.const 4 + i32.const 2 + i32.eq + drop + i32.const 4 + i32.const 4 + i32.eq + drop + local.get $2 + call $~lib/util/hash/hash32 + br $~lib/util/hash/HASH|inlined.3 + end + call $~lib/map/Map#find + local.set $3 + local.get $3 + i32.eqz + if + i32.const 624 + i32.const 688 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/symbol/_Symbol.keyFor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/symbol/idToString + i32.const 0 + i32.ne + if (result i32) + global.get $~lib/symbol/idToString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/map/Map#has + else + i32.const 0 + end + if (result i32) + global.get $~lib/symbol/idToString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/map/Map#get + else + i32.const 0 + end + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $~lib/string/String#concat (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3066,97 +5565,120 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + 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 0 i32.eq if - i32.const 976 - 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 + global.get $~lib/memory/__stack_pointer + i32.const 1376 + local.tee $1 + i32.store end local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $4 + local.set $2 local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/string/String#get:length i32.const 1 i32.shl - local.set $5 - local.get $4 - local.get $5 + local.set $3 + local.get $2 + local.get $3 i32.add - local.set $6 - local.get $6 + local.set $4 + local.get $4 i32.const 0 i32.eq if - i32.const 400 - call $~lib/rt/stub/__retain - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + i32.const 800 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 return end - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 1 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $7 - local.get $7 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=8 + local.get $5 local.get $0 - local.get $4 + local.get $2 call $~lib/memory/memory.copy - local.get $7 - local.get $4 + local.get $5 + local.get $2 i32.add local.get $1 - local.get $5 + local.get $3 call $~lib/memory/memory.copy - local.get $7 - local.set $2 - local.get $1 - call $~lib/rt/stub/__release - local.get $2 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 ) (func $~lib/string/String.__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 + i64.const 0 + i64.store local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 - local.get $0 - i32.const 976 + i32.const 1376 local.get $0 i32.const 0 i32.ne select + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/string/String#concat local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 ) (func $~lib/symbol/_Symbol#toString (param $0 i32) (result i32) @@ -3164,11 +5686,26 @@ (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 local.set $1 - i32.const 400 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 800 + local.tee $2 + i32.store block $break|0 block $case11|0 block $case10|0 @@ -3230,92 +5767,70 @@ br_if $case10|0 br $case11|0 end - i32.const 432 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 832 + local.tee $2 + i32.store br $break|0 end - i32.const 480 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 880 + local.tee $2 + i32.store br $break|0 end - i32.const 544 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 944 + local.tee $2 + i32.store br $break|0 end - i32.const 592 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 992 + local.tee $2 + i32.store br $break|0 end - i32.const 624 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1024 + local.tee $2 + i32.store br $break|0 end - i32.const 672 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1072 + local.tee $2 + i32.store br $break|0 end - i32.const 704 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1104 + local.tee $2 + i32.store br $break|0 end - i32.const 752 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1152 + local.tee $2 + i32.store br $break|0 end - i32.const 784 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1184 + local.tee $2 + i32.store br $break|0 end - i32.const 832 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1232 + local.tee $2 + i32.store br $break|0 end - i32.const 880 - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 1280 + local.tee $2 + i32.store br $break|0 end global.get $~lib/symbol/idToString @@ -3323,46 +5838,91 @@ i32.ne if (result i32) global.get $~lib/symbol/idToString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $1 call $~lib/map/Map#has else i32.const 0 end if + global.get $~lib/memory/__stack_pointer global.get $~lib/symbol/idToString + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 local.get $1 call $~lib/map/Map#get - local.set $3 - local.get $2 - call $~lib/rt/stub/__release - local.get $3 - local.set $2 + local.tee $2 + i32.store end br $break|0 end - i32.const 928 + i32.const 1328 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 local.get $2 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 call $~lib/string/String.__concat - local.tee $3 - i32.const 1008 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1408 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 call $~lib/string/String.__concat - local.tee $4 - local.set $5 - local.get $3 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 ) (func $start:std/symbol (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/symbol/Symbol global.set $std/symbol/sym1 i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/symbol/Symbol global.set $std/symbol/sym2 global.get $std/symbol/sym1 @@ -3377,24 +5937,29 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 400 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/symbol/_Symbol.for global.set $std/symbol/sym3 i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 call $~lib/symbol/_Symbol.for global.set $std/symbol/sym4 global.get $std/symbol/sym3 @@ -3439,38 +6004,52 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer global.get $std/symbol/sym3 call $~lib/symbol/_Symbol.keyFor local.tee $0 + i32.store offset=4 + local.get $0 if (result i32) local.get $0 else - i32.const 336 + i32.const 736 i32.const 64 i32.const 17 i32.const 12 call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain global.set $std/symbol/key3 + global.get $~lib/memory/__stack_pointer global.get $std/symbol/sym4 call $~lib/symbol/_Symbol.keyFor local.tee $0 + i32.store offset=4 + local.get $0 if (result i32) local.get $0 else - i32.const 336 + i32.const 736 i32.const 64 i32.const 18 i32.const 12 call $~lib/builtins/abort unreachable end - call $~lib/rt/stub/__retain global.set $std/symbol/key4 global.get $std/symbol/key3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 i32.const 32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3482,7 +6061,17 @@ unreachable end global.get $std/symbol/key3 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 global.get $std/symbol/key4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3496,8 +6085,17 @@ i32.const 0 call $~lib/symbol/Symbol call $~lib/symbol/_Symbol#toString - local.tee $0 - i32.const 1040 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1440 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3510,8 +6108,17 @@ end global.get $std/symbol/sym3 call $~lib/symbol/_Symbol#toString - local.tee $1 - i32.const 1088 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1488 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3528,8 +6135,17 @@ global.set $std/symbol/isConcatSpreadable global.get $std/symbol/hasInstance call $~lib/symbol/_Symbol#toString - local.tee $2 - i32.const 1136 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1536 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3542,8 +6158,17 @@ end global.get $std/symbol/isConcatSpreadable call $~lib/symbol/_Symbol#toString - local.tee $3 - i32.const 1200 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1600 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 call $~lib/string/String.__eq i32.eqz if @@ -3558,22 +6183,161 @@ drop global.get $~lib/symbol/_Symbol.isConcatSpreadable drop - local.get $0 - call $~lib/rt/stub/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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 512 + i32.const 560 + i32.const 49 + 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 + local.get $2 + i32.const 0 local.get $1 - call $~lib/rt/stub/__release + call $~lib/memory/memory.fill local.get $2 - call $~lib/rt/stub/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/stub/__release ) - (func $~start - global.get $~started + (func $~lib/map/Map<~lib/string/String,usize>#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 - return + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:buckets + local.get $0 + i32.const 4 + i32.const 1 + i32.sub + call $~lib/map/Map<~lib/string/String,usize>#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map<~lib/string/String,usize>#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map<~lib/string/String,usize>#set:entriesCount + 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/map/Map#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 24 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + local.get $0 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:buckets + local.get $0 + i32.const 4 i32.const 1 - global.set $~started - call $start:std/symbol + i32.sub + call $~lib/map/Map#set:bucketsMask + local.get $0 + i32.const 0 + i32.const 4 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + call $~lib/map/Map#set:entries + local.get $0 + i32.const 4 + call $~lib/map/Map#set:entriesCapacity + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesOffset + local.get $0 + i32.const 0 + call $~lib/map/Map#set:entriesCount + 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/std/trace.json b/tests/compiler/std/trace.json index bf222c4d2d..65091e5197 100644 --- a/tests/compiler/std/trace.json +++ b/tests/compiler/std/trace.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 2a0e521ca4..1f67e01c61 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -1,19 +1,30 @@ (module (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (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\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") - (data (i32.const 1132) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") - (data (i32.const 1180) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") - (data (i32.const 1228) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") - (data (i32.const 1276) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") - (data (i32.const 1324) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") - (data (i32.const 1372) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t") + (data (i32.const 1084) ",") + (data (i32.const 1096) "\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t") + (data (i32.const 1132) ",") + (data (i32.const 1144) "\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t") + (data (i32.const 1180) ",") + (data (i32.const 1192) "\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t") + (data (i32.const 1228) ",") + (data (i32.const 1240) "\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t") + (data (i32.const 1276) ",") + (data (i32.const 1288) "\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") + (data (i32.const 1324) ",") + (data (i32.const 1336) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") + (data (i32.const 1372) ",") + (data (i32.const 1384) "\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17804)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~start global.get $~started if @@ -21,6 +32,30 @@ end i32.const 1 global.set $~started + call $start:std/trace + ) + (func $start:std/trace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1420 + i32.lt_s + if + i32.const 17824 + i32.const 17872 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.const 0 f64.const 0 @@ -29,6 +64,9 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1104 + i32.store i32.const 1104 i32.const 0 f64.const 0 @@ -37,6 +75,9 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store i32.const 1152 i32.const 1 f64.const 1 @@ -45,6 +86,9 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store i32.const 1200 i32.const 2 f64.const 1 @@ -53,6 +97,9 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store i32.const 1248 i32.const 3 f64.const 1 @@ -61,6 +108,9 @@ f64.const 0 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store i32.const 1296 i32.const 4 f64.const 1 @@ -69,6 +119,9 @@ f64.const 4 f64.const 0 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store i32.const 1344 i32.const 5 f64.const 1 @@ -77,6 +130,9 @@ f64.const 4 f64.const 5 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 1392 + i32.store i32.const 1392 i32.const 5 f64.const 1.1 @@ -85,5 +141,9 @@ f64.const 4.4 f64.const 5.5 call $~lib/builtins/trace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index 7896fe16d4..4c09463ca3 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -1,22 +1,63 @@ (module (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) + (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\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00\00\00") - (data (i32.const 60) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00\00\00") - (data (i32.const 108) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 156) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 204) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 252) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\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\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 348) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00i\00m\00p\00l\00i\00c\00i\00t\00\00\00") + (data (i32.const 60) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00z\00e\00r\00o\00_\00e\00x\00p\00l\00i\00c\00i\00t\00\00\00") + (data (i32.const 108) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00o\00n\00e\00_\00i\00n\00t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 156) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00t\00w\00o\00_\00i\00n\00t\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\12\00\00\00t\00h\00r\00e\00e\00_\00i\00n\00t\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\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t\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\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\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\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00\00\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (global $~lib/memory/__data_end i32 (i32.const 396)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 16780)) + (global $~lib/memory/__heap_base i32 (i32.const 16780)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:std/trace + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16800 + i32.const 16848 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $start:std/trace + (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 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 f64.const 0 f64.const 0 @@ -25,6 +66,11 @@ f64.const 0 call $~lib/builtins/trace i32.const 80 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 f64.const 0 f64.const 0 @@ -33,6 +79,11 @@ 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 i32.const 1 f64.const 1 f64.const 0 @@ -41,6 +92,11 @@ f64.const 0 call $~lib/builtins/trace i32.const 176 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 2 f64.const 1 f64.const 2 @@ -49,6 +105,11 @@ f64.const 0 call $~lib/builtins/trace i32.const 224 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 3 f64.const 1 f64.const 2 @@ -57,6 +118,11 @@ f64.const 0 call $~lib/builtins/trace i32.const 272 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 4 f64.const 1 f64.const 2 @@ -65,6 +131,11 @@ f64.const 0 call $~lib/builtins/trace i32.const 320 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 5 f64.const 1 f64.const 2 @@ -73,6 +144,11 @@ f64.const 5 call $~lib/builtins/trace i32.const 368 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 5 f64.const 1.1 f64.const 2.2 @@ -80,14 +156,9 @@ f64.const 4.4 f64.const 5.5 call $~lib/builtins/trace - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:std/trace + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/std/typedarray.json b/tests/compiler/std/typedarray.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/std/typedarray.json +++ b/tests/compiler/std/typedarray.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 765dda5c5d..9d3a1c4ab2 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1,403 +1,581 @@ (module + (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 $none_=>_none (func)) (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_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i64_i32_i32_=>_i64 (func (param i64 i32 i32) (result i64))) - (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $f32_f32_i32_i32_=>_f32 (func (param f32 f32 i32 i32) (result f32))) (type $f64_f64_i32_i32_=>_f64 (func (param f64 f64 i32 i32) (result f64))) (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i64_i32_i32_=>_none (func (param i64 i32 i32))) (type $f32_i32_i32_=>_none (func (param f32 i32 i32))) (type $f64_i32_i32_=>_none (func (param f64 i32 i32))) - (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_f32_i32_=>_i32 (func (param i32 f32 i32) (result i32))) (type $i32_f64_i32_=>_i32 (func (param i32 f64 i32) (result i32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_i32_i32_=>_f32 (func (param f32 i32 i32) (result f32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (type $f64_i32_i32_=>_f64 (func (param f64 i32 i32) (result f64))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_=>_none (func (param i32 i64 i32))) + (type $none_=>_i32 (func (result i32))) + (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $i32_f32_=>_i32 (func (param i32 f32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_=>_f64 (func (param f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (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&\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\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 1212) "<\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 1276) "<\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 1340) "<\00\00\00\01\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 1404) "<\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 1468) "<\00\00\00\01\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 1532) "\1c\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01") - (data (i32.const 1564) "\1c\00\00\00\01") - (data (i32.const 1580) "\05\00\00\00\01\01\01\04\05") - (data (i32.const 1596) ",\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 1644) "\1c\00\00\00\01") - (data (i32.const 1660) "\05") - (data (i32.const 1676) "\1c\00\00\00\01") - (data (i32.const 1692) "\05\00\00\00\01\01") - (data (i32.const 1708) "\1c\00\00\00\01") - (data (i32.const 1724) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1740) "\1c\00\00\00\01") - (data (i32.const 1756) "\05\00\00\00\01\01\00\02\02") - (data (i32.const 1772) "\1c\00\00\00\01") - (data (i32.const 1788) "\03") - (data (i32.const 1804) "\1c\00\00\00\01") - (data (i32.const 1820) "\05\00\00\00\01\00\00\00\02") - (data (i32.const 1836) ",\00\00\00\01") - (data (i32.const 1852) "\14\00\00\00\01\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00\05") - (data (i32.const 1884) ",\00\00\00\01") - (data (i32.const 1900) "\14") - (data (i32.const 1932) ",\00\00\00\01") - (data (i32.const 1948) "\14\00\00\00\01\00\00\00\01") - (data (i32.const 1980) ",\00\00\00\01") - (data (i32.const 1996) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2028) ",\00\00\00\01") - (data (i32.const 2044) "\14\00\00\00\01\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\02") - (data (i32.const 2076) "\1c\00\00\00\01") - (data (i32.const 2092) "\0c") - (data (i32.const 2108) ",\00\00\00\01") - (data (i32.const 2124) "\14\00\00\00\01") - (data (i32.const 2144) "\02") - (data (i32.const 2156) ",\00\00\00\01") - (data (i32.const 2172) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2204) ",\00\00\00\01") - (data (i32.const 2220) "\14\00\00\00\01\00\00\00\04\00\00\00\05\00\00\00\04\00\00\00\05") - (data (i32.const 2252) ",\00\00\00\01") - (data (i32.const 2268) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2300) ",\00\00\00\01") - (data (i32.const 2316) "\14\00\00\00\01\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2348) ",\00\00\00\01") - (data (i32.const 2364) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2396) ",\00\00\00\01") - (data (i32.const 2412) "\14\00\00\00\01\00\00\00\04\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2444) ",\00\00\00\01") - (data (i32.const 2460) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2492) ",\00\00\00\01") - (data (i32.const 2508) "\14\00\00\00\04\00\00\00\05\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2540) ",\00\00\00\01") - (data (i32.const 2556) "\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2588) ",\00\00\00\01") - (data (i32.const 2604) "\14\00\00\00\01\00\00\00\03\00\00\00\03\00\00\00\04\00\00\00\05") - (data (i32.const 2636) ",\00\00\00\01") - (data (i32.const 2652) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\04\00\00\00\05") - (data (i32.const 2684) ",\00\00\00\01") - (data (i32.const 2700) "\14\00\00\00\01\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\05") - (data (i32.const 2732) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02") - (data (i32.const 2764) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03") - (data (i32.const 2796) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04") - (data (i32.const 2828) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05") - (data (i32.const 2860) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06") - (data (i32.const 2892) "\1c\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07") - (data (i32.const 2924) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08") - (data (i32.const 2956) "\1c\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t") - (data (i32.const 2988) "\1c\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n") - (data (i32.const 3020) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b") - (data (i32.const 3052) "\1c\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c") - (data (i32.const 3084) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d") - (data (i32.const 3116) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e") - (data (i32.const 3148) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f") - (data (i32.const 3180) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10") - (data (i32.const 3212) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11") - (data (i32.const 3244) "\1c\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12") - (data (i32.const 3276) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13") - (data (i32.const 3308) "\1c\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14") - (data (i32.const 3340) "\1c\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15") - (data (i32.const 3372) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16") - (data (i32.const 3404) "\1c\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17") - (data (i32.const 3436) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18") - (data (i32.const 3468) "\1c\00\00\00\01\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19") - (data (i32.const 3500) "\1c\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a") - (data (i32.const 3532) "\1c\00\00\00\01\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b") - (data (i32.const 3564) "\1c\00\00\00\01\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c") - (data (i32.const 3596) "\1c\00\00\00\01\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d") - (data (i32.const 3628) "\1c\00\00\00\01\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e") - (data (i32.const 3660) "\1c\00\00\00\01\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f") - (data (i32.const 3692) "\1c\00\00\00\01\00\00\00\00\00\00\00$\00\00\00\08\00\00\00 ") - (data (i32.const 3724) "\1c\00\00\00\01\00\00\00\00\00\00\00%\00\00\00\08\00\00\00!") - (data (i32.const 3756) "\1c\00\00\00\01\00\00\00\00\00\00\00&\00\00\00\08\00\00\00\"") - (data (i32.const 3788) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00#") - (data (i32.const 3820) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00$") - (data (i32.const 3852) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00%") - (data (i32.const 3884) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00&") - (data (i32.const 3916) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00\'") - (data (i32.const 3948) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00(") - (data (i32.const 3980) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00)") - (data (i32.const 4012) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00*") - (data (i32.const 4044) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00+") - (data (i32.const 4076) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00,") - (data (i32.const 4108) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00-") - (data (i32.const 4140) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00.") - (data (i32.const 4172) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00/") - (data (i32.const 4204) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\000") - (data (i32.const 4236) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\001") - (data (i32.const 4268) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\002") - (data (i32.const 4300) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\003") - (data (i32.const 4332) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\004") - (data (i32.const 4364) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\005") - (data (i32.const 4396) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\006") - (data (i32.const 4428) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\007") - (data (i32.const 4460) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\008") - (data (i32.const 4492) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\009") - (data (i32.const 4524) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00:") - (data (i32.const 4556) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00;") - (data (i32.const 4588) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00<") - (data (i32.const 4620) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00=") - (data (i32.const 4652) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00>") - (data (i32.const 4684) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00?") - (data (i32.const 4716) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00@") - (data (i32.const 4748) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00A") - (data (i32.const 4780) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00B") - (data (i32.const 4812) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00C") - (data (i32.const 4844) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00D") - (data (i32.const 4876) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00E") - (data (i32.const 4908) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00F") - (data (i32.const 4940) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00G") - (data (i32.const 4972) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00H") - (data (i32.const 5004) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00I") - (data (i32.const 5036) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00J") - (data (i32.const 5068) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00K") - (data (i32.const 5100) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L") - (data (i32.const 5132) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M") - (data (i32.const 5164) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N") - (data (i32.const 5196) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O") - (data (i32.const 5228) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P") - (data (i32.const 5260) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q") - (data (i32.const 5292) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R") - (data (i32.const 5324) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S") - (data (i32.const 5356) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T") - (data (i32.const 5388) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U") - (data (i32.const 5420) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00V") - (data (i32.const 5452) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00W") - (data (i32.const 5484) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00X") - (data (i32.const 5516) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y") - (data (i32.const 5548) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z") - (data (i32.const 5580) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00[") - (data (i32.const 5612) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00\\") - (data (i32.const 5644) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00]") - (data (i32.const 5676) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00^") - (data (i32.const 5708) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00_") - (data (i32.const 5740) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00`") - (data (i32.const 5772) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a") - (data (i32.const 5804) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b") - (data (i32.const 5836) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c") - (data (i32.const 5868) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d") - (data (i32.const 5900) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e") - (data (i32.const 5932) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f") - (data (i32.const 5964) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g") - (data (i32.const 5996) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h") - (data (i32.const 6028) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i") - (data (i32.const 6060) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j") - (data (i32.const 6092) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k") - (data (i32.const 6124) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00l") - (data (i32.const 6156) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00m") - (data (i32.const 6188) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00n") - (data (i32.const 6220) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00o") - (data (i32.const 6252) "\1c\00\00\00\01") - (data (i32.const 6268) "\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") - (data (i32.const 6284) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80\18\00\00\80\18\00\00\0c\00\00\00\03") - (data (i32.const 6332) "\1c\00\00\00\01\00\00\00\00\00\00\002\00\00\00\08\00\00\00p") - (data (i32.const 6364) "\1c\00\00\00\01\00\00\00\00\00\00\003\00\00\00\08\00\00\00q") - (data (i32.const 6396) "\1c\00\00\00\01\00\00\00\00\00\00\004\00\00\00\08\00\00\00r") - (data (i32.const 6428) "\1c\00\00\00\01\00\00\00\00\00\00\005\00\00\00\08\00\00\00s") - (data (i32.const 6460) "\1c\00\00\00\01\00\00\00\00\00\00\006\00\00\00\08\00\00\00t") - (data (i32.const 6492) "\1c\00\00\00\01\00\00\00\00\00\00\007\00\00\00\08\00\00\00u") - (data (i32.const 6524) "\1c\00\00\00\01\00\00\00\00\00\00\008\00\00\00\08\00\00\00v") - (data (i32.const 6556) "\1c\00\00\00\01\00\00\00\00\00\00\009\00\00\00\08\00\00\00w") - (data (i32.const 6588) "\1c\00\00\00\01\00\00\00\00\00\00\00:\00\00\00\08\00\00\00x") - (data (i32.const 6620) "\1c\00\00\00\01\00\00\00\00\00\00\00;\00\00\00\08\00\00\00y") - (data (i32.const 6652) "\1c\00\00\00\01\00\00\00\00\00\00\00<\00\00\00\08\00\00\00z") - (data (i32.const 6684) "<\00\00\00\01") - (data (i32.const 6700) "$\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 6748) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\000\1a\00\000\1a\00\00$\00\00\00\t") - (data (i32.const 6796) "<\00\00\00\01") - (data (i32.const 6812) ",\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 6860) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\a0\1a\00\00\a0\1a\00\00,\00\00\00\0b") - (data (i32.const 6908) "\1c\00\00\00\01\00\00\00\00\00\00\00\01") - (data (i32.const 6940) "|\00\00\00\01\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 7068) "<\00\00\00\01\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 7132) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\000") - (data (i32.const 7164) "\\\00\00\00\01\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) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00,") - (data (i32.const 7292) ",\00\00\00\01\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 7340) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\000\00.\000") - (data (i32.const 7372) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\00N\00a\00N") - (data (i32.const 7404) ",\00\00\00\01\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 7452) ",\00\00\00\01\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 7560) "\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 8908) "\1c\00\00\00\01") - (data (i32.const 8924) "\03\00\00\00\92\91\90") - (data (i32.const 8940) ",\00\00\00\01\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 8988) "\1c\00\00\00\01") - (data (i32.const 9004) "\n\00\00\00\01\02\03") - (data (i32.const 9020) ",\00\00\00\01\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 9068) "\1c\00\00\00\01") - (data (i32.const 9084) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9100) "\1c\00\00\00\01") - (data (i32.const 9116) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9132) "\1c\00\00\00\01") - (data (i32.const 9148) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9164) "\1c\00\00\00\01") - (data (i32.const 9180) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9196) "\1c\00\00\00\01") - (data (i32.const 9212) "\n\00\00\00\01\02\03") - (data (i32.const 9228) ",\00\00\00\01\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 9276) "\1c\00\00\00\01") - (data (i32.const 9292) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9308) "\1c\00\00\00\01") - (data (i32.const 9324) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9340) "\1c\00\00\00\01") - (data (i32.const 9356) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9372) "\1c\00\00\00\01") - (data (i32.const 9388) "\n\00\00\00defg\e8\e9\ea\92\91\90") - (data (i32.const 9404) "\1c\00\00\00\01") - (data (i32.const 9420) "\n\00\00\00\01\02\03") - (data (i32.const 9436) "<\00\00\00\01\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 9500) "\1c\00\00\00\01") - (data (i32.const 9516) "\n\00\00\00\01\02\03\04\05\06") - (data (i32.const 9532) "\1c\00\00\00\01") - (data (i32.const 9548) "\n\00\00\00\01\02\03\04\05\06\07\08\t") - (data (i32.const 9564) "\1c\00\00\00\01") - (data (i32.const 9580) "\n\00\00\00\01\02\00\00\00\06\07\08\t") - (data (i32.const 9596) "\1c\00\00\00\01") - (data (i32.const 9612) "\n\00\00\00defg\ff\ff\ff") - (data (i32.const 9628) ",\00\00\00\01") - (data (i32.const 9644) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 9676) ",\00\00\00\01\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 9724) ",\00\00\00\01") - (data (i32.const 9740) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 9772) ",\00\00\00\01") - (data (i32.const 9788) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 9820) ",\00\00\00\01") - (data (i32.const 9836) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 9868) ",\00\00\00\01") - (data (i32.const 9884) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 9916) ",\00\00\00\01") - (data (i32.const 9932) "\14\00\00\00\01\00\02\00\03") - (data (i32.const 9964) ",\00\00\00\01\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 10012) ",\00\00\00\01") - (data (i32.const 10028) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") - (data (i32.const 10060) ",\00\00\00\01") - (data (i32.const 10076) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") - (data (i32.const 10108) ",\00\00\00\01") - (data (i32.const 10124) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") - (data (i32.const 10156) ",\00\00\00\01") - (data (i32.const 10172) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") - (data (i32.const 10204) "<\00\00\00\01") - (data (i32.const 10220) "(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10268) ",\00\00\00\01\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 10316) "<\00\00\00\01") - (data (i32.const 10332) "(\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 10380) "<\00\00\00\01") - (data (i32.const 10396) "(\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 10444) "<\00\00\00\01") - (data (i32.const 10460) "(\00\00\00\01\00\00\00\02") - (data (i32.const 10484) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10508) "<\00\00\00\01") - (data (i32.const 10524) "(\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 10572) "<\00\00\00\01") - (data (i32.const 10588) "(\00\00\00\01\00\00\00\02\00\00\00\03") - (data (i32.const 10636) ",\00\00\00\01\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 10684) "<\00\00\00\01") - (data (i32.const 10700) "(\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 10748) "<\00\00\00\01") - (data (i32.const 10764) "(\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 10812) "<\00\00\00\01") - (data (i32.const 10828) "(\00\00\00\01\00\00\00\02") - (data (i32.const 10852) "\06\00\00\00\07\00\00\00\08\00\00\00\t") - (data (i32.const 10876) "<\00\00\00\01") - (data (i32.const 10892) "(\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 10940) "l\00\00\00\01") - (data (i32.const 10956) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 11052) ",\00\00\00\01\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 11100) "l\00\00\00\01") - (data (i32.const 11116) "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 11212) "l\00\00\00\01") - (data (i32.const 11228) "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 11324) "l\00\00\00\01") - (data (i32.const 11340) "P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11384) "\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 11436) "l\00\00\00\01") - (data (i32.const 11452) "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 11548) "l\00\00\00\01") - (data (i32.const 11564) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") - (data (i32.const 11660) ",\00\00\00\01\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 11708) "l\00\00\00\01") - (data (i32.const 11724) "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 11820) "l\00\00\00\01") - (data (i32.const 11836) "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 11932) "l\00\00\00\01") - (data (i32.const 11948) "P\00\00\00\01\00\00\00\00\00\00\00\02") - (data (i32.const 11992) "\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 12044) "l\00\00\00\01") - (data (i32.const 12060) "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 12156) "<\00\00\00\01") - (data (i32.const 12172) "(\00\00\00\00\00\80?\00\00\00@\00\00@@") - (data (i32.const 12220) ",\00\00\00\01\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 12268) "<\00\00\00\01") - (data (i32.const 12284) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") - (data (i32.const 12332) "<\00\00\00\01") - (data (i32.const 12348) "(\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 12396) "<\00\00\00\01") - (data (i32.const 12412) "(\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 12460) "l\00\00\00\01") - (data (i32.const 12476) "P") - (data (i32.const 12486) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") - (data (i32.const 12572) ",\00\00\00\01\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 12620) "l\00\00\00\01") - (data (i32.const 12636) "P") - (data (i32.const 12646) "\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 12732) "l\00\00\00\01") - (data (i32.const 12748) "P") - (data (i32.const 12758) "\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 12844) "l\00\00\00\01") - (data (i32.const 12860) "P") - (data (i32.const 12870) "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 12956) "\1c\00\00\00\01") - (data (i32.const 12972) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") - (data (i32.const 12988) "\1c\00\00\00\01") - (data (i32.const 13004) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (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 6412) "\0c\00\00\00\n\00\00\00\0c\00\00\00\0e") + (data (i32.const 6428) ",") + (data (i32.const 6440) "\10\00\00\00\10\00\00\00\10\19\00\00\10\19\00\00\0c\00\00\00\03") + (data (i32.const 6476) "\1c") + (data (i32.const 6488) "2\00\00\00\08\00\00\00p") + (data (i32.const 6508) "\1c") + (data (i32.const 6520) "3\00\00\00\08\00\00\00q") + (data (i32.const 6540) "\1c") + (data (i32.const 6552) "4\00\00\00\08\00\00\00r") + (data (i32.const 6572) "\1c") + (data (i32.const 6584) "5\00\00\00\08\00\00\00s") + (data (i32.const 6604) "\1c") + (data (i32.const 6616) "6\00\00\00\08\00\00\00t") + (data (i32.const 6636) "\1c") + (data (i32.const 6648) "7\00\00\00\08\00\00\00u") + (data (i32.const 6668) "\1c") + (data (i32.const 6680) "8\00\00\00\08\00\00\00v") + (data (i32.const 6700) "\1c") + (data (i32.const 6712) "9\00\00\00\08\00\00\00w") + (data (i32.const 6732) "\1c") + (data (i32.const 6744) ":\00\00\00\08\00\00\00x") + (data (i32.const 6764) "\1c") + (data (i32.const 6776) ";\00\00\00\08\00\00\00y") + (data (i32.const 6796) "\1c") + (data (i32.const 6808) "<\00\00\00\08\00\00\00z") + (data (i32.const 6828) "<") + (data (i32.const 6844) "$\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 6892) ",") + (data (i32.const 6904) "\10\00\00\00\10\00\00\00\c0\1a\00\00\c0\1a\00\00$\00\00\00\t") + (data (i32.const 6940) "<") + (data (i32.const 6956) ",\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 7004) ",") + (data (i32.const 7016) "\10\00\00\00\10\00\00\000\1b\00\000\1b\00\00,\00\00\00\0b") + (data (i32.const 7052) "\1c") + (data (i32.const 7064) "\01") + (data (i32.const 7084) "|") + (data (i32.const 7096) "\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 7212) "<") + (data (i32.const 7224) "\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 7276) "\1c") + (data (i32.const 7288) "\01\00\00\00\02\00\00\000") + (data (i32.const 7308) "\\") + (data (i32.const 7320) "\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 7404) "\1c") + (data (i32.const 7416) "\01\00\00\00\02\00\00\00,") + (data (i32.const 7436) ",") + (data (i32.const 7448) "\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005") + (data (i32.const 7484) "\1c") + (data (i32.const 7496) "\01\00\00\00\06\00\00\000\00.\000") + (data (i32.const 7516) "\1c") + (data (i32.const 7528) "\01\00\00\00\06\00\00\00N\00a\00N") + (data (i32.const 7548) ",") + (data (i32.const 7560) "\01\00\00\00\12\00\00\00-\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 7596) ",") + (data (i32.const 7608) "\01\00\00\00\10\00\00\00I\00n\00f\00i\00n\00i\00t\00y") + (data (i32.const 7704) "\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\10#\00\00\10#\00\00\18\00\00\00\03") + (data (i32.const 9052) "\1c") + (data (i32.const 9068) "\03\00\00\00\92\91\90") + (data (i32.const 9084) ",") + (data (i32.const 9096) "\0f\00\00\00\10\00\00\00p#\00\00p#\00\00\03\00\00\00\03") + (data (i32.const 9132) "\1c") + (data (i32.const 9148) "\n\00\00\00\01\02\03") + (data (i32.const 9164) ",") + (data (i32.const 9176) "\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 9212) "\1c") + (data (i32.const 9228) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9244) "\1c") + (data (i32.const 9260) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9276) "\1c") + (data (i32.const 9292) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9308) "\1c") + (data (i32.const 9324) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9340) "\1c") + (data (i32.const 9356) "\n\00\00\00\01\02\03") + (data (i32.const 9372) ",") + (data (i32.const 9384) "\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y") + (data (i32.const 9420) "\1c") + (data (i32.const 9436) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9452) "\1c") + (data (i32.const 9468) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9484) "\1c") + (data (i32.const 9500) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9516) "\1c") + (data (i32.const 9532) "\n\00\00\00defg\e8\e9\ea\92\91\90") + (data (i32.const 9548) "\1c") + (data (i32.const 9564) "\n\00\00\00\01\02\03") + (data (i32.const 9580) "<") + (data (i32.const 9592) "\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 9644) "\1c") + (data (i32.const 9660) "\n\00\00\00\01\02\03\04\05\06") + (data (i32.const 9676) "\1c") + (data (i32.const 9692) "\n\00\00\00\01\02\03\04\05\06\07\08\t") + (data (i32.const 9708) "\1c") + (data (i32.const 9724) "\n\00\00\00\01\02\00\00\00\06\07\08\t") + (data (i32.const 9740) "\1c") + (data (i32.const 9756) "\n\00\00\00defg\ff\ff\ff") + (data (i32.const 9772) ",") + (data (i32.const 9788) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 9820) ",") + (data (i32.const 9832) "\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 9868) ",") + (data (i32.const 9884) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 9916) ",") + (data (i32.const 9932) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 9964) ",") + (data (i32.const 9980) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 10012) ",") + (data (i32.const 10028) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 10060) ",") + (data (i32.const 10076) "\14\00\00\00\01\00\02\00\03") + (data (i32.const 10108) ",") + (data (i32.const 10120) "\01\00\00\00\16\00\00\00U\00i\00n\00t\001\006\00A\00r\00r\00a\00y") + (data (i32.const 10156) ",") + (data (i32.const 10172) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06") + (data (i32.const 10204) ",") + (data (i32.const 10220) "\14\00\00\00\01\00\02\00\03\00\04\00\05\00\06\00\07\00\08\00\t") + (data (i32.const 10252) ",") + (data (i32.const 10268) "\14\00\00\00\01\00\02\00\00\00\00\00\00\00\06\00\07\00\08\00\t") + (data (i32.const 10300) ",") + (data (i32.const 10316) "\14\00\00\00d\00e\00f\00g\00\e8\03\e9\03\ea\03\92\ff\91\ff\90\ff") + (data (i32.const 10348) "<") + (data (i32.const 10364) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10412) ",") + (data (i32.const 10424) "\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 10460) "<") + (data (i32.const 10476) "(\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 10524) "<") + (data (i32.const 10540) "(\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 10588) "<") + (data (i32.const 10604) "(\00\00\00\01\00\00\00\02") + (data (i32.const 10628) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 10652) "<") + (data (i32.const 10668) "(\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 10716) "<") + (data (i32.const 10732) "(\00\00\00\01\00\00\00\02\00\00\00\03") + (data (i32.const 10780) ",") + (data (i32.const 10792) "\01\00\00\00\16\00\00\00U\00i\00n\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 10828) "<") + (data (i32.const 10844) "(\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 10892) "<") + (data (i32.const 10908) "(\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 10956) "<") + (data (i32.const 10972) "(\00\00\00\01\00\00\00\02") + (data (i32.const 10996) "\06\00\00\00\07\00\00\00\08\00\00\00\t") + (data (i32.const 11020) "<") + (data (i32.const 11036) "(\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 11084) "l") + (data (i32.const 11100) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 11196) ",") + (data (i32.const 11208) "\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 11244) "l") + (data (i32.const 11260) "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 11356) "l") + (data (i32.const 11372) "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 11468) "l") + (data (i32.const 11484) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 11528) "\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 11580) "l") + (data (i32.const 11596) "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 11692) "l") + (data (i32.const 11708) "P\00\00\00\01\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\03") + (data (i32.const 11804) ",") + (data (i32.const 11816) "\01\00\00\00\16\00\00\00U\00i\00n\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 11852) "l") + (data (i32.const 11868) "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 11964) "l") + (data (i32.const 11980) "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 12076) "l") + (data (i32.const 12092) "P\00\00\00\01\00\00\00\00\00\00\00\02") + (data (i32.const 12136) "\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 12188) "l") + (data (i32.const 12204) "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 12300) "<") + (data (i32.const 12316) "(\00\00\00\00\00\80?\00\00\00@\00\00@@") + (data (i32.const 12364) ",") + (data (i32.const 12376) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\003\002\00A\00r\00r\00a\00y") + (data (i32.const 12412) "<") + (data (i32.const 12428) "(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\80@\00\00\a0@\00\00\c0@") + (data (i32.const 12476) "<") + (data (i32.const 12492) "(\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 12540) "<") + (data (i32.const 12556) "(\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 12604) "l") + (data (i32.const 12620) "P") + (data (i32.const 12630) "\f0?\00\00\00\00\00\00\00@\00\00\00\00\00\00\08@") + (data (i32.const 12716) ",") + (data (i32.const 12728) "\01\00\00\00\18\00\00\00F\00l\00o\00a\00t\006\004\00A\00r\00r\00a\00y") + (data (i32.const 12764) "l") + (data (i32.const 12780) "P") + (data (i32.const 12790) "\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 12876) "l") + (data (i32.const 12892) "P") + (data (i32.const 12902) "\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 12988) "l") + (data (i32.const 13004) "P") + (data (i32.const 13014) "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 13100) "\1c") + (data (i32.const 13116) "\n\00\00\00\00\ff\00\00\00d\n\ff\ff") + (data (i32.const 13132) "\1c") + (data (i32.const 13148) "\n\00\00\00\01\ffd\ff\00\00d\n\ff") + (data (i32.const 13168) "E\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 13196) "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 13292) "B\08\00\00\00\00\00\00\02\t") + (data (i32.const 13660) "\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 123 funcref) (elem (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/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) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) @@ -408,17 +586,235 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30108)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) local.get $0 - i32.const 13020 - i32.gt_u + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 6448 + call $~lib/rt/itcms/__visit + i32.const 6912 + call $~lib/rt/itcms/__visit + i32.const 7024 + call $~lib/rt/itcms/__visit + i32.const 8768 + call $~lib/rt/itcms/__visit + i32.const 8848 + call $~lib/rt/itcms/__visit + i32.const 8928 + call $~lib/rt/itcms/__visit + i32.const 9024 + call $~lib/rt/itcms/__visit + i32.const 9104 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + i32.const 1168 + call $~lib/rt/itcms/__visit + i32.const 7328 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq if local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 30108 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1232 + 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 1232 + 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 13168 + i32.load + i32.gt_u + if + i32.const 1360 + i32.const 1424 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 13172 + 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 + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount end ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) @@ -434,8 +830,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 272 + i32.const 1504 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -454,8 +850,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 274 + i32.const 1504 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -497,8 +893,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 287 + i32.const 1504 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -589,8 +985,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 200 + i32.const 1504 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -603,8 +999,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 202 + i32.const 1504 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -676,8 +1072,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 223 + i32.const 1504 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -731,23 +1127,23 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 238 + i32.const 1504 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1296 - i32.const 239 + i32.const 1504 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -794,8 +1190,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 255 + i32.const 1504 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -864,8 +1260,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 380 + i32.const 1504 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -892,8 +1288,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 387 + i32.const 1504 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -920,8 +1316,8 @@ i32.lt_u if i32.const 0 - i32.const 1296 - i32.const 400 + i32.const 1504 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -988,10 +1384,10 @@ if unreachable end - i32.const 13024 + i32.const 30112 i32.const 0 i32.store - i32.const 14592 + i32.const 31680 i32.const 0 i32.store loop $for-loop|0 @@ -1002,7 +1398,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 13024 + i32.const 30112 i32.add i32.const 0 i32.store offset=4 @@ -1020,7 +1416,7 @@ i32.add i32.const 2 i32.shl - i32.const 13024 + i32.const 30112 i32.add i32.const 0 i32.store offset=96 @@ -1038,72 +1434,298 @@ br $for-loop|0 end end - i32.const 13024 - i32.const 14596 + i32.const 30112 + i32.const 31684 memory.size i32.const 16 i32.shl call $~lib/rt/tlsf/addMemory - i32.const 13024 + i32.const 30112 global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (param $0 i32) (result i32) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) local.get $0 - i32.const 1073741820 - i32.ge_u + i32.const 30108 + i32.lt_u if - i32.const 1168 - i32.const 1296 - i32.const 461 - i32.const 30 - call $~lib/builtins/abort - unreachable + return end - i32.const 12 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 19 - i32.add - i32.const -16 - i32.and i32.const 4 i32.sub + local.set $1 + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 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 + if (result i32) local.get $1 - i32.clz - i32.sub - i32.shl - i32.add + i32.load 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 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1504 + i32.const 565 + 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) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 30108 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1232 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 30108 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 @@ -1127,8 +1749,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 333 + i32.const 1504 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1179,8 +1801,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 346 + i32.const 1504 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1201,89 +1823,34 @@ end end ) - (func $~lib/rt/tlsf/prepareBlock (param $0 i32) (param $1 i32) (param $2 i32) + (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.load - local.set $3 - local.get $2 - i32.const 4 - i32.add - i32.const 15 - i32.and + i32.const 1073741820 + i32.ge_u if - i32.const 0 - i32.const 1296 - i32.const 360 - i32.const 14 + i32.const 1168 + i32.const 1504 + i32.const 462 + i32.const 30 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -4 + local.get $0 + i32.const 12 + local.get $1 + i32.const 19 + i32.add + i32.const -16 i32.and - local.get $2 + i32.const 4 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 + i32.const 12 + i32.le_u + select local.tee $2 call $~lib/rt/tlsf/searchBlock local.tee $1 @@ -1356,8 +1923,8 @@ i32.eqz if i32.const 0 - i32.const 1296 - i32.const 498 + i32.const 1504 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1371,8 +1938,8 @@ i32.gt_u if i32.const 0 - i32.const 1296 - i32.const 500 + i32.const 1504 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1380,59 +1947,91 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/removeBlock - local.get $0 local.get $1 + i32.load + local.set $3 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 + i32.const 15 + i32.and if - i32.const 1168 - i32.const 1232 - i32.const 275 - i32.const 30 + i32.const 0 + i32.const 1504 + i32.const 361 + i32.const 14 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 $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 $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 $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 local.get $1 - i32.store offset=12 - local.get $2 + ) + (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 - i32.store offset=16 - local.get $3 - i32.const 16 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 i32.add ) (func $~lib/memory/memory.fill (param $0 i32) (param $1 i32) (param $2 i32) @@ -1608,730 +2207,947 @@ end end ) - (func $~lib/rt/pure/__retain (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.get $0 - i32.const 13020 - i32.gt_u + i32.const 1073741804 + i32.ge_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 1232 - 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 1232 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end + i32.const 1168 + i32.const 1232 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort + unreachable end - local.get $0 - ) - (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - i32.eqz + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $2 + loop $do-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end end local.get $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 + i32.const 16 + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.tee $2 local.get $1 - i32.const 1073741820 + i32.store offset=12 local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 1056 - i32.const 1104 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end - local.get $1 + local.get $0 + i32.store offset=16 local.get $2 - i32.shl - local.tee $3 - i32.const 0 - call $~lib/rt/pure/__new + 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 + 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 $3 + local.get $0 call $~lib/memory/memory.fill local.get $1 - local.set $2 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) + (local $2 i32) local.get $1 - local.get $0 - i32.load - local.tee $4 - i32.ne + i32.eqz if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release + return end local.get $0 - local.get $2 - i32.store - local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1232 + i32.const 290 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white local.get $1 - i32.store offset=4 - local.get $0 - local.get $3 - i32.store offset=8 - local.get $0 - ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.get $0 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - ) - (func $std/typedarray/testInstantiate (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $0 - call $~lib/typedarray/Int8Array#constructor + i32.const 20 + i32.sub local.tee $1 i32.load offset=4 - local.get $1 - i32.load - i32.sub + i32.const 3 + i32.and + i32.eq if - i32.const 0 - i32.const 1360 - i32.const 32 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.and + local.tee $0 + local.set $2 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + i32.const 0 + local.get $2 + i32.const 3 + i32.eq + select + if + local.get $1 + 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.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store local.get $0 local.get $1 + call $~lib/rt/itcms/__link + ) + (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 i32.load offset=8 - i32.ne + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 34 - i32.const 3 + i32.const 1632 + i32.const 675 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $2 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 38 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + ) + (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - local.get $2 i32.load offset=8 - i32.ne + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 39 - i32.const 3 + i32.const 1632 + i32.const 664 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 i32.load offset=4 - local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $3 - i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + local.get $1 local.get $0 - local.get $3 i32.load offset=8 - i32.ne + i32.const 3 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 44 - i32.const 3 + i32.const 1632 + i32.const 1315 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 i32.load offset=4 - local.get $4 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 - local.get $0 - i32.const 1 + local.get $1 + i32.const 3 i32.shl - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 48 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $4 - i32.load offset=8 - i32.const 1 + i32.add + local.get $2 + f64.store + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + (local $8 i32) + local.get $1 + i32.const 31 + i32.add + i32.const 5 i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 49 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 52 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.load offset=8 - local.get $0 - i32.const 1 + i32.const 2 i32.shl - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $5 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 54 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/typedarray/Int32Array#constructor + local.tee $3 + call $~lib/rt/tlsf/__alloc local.tee $6 - i32.load offset=4 - local.get $6 - i32.load + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $6 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if + local.set $4 + loop $for-loop|0 + local.get $4 i32.const 0 - i32.const 1360 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + if + local.get $4 + local.set $3 + loop $while-continue|1 + local.get $3 + i32.const 1 + i32.and + local.get $6 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $3 + i32.const 1 + i32.shr_s + i32.shr_u + i32.const 1 + i32.and + i32.eq + if + local.get $3 + i32.const 1 + i32.shr_s + local.set $3 + br $while-continue|1 + end + end + local.get $0 + local.get $3 + i32.const 1 + i32.shr_s + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $4 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $8 + local.get $8 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $7 + f64.store + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.tee $7 - i32.load offset=4 - local.get $7 - i32.load + local.get $1 + i32.const 1 i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.load offset=8 - local.get $0 - i32.const 2 - i32.shl - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $7 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|2 + local.get $4 + i32.const 2 + i32.ge_s + if + local.get $0 + f64.load + local.set $5 + local.get $0 + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load + f64.store + local.get $1 + local.get $5 + f64.store + i32.const 1 + local.set $1 + loop $while-continue|3 + local.get $4 + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $1 + i32.shr_u + i32.const 1 + i32.and + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.gt_s + if + local.get $3 + local.set $1 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $1 + i32.const 0 + i32.gt_s + if + local.get $0 + f64.load + local.set $5 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $7 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $6 + local.get $1 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.tee $3 + local.get $3 + i32.load + i32.const 1 + local.get $1 + i32.shl + i32.xor + i32.store + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + local.get $0 + local.get $7 + f64.store + end + local.get $1 + i32.const 1 + i32.shr_s + local.set $1 + br $while-continue|4 + end + end + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|2 + end end + local.get $6 + call $~lib/rt/tlsf/__free local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - i32.load offset=4 - local.get $8 - i32.load + f64.load offset=8 + local.set $5 + local.get $0 + local.get $0 + f64.load + f64.store offset=8 + local.get $0 + local.get $5 + f64.store + ) + (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) + local.get $0 + i64.reinterpret_f64 + local.tee $2 + local.get $2 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $2 + local.get $1 + i64.reinterpret_f64 + local.tee $3 + local.get $3 + i64.const 63 + i64.shr_s + i64.const 1 + i64.shr_u + i64.xor + local.tee $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 0 i32.const 1360 - i32.const 67 - i32.const 3 + i32.const 1632 + i32.const 1304 + i32.const 64 call $~lib/builtins/abort unreachable end - local.get $8 - i32.load offset=8 local.get $0 + i32.load offset=4 + local.get $1 i32.const 3 i32.shl - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + f64.load + ) + (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 local.get $0 - local.get $8 i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ne + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 69 - i32.const 3 + i32.const 1632 + i32.const 291 + i32.const 45 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.tee $9 i32.load offset=4 - local.get $9 - i32.load + i32.add + local.get $2 + i32.const 255 + local.get $2 i32.sub + i32.const 31 + i32.shr_s + i32.or + local.get $2 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + 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 0 i32.const 1360 - i32.const 72 - i32.const 3 + i32.const 1632 + i32.const 280 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $9 - i32.load offset=8 + local.get $1 local.get $0 - i32.const 3 - i32.shl - i32.ne + i32.load offset=4 + 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 0 i32.const 1360 - i32.const 73 - i32.const 3 + i32.const 1632 + i32.const 35 + i32.const 45 call $~lib/builtins/abort unreachable end + local.get $1 local.get $0 - local.get $9 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=4 + i32.add + local.get $2 + i32.store8 + ) + (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/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.tee $10 - i32.load offset=4 - local.get $10 - i32.load - i32.sub + i32.load offset=8 + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 77 - i32.const 3 + i32.const 1632 + i32.const 24 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $10 - i32.load offset=8 + local.get $1 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + ) + (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.ne + i32.add + i32.load + ) + (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 $1 + local.get $0 + i32.load offset=8 + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 78 - i32.const 3 + i32.const 1632 + i32.const 163 + 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 $1 local.get $0 - local.get $10 i32.load offset=8 - i32.const 2 + i32.const 1 i32.shr_u - i32.ne + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 79 - i32.const 3 + i32.const 1632 + i32.const 419 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $11 i32.load offset=4 - local.get $11 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 82 - i32.const 3 + 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 $1 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 547 + i32.const 64 call $~lib/builtins/abort unreachable end - local.get $11 - i32.load offset=8 local.get $0 - i32.const 3 + i32.load offset=4 + local.get $1 + i32.const 1 i32.shl - i32.ne + i32.add + local.get $2 + i32.store16 + ) + (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 83 - i32.const 3 + i32.const 1632 + i32.const 803 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 - local.get $11 + 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 $1 + local.get $0 i32.load offset=8 i32.const 3 i32.shr_u - i32.ne + i32.ge_u if - i32.const 0 i32.const 1360 - i32.const 84 - i32.const 3 + i32.const 1632 + i32.const 931 + i32.const 64 call $~lib/builtins/abort unreachable end + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__release + i32.const 3 + i32.shl + i32.add local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release + i64.store ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (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 2 + i32.const 3 i32.shr_u i32.ge_u if - i32.const 1424 - i32.const 1488 - i32.const 675 + i32.const 1360 + i32.const 1632 + i32.const 1059 i32.const 64 call $~lib/builtins/abort unreachable @@ -2339,13 +3155,13 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add local.get $2 - i32.store + i64.store ) - (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 local.get $0 i32.load offset=8 @@ -2353,9 +3169,9 @@ i32.shr_u i32.ge_u if - i32.const 1424 - i32.const 1488 - i32.const 664 + i32.const 1360 + i32.const 1632 + i32.const 1187 i32.const 64 call $~lib/builtins/abort unreachable @@ -2366,106 +3182,100 @@ i32.const 2 i32.shl i32.add - i32.load + local.get $2 + f32.store ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + f32.add + ) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + local.get $0 + local.get $1 + f64.add + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $~lib/typedarray/Uint8Array#__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 1360 + i32.const 1632 + i32.const 152 + i32.const 45 + call $~lib/builtins/abort + unreachable end - local.set $1 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 + local.get $1 + local.get $0 i32.load offset=4 + i32.add + i32.load8_u + ) + (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - i32.const 2 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 408 + 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.store offset=4 - local.get $2 + i32.load16_s + ) + (func $~lib/typedarray/Uint16Array#__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 1360 + i32.const 1632 + i32.const 536 + i32.const 64 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=4 local.get $1 - i32.lt_s - select - local.get $0 - i32.sub - i32.const 2 + i32.const 1 i32.shl - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release + i32.add + i32.load16_u ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u i32.ge_u if - i32.const 1424 - i32.const 1488 - i32.const 1315 + i32.const 1360 + i32.const 1632 + i32.const 792 i32.const 64 call $~lib/builtins/abort unreachable @@ -2473,4733 +3283,4037 @@ local.get $0 i32.load offset=4 local.get $1 - i32.const 3 + i32.const 2 i32.shl i32.add - local.get $2 - f64.store + i32.load ) - (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) + local.get $0 + local.get $0 + i64.mul + ) + (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) + local.get $1 local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 i32.load offset=8 i32.const 3 i32.shr_u - local.set $3 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select - end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 920 + i32.const 64 + call $~lib/builtins/abort + unreachable end - local.set $1 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $4 - i32.load offset=4 local.get $0 + i32.load offset=4 + local.get $1 i32.const 3 i32.shl i32.add - i32.store offset=4 - local.get $2 + i64.load + ) + (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) local.get $1 local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.ge_u + if + i32.const 1360 + i32.const 1632 + i32.const 1048 + i32.const 64 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=4 local.get $1 - i32.lt_s - select - local.get $0 - i32.sub i32.const 3 i32.shl - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release + i32.add + i64.load ) - (func $~lib/rt/tlsf/checkUsedBlock (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) local.get $0 - i32.const 4 - i32.sub - local.set $1 local.get $0 - i32.const 15 - i32.and - i32.eqz - i32.const 0 + f32.mul + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + local.get $1 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 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 - i32.const 1296 - i32.const 563 - i32.const 3 + i32.const 1360 + i32.const 1632 + i32.const 1176 + 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/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + local.get $0 + local.get $0 + f64.mul + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.gt_s + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $1 + local.get $0 + i32.const 20 + i32.sub + local.tee $2 i32.load - i32.const 1 - i32.or - i32.store + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $2 + local.get $1 + i32.store offset=16 + local.get $0 + return + end + local.get $1 + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $3 local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local $8 i32) local.get $2 - call $~lib/rt/pure/__retain - local.set $7 + i32.load offset=16 + local.tee $0 + local.get $0 local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u + i32.gt_u + select + call $~lib/memory/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) + local.get $0 + i32.const 255 + i32.and i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 i32.shl - local.tee $2 - call $~lib/rt/tlsf/__alloc - local.tee $4 - i32.const 0 - local.get $2 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|0 - local.get $3 - i32.const 0 - i32.gt_s - if - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $2 - i32.const 1 - i32.and - local.get $4 - local.get $2 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $2 - i32.const 1 - i32.shr_s - i32.shr_u - i32.const 1 - i32.and - i32.eq - if - local.get $2 - i32.const 1 - i32.shr_s - local.set $2 - br $while-continue|1 - end - end - local.get $0 - local.get $2 - i32.const 1 - i32.shr_s - local.tee $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $3 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $8 - local.get $8 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $6 - f64.store - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|0 - end - end - local.get $1 - i32.const 1 - i32.sub - local.set $3 - loop $for-loop|2 - local.get $3 - i32.const 2 - i32.ge_s - if - local.get $0 - f64.load - local.set $5 - local.get $0 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load - f64.store - local.get $1 - local.get $5 - f64.store - i32.const 1 - local.set $1 - loop $while-continue|3 - local.get $3 - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $1 - i32.shr_u - i32.const 1 - i32.and - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.gt_s - if - local.get $2 - local.set $1 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $1 - i32.const 0 - i32.gt_s - if - local.get $0 - f64.load - local.set $5 - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $7 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $1 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - local.tee $2 - local.get $2 - i32.load - i32.const 1 - local.get $1 - i32.shl - i32.xor - i32.store - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $0 - local.get $6 - f64.store - end - local.get $1 - i32.const 1 - i32.shr_s - local.set $1 - br $while-continue|4 - end - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $for-loop|2 - end - end - local.get $4 - local.tee $1 - i32.const 13020 - i32.ge_u - 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 + i32.const 16 + i32.shr_s + i32.const 2 + i32.gt_s + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - f64.load offset=8 - local.set $5 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 + i32.const 2 + i32.gt_s + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - f64.load - f64.store offset=8 + i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $5 - f64.store - local.get $7 - call $~lib/rt/pure/__release + i64.const 2 + i64.gt_s ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $10 + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $10 - call $~lib/rt/pure/__retain - local.set $8 - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $7 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $0 - i32.const 1 - i32.le_u - br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $7 - i32.load offset=4 - local.set $1 - local.get $0 - i32.const 2 - i32.eq - if - local.get $1 - f64.load offset=8 - local.set $4 - local.get $1 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $8 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $1 - local.get $5 - f64.store offset=8 - local.get $1 - local.get $4 - f64.store - end - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $0 - i32.const 256 - i32.lt_s - if - local.get $1 - local.set $2 - local.get $0 - local.set $3 - local.get $9 - call $~lib/rt/pure/__retain - local.set $11 - loop $for-loop|0 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $2 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $4 - local.get $6 - i32.const 1 - i32.sub - local.set $0 - loop $while-continue|1 - local.get $0 - i32.const 0 - i32.ge_s - if - block $while-break|1 - local.get $2 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - local.get $11 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.ge_s - br_if $while-break|1 - local.get $0 - local.tee $1 - i32.const 1 - i32.sub - local.set $0 - local.get $2 - local.get $1 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - br $while-continue|1 - end - end - end - local.get $2 - local.get $0 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $4 - f64.store - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $11 - call $~lib/rt/pure/__release - else - local.get $1 - local.get $0 - local.get $9 - call $~lib/util/sort/weakHeapSort - end - local.get $9 - call $~lib/rt/pure/__release - end - local.get $8 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 + i64.const 2 + i64.gt_u ) - (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i64.reinterpret_f64 - local.tee $2 - local.get $2 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $2 - local.get $1 - i64.reinterpret_f64 - local.tee $3 - local.get $3 - i64.const 63 - i64.shr_s - i64.const 1 - i64.shr_u - i64.xor - local.tee $3 - i64.gt_s - local.get $2 - local.get $3 - i64.lt_s - i32.sub + f32.const 2 + f32.gt ) - (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 1424 - i32.const 1488 - i32.const 1304 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load + f64.const 2 + f64.gt ) - (func $~lib/typedarray/Uint8ClampedArray#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 291 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - i32.add - local.get $2 i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - i32.or - local.get $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor i32.and - i32.store8 + i32.eqz ) - (func $~lib/typedarray/Uint8ClampedArray#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 280 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - i32.add - i32.load8_u + i32.const 65535 + i32.and + i32.eqz ) - (func $~lib/typedarray/Int8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 35 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 + i32.eqz ) - (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) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load offset=8 - 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 $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select - end + i64.const 2 + i64.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 0 + f32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 0 + f64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 4 + i64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 4 + f32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 4 + f64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 1 + i32.and + i32.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 1 + i32.and + i32.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 1 + i32.and + i32.eqz + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 1 + i64.and + i64.eqz + ) + (func $~lib/math/NativeMathf.mod (param $0 f32) (result f32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.reinterpret_f32 + local.tee $1 + i32.const -2147483648 + i32.and + local.set $4 + local.get $1 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and local.tee $2 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 - i32.add + i32.const 255 + i32.eq + if + local.get $0 + local.get $0 + f32.add local.tee $0 - i32.const 0 local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select + f32.div + return end - local.tee $0 - i32.lt_s + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + i32.const -2147483648 + i32.le_u if - local.get $2 - local.get $6 - i32.add - local.get $1 local.get $0 - local.get $2 - i32.sub - call $~lib/memory/memory.fill + local.get $3 + i32.const -2147483648 + i32.ne + f32.convert_i32_u + f32.mul + return end - local.get $5 - ) - (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 + if (result i32) + local.get $1 + i32.const 8388607 + i32.and + i32.const 8388608 + i32.or + else + local.get $1 + i32.const 1 local.get $2 - local.set $4 - local.get $0 local.get $1 - i32.eq - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.tee $2 + i32.sub + i32.shl + end + local.set $1 + block $folding-inner0 + loop $while-continue|0 + local.get $2 + i32.const 128 + i32.gt_s + if + local.get $1 + i32.const 8388608 + i32.ge_u + if (result i32) + local.get $1 + i32.const 8388608 + i32.eq + br_if $folding-inner0 + local.get $1 + i32.const 8388608 + i32.sub + else + local.get $1 + end + i32.const 1 + i32.shl + local.set $1 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end local.get $1 - i32.lt_u + i32.const 8388608 + i32.ge_u if local.get $1 - i32.const 7 - i32.and - local.get $0 - i32.const 7 - i32.and + i32.const 8388608 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 + br_if $folding-inner0 + local.get $1 + i32.const 8388608 + i32.sub + local.set $1 + end + local.get $1 + local.get $1 + i32.const 8 + i32.shl + i32.clz + local.tee $3 + i32.shl + local.set $1 + local.get $2 + local.get $3 + i32.sub + local.tee $2 + i32.const 0 + i32.gt_s + if (result i32) + local.get $1 + i32.const 8388608 + i32.sub + local.get $2 + i32.const 23 + i32.shl + i32.or else local.get $1 - i32.const 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 1 + local.get $2 + i32.sub + i32.shr_u end - 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) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - local.get $1 - i32.shl - local.tee $1 - local.set $5 - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - local.get $3 - if local.get $4 - local.get $3 - local.get $5 - call $~lib/memory/memory.copy + i32.or + f32.reinterpret_i32 + return end - local.get $4 - local.tee $3 - call $~lib/rt/pure/__retain - i32.store - 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 - local.get $2 + f32.const 0 + f32.mul ) - (func $~lib/typedarray/Int8Array#__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 1424 - i32.const 1488 - i32.const 24 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - i32.add - i32.load8_s + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.eq ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) + (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i64) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + i64.reinterpret_f64 + local.tee $1 + i64.const 63 + i64.shr_u + local.set $4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and + local.tee $2 + i64.const 2047 + i64.eq + if local.get $0 - i32.load offset=8 - local.get $1 - i32.load offset=12 - i32.ne - br_if $folding-inner0 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.get $2 - local.get $1 - i32.load offset=12 - i32.ge_u - if - i32.const 1424 - i32.const 1616 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - i32.ne - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + f64.add + local.tee $0 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 + f64.div return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - 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 $0 - i32.const 0 + i64.const 1 + i64.shl + local.tee $3 + i64.const -9223372036854775808 + i64.le_u + if local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 local.get $3 - local.get $1 - local.get $3 - i32.lt_s - select + i64.const -9223372036854775808 + i64.ne + f64.convert_i32_u + f64.mul + return end - local.set $0 local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + i64.eqz + if (result i64) + local.get $1 + i64.const 1 local.get $2 - local.get $3 - i32.add - local.tee $1 - i32.const 0 local.get $1 - i32.const 0 - i32.gt_s - select + i64.const 12 + i64.shl + i64.clz + i64.sub + local.tee $2 + i64.sub + i64.shl else + local.get $1 + i64.const 4503599627370495 + i64.and + i64.const 4503599627370496 + i64.or + end + local.set $1 + block $folding-inner0 + loop $while-continue|0 + local.get $2 + i64.const 1024 + i64.gt_s + if + local.get $1 + i64.const 4503599627370496 + i64.ge_u + if (result i64) + local.get $1 + i64.const 4503599627370496 + i64.eq + br_if $folding-inner0 + local.get $1 + i64.const 4503599627370496 + i64.sub + else + local.get $1 + end + i64.const 1 + i64.shl + local.set $1 + local.get $2 + i64.const 1 + i64.sub + local.set $2 + br $while-continue|0 + end + end + local.get $1 + i64.const 4503599627370496 + i64.ge_u + if + local.get $1 + i64.const 4503599627370496 + i64.eq + br_if $folding-inner0 + local.get $1 + i64.const 4503599627370496 + i64.sub + local.set $1 + end + local.get $1 + local.get $1 + i64.const 11 + i64.shl + i64.clz + local.tee $3 + i64.shl + local.set $1 local.get $2 local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + i64.sub + local.tee $2 + i64.const 0 + i64.gt_s + if (result i64) + local.get $1 + i64.const 4503599627370496 + i64.sub + local.get $2 + i64.const 52 + i64.shl + i64.or + else + local.get $1 + i64.const 1 + local.get $2 + i64.sub + i64.shr_u + end + local.get $4 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + return end - local.set $1 - i32.const 12 + local.get $0 + f64.const 0 + f64.mul + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + call $~lib/math/NativeMath.mod + f64.const 0 + f64.eq + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.ge_u + i32.const 1 + i32.add + local.get $0 + i32.const 10000 + i32.ge_u i32.const 3 - call $~lib/rt/pure/__new - local.tee $2 - local.get $4 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $2 + i32.add local.get $0 - local.get $4 - i32.load offset=4 + i32.const 1000 + i32.ge_u i32.add - i32.store offset=4 - local.get $2 - local.get $1 local.get $0 + i32.const 100 + i32.lt_u + select local.get $0 - local.get $1 - i32.lt_s + i32.const 1000000 + i32.ge_u + i32.const 6 + i32.add + 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 $0 + i32.const 10000000 + i32.lt_u select local.get $0 - i32.sub - i32.store offset=8 - local.get $2 - call $~lib/rt/pure/__retain - local.get $4 - call $~lib/rt/pure/__release + i32.const 100000 + i32.lt_u + select ) - (func $~lib/typedarray/Int32Array#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.get $1 - local.set $4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - i32.load offset=4 - local.set $6 - local.get $5 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $1 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $2 - i32.add - local.tee $0 - i32.const 0 + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) + loop $do-continue|0 local.get $0 - i32.const 0 - i32.gt_s - select - else local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add local.get $1 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store16 local.get $1 - local.get $2 - i32.gt_s - select + i32.const 10 + i32.div_u + local.tee $1 + br_if $do-continue|0 end - local.set $0 - local.get $3 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s 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 + local.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.gt_s - select - else - local.get $3 local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select + i32.sub + local.set $1 end - local.set $1 - loop $for-loop|0 + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_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.lt_s - if - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + local.get $2 + i32.const 1 + i32.add + return end - local.get $5 - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 + local.get $2 local.get $1 - i32.const 2 + i32.const 24 i32.shl + i32.const 24 + i32.shr_s + local.tee $2 + call $~lib/util/number/decimalCount32 i32.add - i32.load - ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=12 - i32.ge_u - if - i32.const 1424 - i32.const 1616 - i32.const 104 - i32.const 42 - call $~lib/builtins/abort - unreachable - end + local.set $1 local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple local.get $1 - call $~lib/array/Array#__uget ) - (func $std/typedarray/isInt32ArrayEqual (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - block $folding-inner0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - br_if $folding-inner0 - 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 - br_if $folding-inner0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + local.get $1 + i32.const 255 + i32.and + i32.const 10 + i32.lt_u + if local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + i32.const 255 + i32.and + i32.const 48 + i32.or + i32.store16 i32.const 1 return end + local.get $1 + i32.const 255 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple local.get $1 - call $~lib/rt/pure/__release - i32.const 0 ) - (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $3 + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 0 i32.lt_s - if (result i32) - local.get $1 - local.get $3 - i32.add - local.tee $0 - i32.const 0 + local.tee $2 + if local.get $0 + i32.const 45 + i32.store16 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.sub + local.set $1 end - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s - if (result i32) + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 10 + i32.lt_u + if + local.get $0 local.get $2 - local.get $3 + i32.const 1 + i32.shl i32.add - local.tee $1 - i32.const 0 local.get $1 - i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 48 + i32.or + i32.store16 local.get $2 - local.get $3 - i32.lt_s - select - end - local.get $0 - i32.sub - local.tee $1 - i32.const 0 + i32.const 1 + i32.add + return + end + local.get $2 local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.get $4 - i32.load offset=4 - local.get $0 - i32.const 2 + i32.const 16 i32.shl + i32.const 16 + i32.shr_s + local.tee $2 + call $~lib/util/number/decimalCount32 i32.add - local.get $1 - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release + local.set $1 + local.get $0 local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/util/number/utoa_dec_simple + local.get $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 $6 i32) - local.get $3 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $5 - 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 $3 - local.get $5 - i32.load offset=4 - local.tee $6 + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $1 - local.get $4 - i32.add - local.tee $0 - i32.const 0 + i32.const 65535 + i32.and + i32.const 10 + i32.lt_u + if local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $4 local.get $1 - local.get $4 - i32.lt_s - select + i32.const 65535 + i32.and + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - local.tee $1 - i32.const 2 - i32.shl - i32.add - local.get $6 + local.get $1 + i32.const 65535 + i32.and + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + local.get $0 local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + local.get $1 + ) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 i32.const 0 i32.lt_s - if (result i32) - local.get $2 - local.get $4 - i32.add - local.tee $0 - i32.const 0 + local.tee $2 + if local.get $0 + i32.const 45 + i32.store16 i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $4 - local.get $2 - local.get $4 - i32.lt_s - select + local.get $1 + i32.sub + local.set $1 end - local.tee $0 - i32.const 2 - i32.shl - i32.add - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $4 + local.get $1 + i32.const 10 + i32.lt_u + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl i32.add - local.tee $2 - i32.const 0 + local.get $1 + i32.const 48 + i32.or + i32.store16 local.get $2 - i32.const 0 - i32.gt_s - select - else - local.get $3 - local.get $4 - local.get $3 - local.get $4 - i32.lt_s - select + i32.const 1 + i32.add + return end local.get $0 - i32.sub - local.tee $2 - local.get $4 local.get $1 - i32.sub - local.tee $0 - local.get $0 - local.get $2 - i32.gt_s - select - i32.const 2 - i32.shl - call $~lib/memory/memory.copy - local.get $5 - ) - (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 + call $~lib/util/number/decimalCount32 + local.get $2 i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + local.get $0 ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) local.get $1 - local.get $0 - i32.load offset=8 - i32.ge_u + i32.const 10 + i32.lt_u if - i32.const 1424 - i32.const 1488 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end + local.get $0 + local.get $1 local.get $1 + call $~lib/util/number/decimalCount32 + local.tee $0 + call $~lib/util/number/utoa_dec_simple local.get $0 - i32.load offset=4 - i32.add - local.get $2 - i32.store8 ) - (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i64.const 100000000000 + i64.ge_u + i32.const 10 + i32.add local.get $0 - i32.load offset=4 - local.set $5 + i64.const 10000000000 + i64.ge_u + i32.add local.get $0 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $5 - i32.add - i32.load8_u - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release + i64.const 100000000000000 + i64.ge_u + i32.const 13 + i32.add local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + i64.const 10000000000000 + i64.ge_u + i32.add local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 419 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i64.const 1000000000000 + i64.lt_u + select local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl + i64.const 10000000000000000 + i64.ge_u + i32.const 16 i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 547 - i32.const 64 - call $~lib/builtins/abort - unreachable - end local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl + i64.const -8446744073709551616 + i64.ge_u + i32.const 18 i32.add - local.get $2 - i32.store16 - ) - (func $~lib/typedarray/Int32Array#reduce (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 $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i64.const 1000000000000000000 + i64.ge_u + i32.add local.get $0 - i32.load offset=4 - local.set $5 + i64.const 100000000000000000 + i64.lt_u + select local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - loop $for-loop|0 + i64.const 1000000000000000 + i64.lt_u + select + ) + (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) + loop $do-continue|0 + local.get $0 local.get $2 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 10 + i64.rem_u + i32.wrap_i64 + i32.const 48 + i32.add + i32.store16 + local.get $1 + i64.const 10 + i64.div_u + local.tee $1 + i64.const 0 + i64.ne + br_if $do-continue|0 end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + (local $3 i32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i64.const 0 + i64.lt_s + local.tee $2 if - i32.const 1424 - i32.const 1488 - i32.const 803 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 45 + i32.store16 + i64.const 0 + local.get $1 + i64.sub + local.set $1 end - 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 $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + i64.const 10 + i64.lt_u if - i32.const 1424 - i32.const 1488 - i32.const 931 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 48 + i64.or + i64.store16 + local.get $2 + i32.const 1 + i32.add + return end - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add + i64.const 4294967295 + i64.le_u + if + local.get $1 + i32.wrap_i64 + local.tee $3 + call $~lib/util/number/decimalCount32 + local.get $2 + i32.add + local.set $2 + local.get $0 + local.get $3 + local.get $2 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount64High + local.get $2 + i32.add + local.tee $2 + call $~lib/util/number/utoa_dec_simple + end 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/Int64Array#reduce (param $0 i32) (param $1 i32) (result i64) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i32) - (local $7 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - 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 $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $7 - local.get $2 - local.get $0 - local.get $3 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $4 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (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 + i64.const 10 + i64.lt_u if - i32.const 1424 - i32.const 1488 - i32.const 1059 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return 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#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + i64.const 4294967295 + i64.le_u if - i32.const 1424 - i32.const 1488 - i32.const 1187 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $1 + i32.wrap_i64 + local.tee $3 + call $~lib/util/number/decimalCount32 + local.set $2 + local.get $0 + local.get $3 + local.get $2 + call $~lib/util/number/utoa_dec_simple + else + local.get $0 + local.get $1 + local.get $1 + call $~lib/util/number/decimalCount64High + local.tee $2 + call $~lib/util/number/utoa_dec_simple end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add local.get $2 - f32.store ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - local.get $0 - local.get $1 - f32.add - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - local.get $0 - local.get $1 - f64.add - ) - (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $5 - i32.add - i32.load8_u - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end + (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 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i64) local.get $3 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + i64.sub + local.set $8 + local.get $3 + i64.const 1 + i32.const 0 local.get $4 - ) - (func $~lib/typedarray/Int32Array#reduceRight (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 + local.tee $11 + i64.extend_i32_s + i64.shl + local.tee $10 + i64.const 1 + i64.sub + local.tee $12 + i64.and + local.set $7 + local.get $3 + local.get $11 + i64.extend_i32_s + i64.shr_u + i32.wrap_i64 + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $9 + loop $while-continue|0 + local.get $9 i32.const 0 - i32.ge_s + i32.gt_s if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 4 - global.set $~argumentsLength - local.get $4 - local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $4 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduceRight (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $6 - i32.const 4 - global.set $~argumentsLength + 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 $2 + i32.const 1000000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100000 + i32.div_u + local.set $4 + local.get $2 + i32.const 100000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10000 + i32.div_u + local.set $4 + local.get $2 + i32.const 10000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 1000 + i32.div_u + local.set $4 + local.get $2 + i32.const 1000 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 100 + i32.div_u + local.set $4 + local.get $2 + i32.const 100 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + i32.const 10 + i32.div_u + local.set $4 + local.get $2 + i32.const 10 + i32.rem_u + local.set $2 + br $break|1 + end + local.get $2 + local.set $4 + i32.const 0 + local.set $2 + br $break|1 + end + i32.const 0 + local.set $4 + end local.get $4 local.get $6 - local.get $0 - local.get $1 - local.get $3 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $4 - local.get $0 + i32.or + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $9 i32.const 1 i32.sub - local.set $0 - br $for-loop|0 + local.set $9 + local.get $5 + local.get $7 + local.get $2 + i64.extend_i32_u + local.get $11 + 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 8576 + i32.add + i64.load32_u + local.get $11 + i64.extend_i32_s + i64.shl + local.set $10 + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $2 + loop $while-continue|3 + i32.const 1 + local.get $8 + local.get $1 + i64.sub + local.get $1 + local.get $10 + i64.add + local.tee $3 + local.get $8 + i64.sub + i64.gt_u + local.get $3 + local.get $8 + i64.lt_u + select + i32.const 0 + local.get $10 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $8 + i64.lt_u + select + select + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + local.get $10 + i64.add + local.set $1 + br $while-continue|3 + end + end + local.get $0 + local.get $2 + i32.store16 + local.get $6 + return + end + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $0 - i32.mul - ) - (func $~lib/typedarray/Uint8Array#__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 1424 - i32.const 1488 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_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 1424 - i32.const 1488 - i32.const 408 - 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/Uint16Array#__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 1424 - i32.const 1488 - i32.const 536 - 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_u - ) - (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 792 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $11 + i64.extend_i32_s + local.set $13 + loop $while-continue|4 (result i32) + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $7 + i64.const 10 + i64.mul + local.tee $3 + local.get $13 + i64.shr_u + local.tee $1 + local.get $6 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.get $1 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.const 48 + i32.add + i32.store16 + local.get $6 + i32.const 1 + i32.add + local.set $6 + end + local.get $9 + i32.const 1 + i32.sub + local.set $9 + local.get $3 + local.get $12 + i64.and + local.tee $7 + local.get $5 + 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 + local.get $8 + i32.const 0 + local.get $9 + i32.sub + i32.const 2 + i32.shl + i32.const 8576 + i32.add + i64.load32_u + i64.mul + local.set $8 + local.get $0 + local.get $6 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $2 + loop $while-continue|6 + i32.const 1 + local.get $8 + local.get $1 + i64.sub + local.get $1 + local.get $10 + i64.add + local.tee $3 + local.get $8 + i64.sub + i64.gt_u + local.get $3 + local.get $8 + i64.lt_u + select + i32.const 0 + local.get $10 + local.get $5 + local.get $1 + i64.sub + i64.le_u + i32.const 0 + local.get $1 + local.get $8 + i64.lt_u + select + select + if + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $1 + local.get $10 + i64.add + local.set $1 + br $while-continue|6 + end + end + local.get $0 + local.get $2 + i32.store16 + local.get $6 end - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - local.get $0 - local.get $0 - i64.mul ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + (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 - i32.const 1424 - i32.const 1488 - i32.const 920 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $1 + i32.const 2 + i32.add + return end - local.get $0 - i32.load offset=4 local.get $1 - i32.const 3 - i32.shl + local.get $2 i32.add - i64.load - ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 1424 - i32.const 1488 - i32.const 1048 - i32.const 64 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=4 + local.tee $3 + i32.const 21 + i32.le_s + i32.const 0 local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - local.get $0 - local.get $0 - f32.mul - ) - (func $~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 1424 - i32.const 1488 - i32.const 1176 - 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 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - local.get $0 - local.get $0 - f64.mul - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.gt_s - ) - (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 13020 - 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 1168 - i32.const 1232 - 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 13020 - i32.lt_u - if - global.get $~lib/rt/tlsf/ROOT + local.get $3 + i32.le_s + select + if (result i32) + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end local.get $0 - call $~lib/rt/tlsf/checkUsedBlock - local.get $2 - call $~lib/rt/tlsf/moveBlock - local.set $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.const 3145774 + i32.store + local.get $3 + i32.const 2 + i32.add else - block $__inlined_func$~lib/rt/tlsf/reallocateBlock - global.get $~lib/rt/tlsf/ROOT - local.set $3 + local.get $3 + i32.const 21 + i32.le_s + i32.const 0 + local.get $3 + i32.const 0 + i32.gt_s + select + if (result i32) 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 $3 + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.const 2 + i32.add + local.get $0 + i32.const 0 + local.get $2 + i32.sub + i32.const 1 + i32.shl + call $~lib/memory/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 + i32.const 0 + local.get $3 + i32.const -6 + i32.gt_s + select + if (result i32) local.get $0 - i32.const 4 + i32.const 2 + local.get $3 + i32.sub + local.tee $3 + i32.const 1 + i32.shl i32.add local.get $0 - i32.load - i32.const -4 - i32.and + 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 + i32.lt_s + if + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 48 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + local.get $3 i32.add - local.tee $7 - i32.load - local.tee $8 + else + local.get $1 i32.const 1 - i32.and - if - local.get $5 - local.get $4 + i32.eq + if (result i32) + local.get $0 + i32.const 101 + i32.store16 offset=2 + local.get $0 + local.tee $1 i32.const 4 i32.add - local.get $8 - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.le_u + local.get $3 + i32.const 1 + i32.sub + local.tee $0 + i32.const 0 + i32.lt_s + local.tee $2 if - local.get $3 - local.get $7 - call $~lib/rt/tlsf/removeBlock + i32.const 0 local.get $0 - local.get $4 - local.get $6 - i32.const 3 - i32.and - i32.or - i32.store - br $folding-inner0 + i32.sub + local.set $0 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 + local.get $0 + local.get $0 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + local.get $1 + i32.const 45 + i32.const 43 + local.get $2 + select + i32.store16 offset=4 + local.get $0 + i32.const 2 + i32.add + else + local.get $0 + i32.const 4 + i32.add + local.get $0 + i32.const 2 + i32.add + local.get $1 + i32.const 1 + i32.shl + local.tee $2 + i32.const 2 + i32.sub + call $~lib/memory/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 + local.tee $2 + i32.const 4 + i32.add + 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 + call $~lib/util/number/decimalCount32 + i32.const 1 + i32.add + local.tee $0 + call $~lib/util/number/utoa_dec_simple + 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 + i32.const 2 + i32.add + end 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 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) + (local $2 i64) + (local $3 i64) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) + (local $5 i64) + (local $6 i64) + (local $7 i64) (local $8 i32) (local $9 i32) (local $10 i32) - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.tee $1 + local.get $1 + f64.const 0 + f64.lt + local.tee $9 + 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 0 + i32.ne + i64.extend_i32_u + i64.const 52 + i64.shl + local.get $2 + i64.const 4503599627370495 + i64.and + i64.add + local.tee $3 + i64.const 1 + i64.shl + i64.const 1 + i64.add + local.tee $2 + local.get $2 + i64.clz + i32.wrap_i64 + local.tee $4 + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_plus + local.get $8 i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 + local.get $8 + select + i32.const 1075 + i32.sub + local.tee $8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set + i32.sub + local.get $4 + i32.sub + local.set $4 + local.get $3 + local.get $3 + i64.const 4503599627370496 + i64.eq + i32.const 1 + i32.add + local.tee $10 + i64.extend_i32_s + i64.shl + i64.const 1 + i64.sub + local.get $8 + local.get $10 + i32.sub + local.get $4 + i32.sub + i64.extend_i32_s + i64.shl + global.set $~lib/util/number/_frc_minus + local.get $4 + global.set $~lib/util/number/_exp + i32.const 348 + i32.const -61 + global.get $~lib/util/number/_exp + i32.sub + f64.convert_i32_s + f64.const 0.30102999566398114 + f64.mul + f64.const 347 + f64.add + local.tee $1 + i32.trunc_f64_s + local.tee $4 local.get $1 - i32.const 2 + local.get $4 + f64.convert_i32_s + f64.ne + i32.add i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 + i32.shr_s + i32.const 1 + i32.add + local.tee $4 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $1 - local.set $2 - i32.const 0 - local.set $0 - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__retain - local.set $4 - i32.const 3808 - call $~lib/rt/pure/__retain - local.set $7 + i32.shl + local.tee $10 + i32.sub + global.set $~lib/util/number/_K + local.get $10 + i32.const 7704 + i32.add + i64.load + global.set $~lib/util/number/_frc_pow local.get $4 - i32.load offset=8 + i32.const 1 + i32.shl + i32.const 8400 + i32.add + i32.load16_s + global.set $~lib/util/number/_exp_pow + global.get $~lib/util/number/_frc_pow + local.tee $6 + i64.const 4294967295 + i64.and local.set $2 - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.set $5 + local.get $6 + i64.const 32 + i64.shr_u + local.tee $6 + global.get $~lib/util/number/_frc_plus + local.tee $5 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - local.get $4 - i32.load offset=4 - local.set $10 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $6 - local.get $10 - i32.add - i32.load8_s - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $9 - local.get $6 - local.get $4 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $8 - i32.add - local.get $9 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end + local.get $7 + i64.mul + local.get $2 + local.get $5 + i64.const 4294967295 + i64.and + local.tee $5 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add local.get $5 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + i64.const 1 + i64.sub + local.set $5 + local.get $0 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + local.get $3 + local.get $3 + i64.clz + i32.wrap_i64 + local.tee $0 + i64.extend_i32_s + i64.shl + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $7 + i64.mul + local.get $2 + local.get $7 + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $3 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $7 + i64.const 32 + i64.shr_u + i64.add + local.get $3 + local.get $6 + i64.mul + local.get $7 + i64.const 4294967295 + i64.and + i64.add + i64.const 2147483647 + i64.add + i64.const 32 + i64.shr_u + i64.add + global.get $~lib/util/number/_exp_pow + local.tee $4 local.get $8 local.get $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store + i32.sub + i32.add + i32.const -64 + i32.sub local.get $5 - local.get $0 - i32.store offset=8 + local.get $4 + global.get $~lib/util/number/_exp + i32.add + i32.const -64 + i32.sub local.get $5 + local.get $6 + global.get $~lib/util/number/_frc_minus + local.tee $3 + i64.const 32 + i64.shr_u + local.tee $5 + i64.mul local.get $2 - i32.store offset=4 local.get $5 - call $~lib/rt/pure/__retain - local.get $7 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 3808 - call $~lib/rt/pure/__release - local.tee $0 - i32.load offset=4 - local.get $0 - i32.load + i64.mul + local.get $2 + local.get $3 + i64.const 4294967295 + i64.and + local.tee $2 + i64.mul + i64.const 32 + i64.shr_u + i64.add + local.tee $3 + i64.const 32 + i64.shr_u + i64.add + local.get $2 + local.get $6 + i64.mul + local.get $3 + 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 $9 + call $~lib/util/number/genDigits + local.get $9 i32.sub + global.get $~lib/util/number/_K + call $~lib/util/number/prettify + local.get $9 + 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 - i32.const 0 - i32.const 1360 - i32.const 390 + local.get $0 + i32.const 48 + i32.store16 + local.get $0 + i32.const 46 + i32.store16 offset=2 + local.get $0 + i32.const 48 + i32.store16 offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + return end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne + local.get $1 + local.get $1 + f64.sub + f64.const 0 + f64.ne if - i32.const 0 - i32.const 1360 - i32.const 391 - 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.tee $2 + if + local.get $0 + i32.const 45 + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + end + local.get $0 + i64.const 29555310648492105 + i64.store + local.get $0 + i64.const 34058970405077102 + i64.store offset=8 + local.get $2 + i32.const 8 + i32.add + return + end unreachable end local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/util/number/dtoa_core + ) + (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 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 local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + call $~lib/typedarray/Uint8Array.wrap ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 + i32.load offset=4 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load + ) + (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 local.get $1 i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i64.load + ) + (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 local.get $1 - local.set $2 - i32.const 0 - local.set $0 - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__retain - local.set $4 - i32.const 3840 - call $~lib/rt/pure/__retain - local.set $7 - local.get $4 - i32.load offset=8 - local.set $2 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.set $5 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 i32.load offset=4 - local.set $10 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $6 - local.get $10 - i32.add - i32.load8_u - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $9 - local.get $6 - local.get $4 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $8 - i32.add - local.get $9 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner3 + 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-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner3 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $folding-inner2 $invalid + end + return + end + return + end + unreachable end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return end - local.get $5 - local.get $8 - local.get $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $0 - i32.store offset=8 - local.get $5 - local.get $2 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.get $7 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 3840 - call $~lib/rt/pure/__release - local.tee $0 - i32.load offset=4 local.get $0 i32.load - i32.sub + local.tee $0 if - i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + call $~lib/rt/itcms/__visit end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.ne + ) + (func $~start + call $start:std/typedarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 13724 + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 + i32.const 30128 + i32.const 30176 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get + ) + (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 5 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + i32.const 0 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) + (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/pure/__retain + call $~lib/rt/itcms/__new local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 + local.get $0 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint16Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $1 - local.set $2 - i32.const 0 - local.set $0 - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__retain - local.set $4 - i32.const 3872 - call $~lib/rt/pure/__retain - local.set $7 - local.get $4 - i32.load offset=8 - local.set $2 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.set $5 - local.get $2 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - local.get $4 - i32.load offset=4 - local.set $10 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.gt_s - if - local.get $6 - local.get $10 - i32.add - i32.load8_u - local.set $9 - i32.const 3 - global.set $~argumentsLength - local.get $9 - local.get $6 - local.get $4 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $0 - local.get $8 - i32.add - local.get $9 - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $5 - local.get $8 local.get $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 i32.store - local.get $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 - local.get $5 - local.get $2 + ) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.get $7 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 3872 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor local.tee $0 - i32.load offset=4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load + ) + (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 + 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 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.get $0 + i32.const 3 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $std/typedarray/testInstantiate (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 32 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $0 + local.get $1 i32.load offset=8 - i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 391 + i32.const 1568 + i32.const 33 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 + local.get $1 + i32.load offset=8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 392 + i32.const 1568 + i32.const 34 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 37 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.load offset=8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 393 + i32.const 1568 + i32.const 38 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 + local.get $1 + i32.load offset=8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 394 + i32.const 1568 + i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $0 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.gt_s - ) - (func $~lib/typedarray/Int16Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + local.get $1 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3904 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 47 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $4 local.get $0 i32.const 1 i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $8 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $6 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3904 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set local.get $0 + local.get $1 + i32.load offset=8 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 49 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int16Array#filter + call $~lib/typedarray/Uint16Array#constructor local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.load offset=4 local.get $1 i32.load i32.sub if i32.const 0 - i32.const 1360 - i32.const 390 + i32.const 1568 + i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load offset=8 + local.get $0 i32.const 1 - i32.shr_u - i32.const 3 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 391 + i32.const 1568 + i32.const 53 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.ne if i32.const 0 - i32.const 1360 - i32.const 392 + i32.const 1568 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.get $0 + i32.const 2 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 393 + i32.const 1568 + i32.const 58 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 local.get $1 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 + i32.shr_u i32.ne if i32.const 0 - i32.const 1360 - i32.const 394 + i32.const 1568 + i32.const 59 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 62 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 local.get $0 - i32.const 65535 - i32.and i32.const 2 - i32.gt_u - ) - (func $~lib/typedarray/Uint16Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + i32.shl + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 63 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3936 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 + local.get $1 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u - local.set $0 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 64 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $8 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $7 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 - local.get $1 - i32.const 1 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3936 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#filter - local.tee $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.load offset=4 local.get $1 i32.load i32.sub if i32.const 0 - i32.const 1360 - i32.const 390 + i32.const 1568 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load offset=8 - i32.const 1 - i32.shr_u + local.get $0 i32.const 3 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 391 + i32.const 1568 + i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=8 i32.const 3 + i32.shr_u i32.ne if i32.const 0 - i32.const 1360 - i32.const 392 + i32.const 1568 + i32.const 69 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 393 + i32.const 1568 + i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 + i32.load offset=8 + local.get $0 + i32.const 3 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 394 + i32.const 1568 + i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.gt_s - ) - (func $~lib/typedarray/Int32Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 3968 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 + local.get $1 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.set $0 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $4 - local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $8 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 74 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 3968 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Int32Array#filter + call $~lib/typedarray/Float32Array#constructor local.tee $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.load offset=4 local.get $1 i32.load i32.sub if i32.const 0 - i32.const 1360 - i32.const 390 + i32.const 1568 + i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load offset=8 + local.get $0 i32.const 2 - i32.shr_u - i32.const 3 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 391 + i32.const 1568 + i32.const 78 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 local.get $1 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 + i32.shr_u i32.ne if i32.const 0 - i32.const 1360 - i32.const 394 + i32.const 1568 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.gt_u - ) - (func $~lib/typedarray/Uint32Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4000 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.gt_s - if - local.get $8 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $4 - local.get $6 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4000 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#filter - local.tee $1 + local.get $1 i32.load offset=4 local.get $1 i32.load i32.sub if i32.const 0 - i32.const 1360 - i32.const 390 + i32.const 1568 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get + local.get $0 i32.const 3 + i32.shl i32.ne if i32.const 0 - i32.const 1360 - i32.const 392 + i32.const 1568 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 local.get $1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 + i32.load offset=8 + i32.const 3 + i32.shr_u i32.ne if i32.const 0 - i32.const 1360 - i32.const 394 + i32.const 1568 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 2 - i64.gt_s + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4032 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.set $0 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new local.set $4 - local.get $0 - i32.const 3 - i32.shl + local.get $1 i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 local.get $0 - local.get $2 + i32.const 0 i32.gt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select end - local.get $4 - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 + local.set $0 local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4032 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#filter - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + i32.load + local.tee $4 + i32.store local.get $1 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $4 + call $~lib/rt/itcms/__link local.get $1 + local.get $3 + i32.load offset=4 + local.get $0 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 + local.get $1 local.get $2 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i64.const 2 - i64.gt_u + local.get $2 + i32.lt_s + select + local.get $0 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/typedarray/Uint64Array#filter (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i64) - (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4064 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - local.set $0 - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new local.set $4 - local.get $0 - i32.const 3 - i32.shl + local.get $1 i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 local.get $0 + 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 $0 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) local.get $2 + local.get $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 i32.gt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select end - local.get $4 - local.get $6 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain + local.get $3 + i32.load + local.tee $4 i32.store + local.get $1 local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__link + local.get $1 local.get $3 - call $~lib/rt/pure/__release - i32.const 4064 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + i32.load offset=4 local.get $0 i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 local.get $0 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set local.get $0 - call $~lib/typedarray/Uint64Array#filter - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $2 - call $~lib/rt/pure/__release + i32.lt_s + select local.get $0 - call $~lib/rt/pure/__release + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 2 - f32.gt ) - (func $~lib/typedarray/Float32Array#filter (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) + (local $4 f64) + (local $5 f64) (local $6 i32) - (local $7 f32) - (local $8 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4096 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.set $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 + i32.store offset=8 + block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 - local.get $2 - i32.gt_s + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $7 + i32.const 1 + i32.le_u + br_if $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $7 + i32.const 2 + i32.eq if - local.get $8 - local.get $2 + local.get $3 + f64.load offset=8 + local.set $4 + local.get $3 + f64.load + local.set $5 i32.const 2 - i32.shl - i32.add - f32.load - local.set $7 - i32.const 3 global.set $~argumentsLength - local.get $7 - local.get $2 - local.get $3 + local.get $4 local.get $5 + local.get $1 i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s if - local.get $6 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $7 - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 + local.get $3 + local.get $5 + f64.store offset=8 + local.get $3 + local.get $4 + f64.store end - local.get $2 - i32.const 1 - i32.add + br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $7 + i32.const 256 + i32.lt_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 local.set $2 - br $for-loop|0 + loop $for-loop|0 + local.get $6 + local.get $7 + i32.lt_s + if + local.get $3 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $4 + local.get $6 + i32.const 1 + i32.sub + local.set $1 + loop $while-continue|1 + local.get $1 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $3 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $1 + local.tee $0 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + local.get $0 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + br $while-continue|1 + end + end + end + local.get $3 + local.get $1 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $4 + f64.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $3 + local.get $7 + local.get $1 + call $~lib/util/sort/weakHeapSort end end - local.get $4 - local.get $6 - local.get $1 - i32.const 2 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4096 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set + (func $~lib/typedarray/Int8Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + i32.store local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set + i32.store offset=4 local.get $0 - call $~lib/typedarray/Float32Array#filter - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if + 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 $0 i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $4 + local.get $2 + local.get $4 + i32.lt_s + select end - local.get $1 + local.tee $0 + local.get $3 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.ne - if + i32.lt_s + if (result i32) + local.get $3 + local.get $4 + i32.add + local.tee $2 i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - if + local.get $2 i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $3 + local.get $4 + local.get $3 + local.get $4 + i32.lt_s + select end - local.get $1 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + local.tee $2 + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $5 + i32.add + local.get $1 + local.get $2 + local.get $0 + i32.sub + call $~lib/memory/memory.fill end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f64.const 2 - f64.gt + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#filter (param $0 i32) (result i32) - (local $1 i32) + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 f64) - (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 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 4128 - call $~lib/rt/pure/__retain - local.set $5 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $0 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $4 + i32.store local.get $0 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $8 - loop $for-loop|0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner0 + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - i32.gt_s - if - local.get $8 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $7 - i32.const 3 - global.set $~argumentsLength - local.get $7 + i32.store + local.get $0 + i32.load offset=8 + local.set $4 + loop $for-loop|0 local.get $2 - local.get $3 - local.get $5 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) + local.get $4 + i32.lt_s if - local.get $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#__get + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $7 - f64.store + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $2 + local.get $1 + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 92 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.ne + br_if $folding-inner0 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 + br $for-loop|0 end - 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 + i32.const 1 + return end - local.get $4 - local.get $6 - local.get $1 - i32.const 3 - i32.shl - local.tee $0 - call $~lib/rt/pure/__renew - local.tee $2 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $0 - i32.store offset=8 - local.get $4 - local.get $2 - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/__retain - local.get $5 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 4128 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.tee $0 + (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set + i32.store offset=4 local.get $0 - call $~lib/typedarray/Float64Array#filter - local.tee $1 - i32.load offset=4 + i32.load offset=8 + local.set $4 local.get $1 - i32.load - i32.sub - if + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 i32.const 0 - i32.const 1360 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 3 - i32.ne - if + local.get $0 i32.const 0 - i32.const 1360 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $1 + local.get $4 + local.get $1 + local.get $4 + i32.lt_s + select end - local.get $1 + local.set $0 + local.get $2 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.ne - if + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - if - i32.const 0 - i32.const 1360 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $3 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link local.get $1 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.ne - if - i32.const 0 - i32.const 1360 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.get $3 + i32.load offset=4 + i32.add + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $2 local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq + local.get $0 + local.get $2 + i32.lt_s + select + local.get $0 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int32Array#fill (param $0 i32) (param $1 i32) (param $2 i32) (param $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $0 + i32.const 0 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $1 + local.get $1 + local.get $2 + i32.gt_s + select + end + local.set $0 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + end + local.set $1 + loop $for-loop|0 local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 + local.get $1 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $0 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $1 local.get $0 - i32.const 255 - i32.and - i32.eqz + i32.load offset=12 + i32.ge_u + if + i32.const 1360 + i32.const 1760 + i32.const 92 + i32.const 42 + 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#__uget + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $folding-inner0 local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + local.get $1 + i32.load offset=12 + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store local.get $0 i32.load offset=8 - local.set $5 + i32.const 2 + i32.shr_u + local.set $3 loop $for-loop|0 local.get $2 - local.get $5 + local.get $3 i32.lt_s if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - end + i32.store + local.get $1 + local.get $2 + call $~lib/array/Array#__get + local.get $4 + i32.ne + br_if $folding-inner0 local.get $2 i32.const 1 i32.add @@ -7207,7105 +7321,8429 @@ br $for-loop|0 end end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + 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 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=8 local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=4 local.get $0 - i32.const 65535 - i32.and + i32.load offset=4 + local.get $1 i32.const 2 - i32.eq + 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 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + 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 + local.tee $3 + i32.load offset=4 + local.tee $6 local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 0 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $4 local.get $1 - call $~lib/rt/pure/__release + local.get $4 + i32.lt_s + select + end + local.tee $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $4 + i32.add + local.tee $0 + i32.const 0 local.get $0 - call $~lib/rt/pure/__release 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 $0 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $5 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + 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 $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 65535 - i32.and - i32.eqz + i32.sub + local.tee $2 + local.get $4 + local.get $1 + i32.sub + local.tee $0 + local.get $0 + local.get $2 + i32.gt_s + select + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduce (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $4 + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $3 + local.get $6 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i32.const 2 - i32.eq - ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#reduceRight (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store offset=4 local.get $0 - i32.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 2 - i64.eq - ) - (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 + local.tee $2 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $4 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $2 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $3 local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $0 + local.get $2 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.eqz - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - f32.const 2 - f32.eq ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if local.get $2 local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.add + i32.load8_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $6 + local.get $2 + local.get $0 + i32.const 3600 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 end + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 local.get $3 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> + (local $0 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 0 - f32.eq - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + i32.store offset=4 local.get $0 - f64.const 2 - f64.eq - ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int8Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 0 - f64.eq + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if local.get $2 local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $6 + local.get $2 + local.get $0 + i32.const 3632 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end + local.get $1 local.get $3 - call $~lib/rt/pure/__release - local.get $2 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> + (local $0 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 255 - i32.and + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get i32.const 4 - i32.eq + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=16 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if local.get $2 local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.add + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $3 + i32.add + local.get $6 + local.get $2 + local.get $0 + i32.const 3664 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end + local.get $1 local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=4 local.get $0 - i32.load offset=8 + i32.const 0 i32.const 1 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 65535 - i32.and + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 4 - i32.eq + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 i32.const 1 i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - loop $for-loop|0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $3 + i32.const 1 + i32.shl + local.tee $7 + i32.add + i32.load16_s + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3696 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end - local.get $3 - call $~lib/rt/pure/__release + local.get $1 local.get $2 - ) - (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> + (local $0 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=4 - local.set $4 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i32.const 1 i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + i32.const 1 + call $~lib/typedarray/Int16Array#__get i32.const 4 - i32.eq + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 - i32.const 3 + i32.const 1 i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - loop $for-loop|0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $3 + i32.const 1 + i32.shl + local.tee $7 + i32.add + i32.load16_u + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3728 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end - local.get $3 - call $~lib/rt/pure/__release + local.get $1 + local.get $2 + i32.store + local.get $1 local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> + (local $0 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 4 - i64.eq - ) - (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=4 local.get $0 - i32.load offset=8 + i32.const 1 i32.const 2 - i32.shr_u - local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint16Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 4 - f32.eq + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - loop $for-loop|0 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3760 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end - local.get $3 - call $~lib/rt/pure/__release + local.get $1 local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> + (local $0 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 4 - f64.eq - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.store offset=4 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.const 0 i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 1 - i32.and - i32.eqz - ) - (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - i32.load8_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 1 - i32.and - i32.eqz + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 + local.get $4 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3792 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> + (local $0 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint32Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + (local $7 i32) + (local $8 i64) + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 + local.get $4 + i32.lt_s + if local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + local.get $3 + i32.const 3 + i32.shl + local.tee $7 + i32.add + i64.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3824 + i32.load + call_indirect (type $i64_i32_i32_=>_i64) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - i64.const 1 - i64.and - i64.eqz - ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i64) local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 + local.get $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> + (local $0 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int64Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + 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/math/NativeMathf.mod (param $0 f32) (result f32) + (func $~lib/typedarray/Uint64Array#map (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 i64) + 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 local.get $0 - i32.reinterpret_f32 - local.tee $1 - i32.const -2147483648 - i32.and - local.set $4 - local.get $1 - i32.const 23 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 i32.shr_u - i32.const 255 - i32.and - local.tee $2 - i32.const 255 - i32.eq - if - local.get $0 - local.get $0 - f32.add - local.tee $0 - local.get $0 - f32.div - return - end - local.get $1 - i32.const 1 + local.set $4 + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 i32.shl - local.tee $3 - i32.const -2147483648 - i32.le_u - if - local.get $0 + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 + loop $for-loop|0 local.get $3 - i32.const -2147483648 - i32.ne - f32.convert_i32_u - f32.mul - return + local.get $4 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 3 + i32.shl + local.tee $7 + i32.add + i64.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3856 + i32.load + call_indirect (type $i64_i32_i32_=>_i64) + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end + local.get $1 local.get $2 - if (result i32) - local.get $1 - i32.const 8388607 - i32.and - i32.const 8388608 - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - local.get $1 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.tee $2 - i32.sub - i32.shl - end - local.set $1 - block $folding-inner0 - loop $while-continue|0 - local.get $2 - i32.const 128 - i32.gt_s - if - local.get $1 - i32.const 8388608 - i32.ge_u - if (result i32) - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - else - local.get $1 - end - i32.const 1 - i32.shl - local.set $1 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $1 - i32.const 8388608 - i32.ge_u - if - local.get $1 - i32.const 8388608 - i32.eq - br_if $folding-inner0 - local.get $1 - i32.const 8388608 - i32.sub - local.set $1 - end - local.get $1 - local.get $1 - i32.const 8 - i32.shl - i32.clz - local.tee $3 - i32.shl - local.set $1 - local.get $2 - local.get $3 - i32.sub - local.tee $2 + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> + (local $0 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint64Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.ne + if i32.const 0 - i32.gt_s - if (result i32) - local.get $1 - i32.const 8388608 - i32.sub - local.get $2 - i32.const 23 - i32.shl - i32.or - else - local.get $1 - i32.const 1 - local.get $2 - i32.sub - i32.shr_u - end - local.get $4 - i32.or - f32.reinterpret_i32 - return + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 0 - f32.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - local.get $2 - call $~lib/rt/pure/__retain + i32.store offset=4 local.get $0 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - local.set $2 - call $~lib/rt/pure/__release - local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (result f64) - (local $1 i64) - (local $2 i64) - (local $3 i64) - (local $4 i64) + (local $6 i32) + (local $7 i32) + (local $8 f32) + 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 local.get $0 - i64.reinterpret_f64 - local.tee $1 - i64.const 63 - i64.shr_u + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - local.get $1 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and + local.get $0 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new local.tee $2 - i64.const 2047 - i64.eq - if - local.get $0 - local.get $0 - f64.add - local.tee $0 - local.get $0 - f64.div - return - end - local.get $1 - i64.const 1 - i64.shl - local.tee $3 - i64.const -9223372036854775808 - i64.le_u - if - local.get $0 + i32.store offset=16 + loop $for-loop|0 local.get $3 - i64.const -9223372036854775808 - i64.ne - f64.convert_i32_u - f64.mul - return - end - local.get $2 - i64.eqz - if (result i64) - local.get $1 - i64.const 1 - local.get $2 - local.get $1 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.tee $2 - i64.sub - i64.shl - else - local.get $1 - i64.const 4503599627370495 - i64.and - i64.const 4503599627370496 - i64.or - end - local.set $1 - block $folding-inner0 - loop $while-continue|0 - local.get $2 - i64.const 1024 - i64.gt_s - if - local.get $1 - i64.const 4503599627370496 - i64.ge_u - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - else - local.get $1 - end - i64.const 1 - i64.shl - local.set $1 - local.get $2 - i64.const 1 - i64.sub - local.set $2 - br $while-continue|0 - end - end - local.get $1 - i64.const 4503599627370496 - i64.ge_u + local.get $4 + i32.lt_s if - local.get $1 - i64.const 4503599627370496 - i64.eq - br_if $folding-inner0 - local.get $1 - i64.const 4503599627370496 - i64.sub - local.set $1 - end - local.get $1 - local.get $1 - i64.const 11 - i64.shl - i64.clz - local.tee $3 - i64.shl - local.set $1 - local.get $2 - local.get $3 - i64.sub - local.tee $2 - i64.const 0 - i64.gt_s - if (result i64) - local.get $1 - i64.const 4503599627370496 - i64.sub - local.get $2 - i64.const 52 - i64.shl - i64.or - else - local.get $1 - i64.const 1 + local.get $5 + local.get $3 + i32.const 2 + i32.shl + local.tee $7 + i32.add + f32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength local.get $2 - i64.sub - i64.shr_u + local.get $7 + i32.add + local.get $8 + local.get $3 + local.get $0 + i32.const 3888 + i32.load + call_indirect (type $f32_i32_i32_=>_f32) + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end - local.get $4 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - return end - local.get $0 - f64.const 0 - f64.mul - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $1 local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - local.set $2 - call $~lib/rt/pure/__release + i32.store + local.get $1 + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.set $4 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 - loop $for-loop|0 - local.get $2 - local.get $5 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $2 - local.get $0 - local.get $1 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - i32.eqz - if - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 1 - end - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 6304 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 490 - 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 1360 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> + (local $0 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float32Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#map (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $7 i32) + (local $8 f64) + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + local.get $0 + i32.load offset=4 local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + local.tee $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=16 loop $for-loop|0 - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.lt_s if - local.get $2 - local.get $4 + local.get $5 + local.get $3 + i32.const 3 + i32.shl + local.tee $7 i32.add - i32.load8_u + f64.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 i32.const 3 global.set $~argumentsLength local.get $2 - local.get $0 + local.get $7 + i32.add + local.get $8 local.get $3 + local.get $0 + i32.const 3920 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 + call_indirect (type $f64_i32_i32_=>_f64) + f64.store + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 6304 + i32.store local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne + local.get $2 + call $~lib/rt/itcms/__link + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> + (local $0 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float64Array#map + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 490 - i32.const 5 + i32.const 1568 + i32.const 365 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 491 - i32.const 5 + i32.const 1568 + i32.const 366 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 + i32.const 1568 + i32.const 367 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + 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.get $2 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6304 - local.get $1 - call $~lib/array/Array#__get - local.get $0 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 490 - 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 1360 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $2 - global.get $std/typedarray/forEachSelf - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#filter (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.lt_s if - local.get $4 - local.get $2 - i32.const 2 - i32.shl + local.get $3 + local.get $7 i32.add - i32.load + i32.load8_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $0 + local.get $6 local.get $3 + local.get $0 + i32.const 3952 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $2 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $1 + local.get $5 + i32.add + local.get $6 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $5 local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - i32.const 6304 + call $~lib/rt/itcms/__link + local.get $2 local.get $1 - call $~lib/array/Array#__get - i64.extend_i32_s - i64.ne + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + (local $0 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 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int8Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 490 - i32.const 5 + i32.const 1568 + i32.const 390 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 491 - i32.const 5 + i32.const 1568 + i32.const 391 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - global.get $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 + i32.const 1568 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 393 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#filter (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 + i32.store offset=8 local.get $0 i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $5 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $2 - local.get $5 + local.get $3 + local.get $4 i32.lt_s if - local.get $4 - local.get $2 - i32.const 3 - i32.shl + local.get $3 + local.get $7 i32.add - i64.load + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 i32.const 3 global.set $~argumentsLength - local.get $2 - local.get $0 + local.get $6 local.get $3 + local.get $0 + i32.const 3984 i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $2 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $1 + local.get $5 + i32.add + local.get $6 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $3 i32.const 1 i32.add - local.set $2 + local.set $3 br $for-loop|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $5 local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - i32.const 6304 + call $~lib/rt/itcms/__link + local.get $2 local.get $1 - call $~lib/array/Array#__get - f32.convert_i32_s - f32.ne + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + (local $0 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 6 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 490 - i32.const 5 + i32.const 1568 + i32.const 390 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 491 - i32.const 5 + i32.const 1568 + i32.const 391 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - global.get $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 + i32.const 1568 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 6304 - local.get $1 - call $~lib/array/Array#__get - f64.convert_i32_s - f64.ne - if - i32.const 0 - i32.const 1360 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 491 - i32.const 5 + i32.const 1568 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - global.get $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 492 - i32.const 5 + i32.const 1568 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.lt_s if - local.get $1 - local.get $4 + local.get $3 + local.get $7 i32.add - local.tee $2 - i32.load8_s - local.set $5 - local.get $2 - local.get $0 - local.get $4 - i32.add - local.tee $2 - i32.load8_s - i32.store8 - local.get $2 - local.get $5 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 + i32.load8_u + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 local.get $3 local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 + i32.const 4016 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $1 + local.get $5 + i32.add + local.get $6 + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $3 i32.const 1 i32.add - local.set $0 + local.set $3 br $for-loop|0 end end local.get $2 - call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/pure/__release + local.get $5 + local.get $1 + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 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 6 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - call $~lib/typedarray/Int8Array#reverse + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#filter local.tee $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#__get + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 i32.const 1 - i32.sub - local.set $0 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if - local.get $1 + local.get $7 local.get $4 + i32.const 1 + i32.shl i32.add - local.tee $2 - i32.load8_u - local.set $5 - local.get $2 + i32.load16_s + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 local.get $4 - i32.add - local.tee $2 - i32.load8_u - i32.store8 - local.get $2 - local.get $5 - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 local.get $0 + i32.const 4048 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 - i32.sub - local.set $0 + i32.add + local.set $4 br $for-loop|0 end end - local.get $3 - ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain + local.get $2 + local.get $5 + local.get $1 + i32.const 1 + i32.shl local.tee $3 - i32.load offset=8 + call $~lib/rt/itcms/__renew local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain i32.store - local.get $1 local.get $2 - local.get $3 - i32.load offset=4 - i32.add - i32.store offset=4 - local.get $1 local.get $0 + call $~lib/rt/itcms/__link local.get $2 - local.get $0 + local.get $3 + i32.store offset=8 local.get $2 - i32.gt_s - select + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.sub - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (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) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.tee $1 - call $~lib/typedarray/Uint8Array#reverse + 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 6 + call $~lib/typedarray/Int16Array#constructor local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.ne + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 - local.tee $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $2 - local.get $3 - i32.load offset=4 - i32.add i32.store offset=4 - local.get $1 local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $1 - call $~lib/typedarray/Uint8Array#reverse - local.tee $0 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 + call $~lib/typedarray/Int16Array#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 + call $~lib/typedarray/Int16Array#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + call $~lib/typedarray/Int16Array#__get i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Uint16Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.sub - local.set $0 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if + local.get $7 local.get $4 - local.get $1 i32.const 1 i32.shl i32.add - local.tee $2 - i32.load16_s - local.set $5 - local.get $2 + i32.load16_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 local.get $4 local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_s - i32.store16 - local.get $2 - local.get $5 - i32.store16 - local.get $1 + i32.const 4080 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $6 + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 + local.set $4 br $for-loop|0 end end + local.get $2 + local.get $5 + local.get $1 + i32.const 1 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 local.get $3 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + (local $0 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 6 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint16Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 i32.load offset=8 i32.const 1 i32.shr_u - local.tee $0 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select + i32.const 1568 + i32.const 392 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $0 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 - local.get $3 - i32.load offset=4 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.store offset=4 - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 + i32.store offset=4 local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub i32.const 1 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.tee $1 - call $~lib/typedarray/Int16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 8 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#__get + call $~lib/typedarray/Uint16Array#__get i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Int32Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 - i32.const 1 + i32.const 2 i32.shr_u - i32.const 1 - i32.sub - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if + local.get $7 local.get $4 - local.get $1 - i32.const 1 + i32.const 2 i32.shl i32.add - local.tee $2 - i32.load16_u - local.set $5 - local.get $2 + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 local.get $4 local.get $0 - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - i32.store16 - local.get $2 - local.get $5 - i32.store16 - local.get $1 + i32.const 4112 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 + local.set $4 br $for-loop|0 end end - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain + local.get $2 + local.get $5 + local.get $1 + i32.const 2 + i32.shl local.tee $3 - i32.load offset=8 - i32.const 1 - i32.shr_u + call $~lib/rt/itcms/__renew local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain i32.store - local.get $1 + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 local.get $3 - i32.load offset=4 + i32.store offset=8 local.get $2 - i32.const 1 - i32.shl + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + (local $0 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 6 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 i32.store offset=4 - local.get $1 local.get $0 - local.get $2 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub i32.const 1 - i32.shl + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4112 i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int32Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 i32.load - local.tee $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - 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.sub + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.tee $1 - call $~lib/typedarray/Uint16Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Uint32Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 i32.const 2 i32.shr_u - i32.const 1 - i32.sub - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if + local.get $7 local.get $4 - local.get $1 i32.const 2 i32.shl i32.add - local.tee $2 i32.load - local.set $5 - local.get $2 - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $2 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 + local.get $4 + local.get $0 + i32.const 4144 i32.load - i32.store - local.get $2 - local.get $5 - i32.store - local.get $1 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 + local.set $4 br $for-loop|0 end end + local.get $2 + local.get $5 + local.get $1 + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 local.get $3 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release + 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 6 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub - local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - call $~lib/typedarray/Int32Array#reverse + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint32Array#filter local.tee $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 6 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 i32.ne if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#__get + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#filter (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 4 + (local $4 i32) + (local $5 i32) + (local $6 i64) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.load offset=4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $1 - local.get $0 - local.get $2 - local.get $0 - local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 2 + i32.const 3 i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor + i32.const 0 + call $~lib/rt/itcms/__new local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s + local.get $3 + local.get $4 + i32.gt_s if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $3 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 + local.get $7 + local.get $4 + i32.const 3 + i32.shl i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 + i64.load + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.const 6768 - local.get $1 - i32.const 1 - i32.sub + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 + local.get $4 local.get $0 - i32.sub - call $~lib/array/Array#__get - i32.ne + i32.const 4176 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) if - i32.const 0 - i32.const 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 end - local.get $0 + local.get $4 i32.const 1 i32.add - local.set $0 - br $for-loop|1 + local.set $4 + br $for-loop|0 end end + local.get $2 + local.get $5 + local.get $1 + i32.const 3 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 local.get $3 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.tee $1 - call $~lib/typedarray/Int32Array#reverse + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (local $0 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 6 + call $~lib/typedarray/Int64Array#constructor local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 8 - i32.ne + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int64Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 531 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.ne + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Uint64Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) + (local $6 i64) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 i32.const 3 i32.shr_u - i32.const 1 - i32.sub - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if + local.get $7 local.get $4 - local.get $1 i32.const 3 i32.shl i32.add - local.tee $2 i64.load - local.set $5 - local.get $2 - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=20 i32.const 3 - i32.shl - i32.add - local.tee $2 - i64.load - i64.store - local.get $2 - local.get $5 - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 + global.set $~argumentsLength + local.get $6 + local.get $4 local.get $0 + i32.const 4208 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 - i32.sub - local.set $0 + i32.add + local.set $4 br $for-loop|0 end end - local.get $3 - ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=8 + local.get $2 + local.get $5 + local.get $1 i32.const 3 - i32.shr_u + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain i32.store - local.get $1 - local.get $3 - i32.load offset=4 local.get $2 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $1 local.get $0 + call $~lib/rt/itcms/__link local.get $2 - local.get $0 + local.get $3 + i32.store offset=8 local.get $2 - i32.gt_s - select + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + (local $0 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 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 - i32.shl + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4208 i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint64Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 i32.load - local.tee $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $3 - local.get $0 - i32.const 6768 - 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 - local.get $2 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i32.const 6768 - local.get $1 - 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 1360 - i32.const 524 - 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.sub + if + i32.const 0 + i32.const 1568 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.tee $1 - call $~lib/typedarray/Int64Array#reverse - local.tee $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 8 - i64.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 i64.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 i64.ne if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int64Array#__get + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get i64.const 5 i64.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#filter (param $0 i32) (result i32) + (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 4 + (local $4 i32) + (local $5 i32) + (local $6 f32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 i32.load offset=8 - i32.const 3 + i32.const 2 i32.shr_u - local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $1 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 i32.load offset=4 + local.set $7 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.gt_s + if + local.get $7 + local.get $4 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 + local.get $4 + local.get $0 + i32.const 4240 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $6 + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end local.get $2 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 + local.get $5 local.get $1 - local.get $0 + i32.const 2 + i32.shl + local.tee $3 + call $~lib/rt/itcms/__renew + local.tee $0 + i32.store local.get $2 local.get $0 + call $~lib/rt/itcms/__link local.get $2 - i32.gt_s - select - local.get $2 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain local.get $3 - call $~lib/rt/pure/__release + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $3 - local.get $0 - i32.const 6768 - 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 - local.get $2 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i32.const 6768 - local.get $1 - 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 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.tee $1 - call $~lib/typedarray/Int64Array#reverse + 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 6 + call $~lib/typedarray/Float32Array#constructor local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.ne + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float32Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.ne + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.ne + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 531 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.ne + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) + (func $~lib/typedarray/Float64Array#filter (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) + (local $5 i32) + (local $6 f64) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - i32.const 1 - i32.sub - local.set $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=16 + local.get $0 + i32.load offset=4 + local.set $7 loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u + local.get $3 + local.get $4 + i32.gt_s if + local.get $7 local.get $4 - local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - local.tee $2 - f32.load - local.set $5 - local.get $2 + f64.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + i32.const 3 + global.set $~argumentsLength + local.get $6 local.get $4 local.get $0 - i32.const 2 - i32.shl - i32.add - local.tee $2 - f32.load - f32.store - local.get $2 - local.get $5 - f32.store - local.get $1 + i32.const 4272 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + if + local.get $5 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $6 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + end + local.get $4 i32.const 1 i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 + local.set $4 br $for-loop|0 end end - local.get $3 - ) - (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - i32.const 4 - local.get $0 - call $~lib/rt/pure/__retain + local.get $2 + local.get $5 + local.get $1 + i32.const 3 + i32.shl local.tee $3 - i32.load offset=8 - i32.const 2 - i32.shr_u + call $~lib/rt/itcms/__renew local.tee $0 - local.get $0 - i32.const 4 - i32.gt_s - select - local.set $2 - local.get $1 - i32.const 0 - i32.lt_s - if (result i32) - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 0 - local.get $0 - i32.const 0 - i32.gt_s - select - else - local.get $1 - local.get $0 - local.get $0 - local.get $1 - i32.gt_s - select - end - local.set $0 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - i32.load - call $~lib/rt/pure/__retain i32.store - local.get $1 - local.get $3 - i32.load offset=4 local.get $2 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $1 local.get $0 + call $~lib/rt/itcms/__link local.get $2 - local.get $0 + local.get $3 + i32.store offset=8 local.get $2 - i32.gt_s - select + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $1 - call $~lib/rt/pure/__retain - local.get $3 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $3 - local.get $0 - i32.const 6768 - 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 - local.get $2 - call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#__get - i32.const 6768 - local.get $1 - 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 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.tee $1 - call $~lib/typedarray/Float32Array#reverse + 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 6 + call $~lib/typedarray/Float64Array#constructor local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.ne - if - i32.const 0 - i32.const 1360 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.ne + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float64Array#filter + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.ne - if - i32.const 0 - i32.const 1360 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.ne + i32.shr_u + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=4 - local.set $4 - local.get $3 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.gt_u - if - local.get $4 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $2 - f64.load - local.set $5 - local.get $2 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.tee $2 - f64.load - f64.store - local.get $2 - local.get $5 - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|0 - end - end - local.get $3 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 6780 - i32.load - local.tee $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $3 - loop $for-loop|0 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - i32.const 6768 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $3 - local.get $0 - i32.const 6768 - 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 - local.get $2 - call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $1 - i32.lt_s - if - local.get $2 - local.get $0 - call $~lib/typedarray/Float64Array#__get - i32.const 6768 - local.get $1 - 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 1360 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $3 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - call $~lib/typedarray/Float64Array#reverse - local.tee $0 i32.const 0 call $~lib/typedarray/Float64Array#__get - f64.const 8 + f64.const 3 f64.ne if i32.const 0 - i32.const 1360 - i32.const 529 + i32.const 1568 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 i32.const 1 call $~lib/typedarray/Float64Array#__get - f64.const 7 + f64.const 4 f64.ne if i32.const 0 - i32.const 1360 - i32.const 530 + i32.const 1568 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.ne - if - i32.const 0 - i32.const 1360 - i32.const 531 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 3 + i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 5 f64.ne if i32.const 0 - i32.const 1360 - i32.const 532 + i32.const 1568 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 6768 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - local.get $2 + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 local.set $4 - loop $while-continue|0 + loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if local.get $2 - local.get $4 + local.get $3 i32.add - i32.load8_u - local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + drop local.get $2 i32.const 1 i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + i32.const 0 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 i32.load offset=4 local.set $3 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $2 local.get $3 i32.add i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 local.get $1 - i32.const 255 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + i32.const 0 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - unreachable end - local.get $0 - i32.load offset=8 - local.set $2 + i32.const 0 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6880 - local.get $1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 1 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=8 + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=8 + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6880 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + 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 local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=8 local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.const 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 local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 + (local $4 i32) + (local $5 f64) + 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 local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6880 - local.get $1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $0 + i32.load offset=8 i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $4 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + br_if $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const -1 + local.set $2 end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int8Array#every (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 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $3 + i32.add + i32.load8_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#every (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 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#every (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 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#every (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 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + i32.const 1 end - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - local.get $2 + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - 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 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u local.set $4 - loop $while-continue|0 + loop $for-loop|0 local.get $2 - local.get $3 + local.get $4 i32.lt_s if - local.get $4 + local.get $3 local.get $2 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_u + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 local.get $1 - i32.const 65535 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 + drop local.get $2 i32.const 1 i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + i32.const 1 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + (local $4 i32) + (local $5 i64) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end 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 + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $0 i32.load offset=4 local.set $3 - loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + loop $for-loop|0 local.get $2 - i32.const 0 - i32.ge_s + local.get $4 + i32.lt_s if local.get $3 local.get $2 - i32.const 1 + i32.const 3 i32.shl i32.add - i32.load16_u + i64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 local.get $1 - i32.const 65535 - i32.and - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 + drop local.get $2 i32.const 1 - i32.sub + i32.add local.set $2 - br $while-continue|0 + br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 + i32.const 1 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + (local $3 i32) + (local $4 i32) + (local $5 f32) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $2 i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.add + local.set $2 + br $for-loop|0 end - unreachable end - local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 - loop $for-loop|0 + (local $4 i32) + (local $5 f64) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 6880 - local.get $1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + i32.const 0 + local.get $5 + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + i32.eqz + br_if $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + i32.const 1 end - local.get $0 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_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/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + i32.const 255 + i32.and + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and i32.ne if i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 + 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/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6496 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6496 + i32.store offset=4 local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6496 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 563 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 $2 + local.get $3 + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $2 + local.get $0 + local.get $1 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 local.get $0 i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf + i32.const 6448 i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6528 + i32.store offset=8 + local.get $0 + i32.const 6528 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 565 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 local.get $0 i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end i32.const 1 - global.set $~argumentsLength + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6560 + i32.store offset=8 + local.get $0 + i32.const 6560 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 571 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 + i32.const 65535 + i32.and + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and i32.ne if i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + global.get $std/typedarray/forEachCallCount i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $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> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.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/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 9 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 11 + i32.const 6448 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 i32.const 1 - call $~lib/typedarray/Int16Array#indexOf + i32.const 6448 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6592 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6592 + i32.store offset=4 + local.get $0 + i32.load offset=4 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 loop $for-loop|0 local.get $1 - local.get $2 + local.get $3 i32.lt_s if - local.get $0 + local.get $2 local.get $1 - i32.const 6880 + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength local.get $1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 6592 + i32.load + call_indirect (type $i32_i32_i32_=>_none) local.get $1 i32.const 1 i32.add @@ -14313,10238 +15751,8755 @@ br $for-loop|0 end end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 558 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const -1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.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/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6624 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6624 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6624 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 562 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + local.get $0 i32.ne if i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount i32.const 1 - global.set $~argumentsLength - local.get $0 + 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) + global.get $~lib/memory/__stack_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/typedarray/Int16Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store local.get $0 - i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.ne + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s + i64.ne if i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 3 + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6720 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6720 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6720 + i32.load + call_indirect (type $i64_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 572 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6752 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6752 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6752 + i32.load + call_indirect (type $i64_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 573 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 6448 + i32.store local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 - i32.ne + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + f32.convert_i32_s + f32.ne if i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + 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> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6784 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6784 + i32.load + call_indirect (type $f32_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 580 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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) + global.get $~lib/memory/__stack_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/typedarray/Int16Array#indexOf + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store + local.get $0 + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s + f64.ne if i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 + i32.const 1568 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 + global.get $std/typedarray/forEachCallCount i32.ne if i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 + i32.const 1568 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + local.get $2 + global.get $std/typedarray/forEachSelf i32.ne if i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 + i32.const 1568 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 10 + 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> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Int16Array#indexOf - i32.const -1 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6816 + i32.store offset=8 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6816 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6816 + i32.load + call_indirect (type $f64_i32_i32_=>_none) + 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 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 584 + i32.const 1568 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $2 + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end local.get $2 - i32.const 0 - i32.lt_s + i32.gt_u if local.get $2 + local.get $4 + i32.add + local.tee $3 + i32.load8_s + local.set $5 local.get $3 + local.get $0 + local.get $4 i32.add - local.tee $2 - i32.const 0 + local.tee $3 + i32.load8_s + i32.store8 + local.get $3 + local.get $5 + i32.store8 local.get $2 - i32.const 0 - i32.gt_s - select + i32.const 1 + i32.add 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 - local.get $1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.eqz - if local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - 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 $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - i32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 end - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6892 + (local $4 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#constructor + local.tee $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int8Array#constructor local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=12 loop $for-loop|0 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $1 + local.get $0 + i32.const 6912 + local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 - i32.const 0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.const -1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + call $~lib/typedarray/Int8Array#__get + i32.const 8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 559 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 560 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 561 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + call $~lib/typedarray/Int8Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 563 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reverse (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 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + i32.store local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $2 + local.get $4 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $4 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end - i32.const 1 - global.set $~argumentsLength - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if + i32.store offset=4 + i32.const 4 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $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 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 - i32.const 1 - global.set $~argumentsLength + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Uint8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 571 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 572 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 573 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 575 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.const 3 + local.get $0 + i32.load offset=8 + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i32.const 4 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + local.get $0 + i32.load offset=4 + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Uint8Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 581 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 582 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 9 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 583 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 584 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 i32.const 1 - call $~lib/typedarray/Int32Array#indexOf + i32.shr_u i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if + ) + (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $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 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 local.get $0 - call $~lib/rt/pure/__release + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6892 + (local $4 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int16Array#constructor local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=12 loop $for-loop|0 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $1 + local.get $0 + i32.const 6912 + local.get $0 call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 11 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int16Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 563 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 11 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 local.get $0 - i32.const -1 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 569 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 571 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#reverse (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 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + i32.store local.get $0 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 + i32.load offset=8 i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf + i32.shr_u i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray - local.tee $1 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 + i32.store offset=4 i32.const 4 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + local.get $0 + i32.load offset=8 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - i32.const 9 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load + local.tee $4 + i32.store local.get $1 - i32.const 5 - i32.const 1 - call $~lib/typedarray/Int32Array#indexOf + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 local.get $1 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $2 local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 1 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $2 + 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end local.get $2 - i32.const 0 i32.lt_s if - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer local.get $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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $3 - i32.lt_s - if - local.get $1 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - if local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - 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 $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 end - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint16Array#reverse + drop + i32.const 0 local.set $0 - loop $for-loop|0 - local.get $1 + loop $for-loop|1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 local.get $1 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $0 + br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Uint16Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const 0 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf + call $~lib/typedarray/Uint16Array#__get + i32.const 8 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 557 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 558 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 559 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 560 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end - local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end - local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int32Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 564 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 565 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 6 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 567 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 568 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#reverse (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 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + i32.store local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - i64.const 3 + i32.load offset=8 i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf + i32.shr_u i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + i32.const 4 local.get $0 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.tee $1 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - i64.const 4 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load + local.tee $4 + i32.store local.get $1 - i64.const 10 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $4 + call $~lib/rt/itcms/__link local.get $1 - i64.const 5 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6892 + (local $4 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint32Array#constructor local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=12 loop $for-loop|0 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $1 + local.get $0 + i32.const 6912 + local.get $0 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 - i64.const 0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint32Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub + call $~lib/array/Array#__get + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Uint32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const -1 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 i32.ne if i32.const 0 - i32.const 1360 - i32.const 559 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 i32.ne if i32.const 0 - i32.const 1360 - i32.const 560 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const 3 i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 i32.ne if i32.const 0 - i32.const 1360 - i32.const 561 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 i32.ne if i32.const 0 - i32.const 1360 - i32.const 562 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + i32.store local.get $0 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 local.get $0 - i64.const 11 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=8 + i32.const 3 + i32.shr_u i32.const 1 - global.set $~argumentsLength - local.get $0 - i64.const -1 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 3 + i32.store offset=4 i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $0 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf + i32.load offset=8 i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $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 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.ne - if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 local.get $0 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 local.get $0 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.tee $1 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 local.get $1 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer local.get $1 - i64.const 9 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + 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 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end - local.get $1 - i64.const 10 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Int64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 584 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 585 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i64.const 5 - i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 586 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Int64Array#__get i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.ne + i64.ne if i32.const 0 - i32.const 1360 - i32.const 587 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $2 + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end local.get $2 - i32.const 0 - i32.lt_s + i32.gt_u if + local.get $4 local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 local.get $3 + local.get $4 + local.get $0 + i32.const 3 + i32.shl i32.add - local.tee $2 - i32.const 0 + local.tee $3 + i64.load + i64.store + local.get $3 + local.get $5 + i64.store local.get $2 - i32.const 0 - i32.gt_s - select + i32.const 1 + i32.add local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 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 - local.get $1 - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - f32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - i32.eqz - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 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 + 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.const 0 i32.lt_s select - local.set $2 - local.get $0 - i32.load offset=4 - local.set $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - f32.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $2 end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + local.get $1 + local.get $0 + i32.load + local.tee $4 + i32.store + local.get $1 + local.get $4 + call $~lib/rt/itcms/__link + local.get $1 local.get $0 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 local.get $1 local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf + local.get $3 + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - i32.const 6892 + (local $4 i64) + 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Float32Array#constructor + local.tee $2 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Uint64Array#constructor local.tee $3 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=12 loop $for-loop|0 - local.get $1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $1 + local.get $0 + i32.const 6912 + local.get $0 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - i32.add - local.set $1 + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + 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 - local.get $0 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - f32.const -1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint64Array#reverse + drop i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + 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 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 563 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf i32.const 1 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 565 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - if - i32.const 0 - i32.const 1360 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 local.get $0 - f32.const 11 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 568 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const -1 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 local.get $0 - f32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs i32.const 3 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.ne if i32.const 0 - i32.const 1360 - i32.const 570 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $1 + i32.store local.get $0 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf + i32.load offset=8 + i32.const 2 + i32.shr_u i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + i32.const 4 local.get $0 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.tee $1 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - if - i32.const 0 - i32.const 1360 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $2 + local.get $2 + i32.const 4 + i32.gt_s + select + local.set $3 local.get $1 - f32.const 9 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if + i32.lt_s + if (result i32) + local.get $1 + local.get $2 + i32.add + local.tee $1 i32.const 0 - i32.const 1360 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if + local.get $1 i32.const 0 - i32.const 1360 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + select + else + local.get $1 + local.get $2 + local.get $1 + local.get $2 + i32.lt_s + select end + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 local.get $1 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $0 + i32.load + local.tee $4 + i32.store local.get $1 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $4 + call $~lib/rt/itcms/__link local.get $1 - f32.const 5 + local.get $0 + i32.load offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 + local.get $1 + local.get $2 local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release + local.get $2 + local.get $3 + i32.gt_s + select + local.get $3 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $2 + (local $4 f32) + 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.ge_s - i32.const 1 - local.get $3 - select - if - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end local.get $2 - i32.const 0 i32.lt_s if - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer local.get $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 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 local.get $3 - i32.lt_s - if - local.get $1 - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - f64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) - (local $3 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - if local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - 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 $3 - loop $while-continue|0 - local.get $2 - i32.const 0 - i32.ge_s - if - local.get $1 - local.get $3 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - f64.eq - if - local.get $0 - call $~lib/rt/pure/__release - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - i32.const -1 - local.set $2 - end - local.get $2 - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) - (local $2 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange - end - unreachable + i32.const 6912 + 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 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $2 end - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 6892 - i32.load - local.tee $0 - local.set $2 - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 local.set $0 - loop $for-loop|0 - local.get $1 + loop $for-loop|1 + local.get $0 local.get $2 i32.lt_s if - local.get $0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 6880 + i32.store offset=4 local.get $1 + local.get $0 + call $~lib/typedarray/Float32Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + local.get $2 + i32.const 1 + i32.sub + local.get $0 + i32.sub call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 + f32.convert_i32_s + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|0 + local.set $0 + br $for-loop|1 end end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Float32Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - f64.const 0 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 557 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 558 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const -1 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 559 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf i32.const 3 - i32.ne + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.ne if i32.const 0 - i32.const 1360 - i32.const 560 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.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 local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf + local.tee $1 + i32.store + local.get $0 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 i32.const 3 - i32.ne + i32.shr_u + i32.const 1 + i32.sub + local.set $0 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.gt_u + if + local.get $4 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $4 + local.get $0 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + 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 + i32.const 6912 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6924 + i32.load + local.tee $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=12 + loop $for-loop|0 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $1 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=16 + local.get $3 + local.get $0 + i32.const 6912 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float64Array#reverse + drop + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Float64Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 6912 + i32.store offset=4 + i32.const 6912 + 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 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Float64Array#reverse + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 561 + i32.const 1568 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.ne + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 562 + i32.const 1568 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $0 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 564 + i32.const 1568 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store offset=4 local.get $0 - f64.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.ne if i32.const 0 - i32.const 1360 - i32.const 567 + i32.const 1568 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (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 local.get $0 - f64.const 11 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - global.set $~argumentsLength + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const -1 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.store offset=4 i32.const -1 - i32.ne - if + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 i32.const 0 - i32.const 1360 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.tee $3 + local.get $0 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 end - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.ne - if + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $2 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 i32.const 0 - i32.const 1360 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + local.get $2 + local.tee $3 + local.get $0 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 end - local.get $0 - f64.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $2 end local.get $0 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.get $1 + local.get $2 + call $~lib/typedarray/Int8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 573 + i32.const 1568 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 574 + i32.const 1568 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 575 + i32.const 1568 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 576 + i32.const 1568 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + i32.const 3 i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.tee $1 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + call $~lib/typedarray/Int8Array#indexOf i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 580 + i32.const 1568 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 4 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 581 + i32.const 1568 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 5 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 582 + i32.const 1568 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne + call $~lib/typedarray/Int8Array#lastIndexOf@varargs if i32.const 0 - i32.const 1360 - i32.const 583 + i32.const 1568 + i32.const 567 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 10 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 584 + i32.const 1568 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 585 + i32.const 1568 + i32.const 569 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 586 + i32.const 1568 + i32.const 570 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 587 + i32.const 1568 + i32.const 571 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/rt/pure/__release - i32.const 6880 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) - local.get $0 - i32.const 10 - i32.ge_u - i32.const 1 - i32.add + i32.store offset=4 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 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 100 - i32.lt_u - select + i32.store offset=4 local.get $0 - i32.const 1000000 - i32.ge_u - i32.const 6 - i32.add + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1000000000 - i32.ge_u - i32.const 8 - i32.add + i32.store offset=4 local.get $0 - i32.const 100000000 - i32.ge_u - i32.add + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 10000000 - i32.lt_u - select + i32.store offset=4 local.get $0 - i32.const 100000 - i32.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i32) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store16 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - ) - (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 local.get $0 - i32.eqz + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne if - i32.const 7152 - return + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.get $0 - i32.sub + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 31 - i32.shr_u + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int8Array#subarray local.tee $0 - select - local.tee $1 - call $~lib/util/number/decimalCount32 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.add - local.tee $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - local.get $1 - local.get $3 - call $~lib/util/number/utoa_dec_simple + i32.store offset=4 local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $2 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 i32.const 0 - i32.lt_s - local.tee $2 + call $~lib/typedarray/Int8Array#indexOf if - local.get $0 - i32.const 45 - i32.store16 i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - i32.const 0 + i32.store offset=4 local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $2 - local.get $2 + i32.const 9 i32.const 0 - i32.gt_s - select - local.tee $3 - local.get $1 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 i32.const 0 - local.get $1 - i32.const 0 - i32.gt_s - select - local.tee $1 - local.get $2 - local.get $1 - local.get $2 - i32.lt_s - select - local.tee $1 - local.get $1 - local.get $3 - i32.lt_s - select - i32.const 1 - i32.shl - local.tee $4 - local.get $3 - local.get $1 - local.get $1 - local.get $3 - i32.gt_s - select - i32.const 1 - i32.shl - local.tee $1 - i32.sub - local.tee $3 - i32.eqz + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 i32.const 0 - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.eq - local.get $1 - select + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - call $~lib/rt/pure/__retain - return + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.add - local.get $3 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - i32.load8_s - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 + global.get $~lib/memory/__stack_pointer i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + (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 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s + local.get $1 + local.get $2 + i32.lt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|0 end end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.add - i32.load8_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) - local.get $0 - i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/compareImpl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - local.tee $3 - i32.const 7 - i32.and - local.get $1 - call $~lib/rt/pure/__retain - local.tee $5 - local.tee $1 - i32.const 7 - i32.and - i32.or - i32.eqz + i32.const 11 i32.const 0 - local.get $2 - i32.const 4 - i32.ge_u - select - if - loop $do-continue|0 - local.get $3 - i64.load - local.get $1 - i64.load - i64.eq - if - local.get $3 - i32.const 8 - i32.add - local.set $3 - local.get $1 - i32.const 8 - i32.add - local.set $1 - local.get $2 - i32.const 4 - i32.sub - local.tee $2 - i32.const 4 - i32.ge_u - br_if $do-continue|0 - end - end + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable end - loop $while-continue|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - if - local.get $3 - i32.load16_u - local.tee $0 - local.get $1 - i32.load16_u - local.tee $6 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - local.get $6 - i32.sub - return - end - local.get $3 - i32.const 2 - i32.add - local.set $3 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $while-continue|1 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 i32.const 0 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 - local.get $1 - call $~lib/rt/pure/__retain - local.tee $1 - i32.eq + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne if - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - block $folding-inner0 - local.get $1 - i32.eqz - i32.const 1 - local.get $0 - select - br_if $folding-inner0 - 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 - br_if $folding-inner0 - local.get $0 - local.get $1 - local.get $2 - call $~lib/util/string/compareImpl - i32.eqz - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - ) - (func $~lib/util/number/utoa32 (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + i32.store offset=4 local.get $0 - i32.eqz + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - i32.const 7152 - return + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/util/number/decimalCount32 - local.tee $1 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 + i32.store offset=4 local.get $0 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $2 - call $~lib/rt/pure/__retain - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 255 - i32.and + i32.const 1 i32.const 10 - i32.lt_u + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 255 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs if - local.get $0 - i32.load8_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.shl - i32.add + global.set $~argumentsLength local.get $0 - local.get $4 - i32.add - i32.load8_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.load offset=8 - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.lt_s - local.tee $2 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.ne if - local.get $0 - i32.const 45 - i32.store16 i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 10 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $2 - call $~lib/util/number/decimalCount32 - i32.add - local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne if - local.get $0 - i32.load16_s - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.shl - i32.add + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $4 i32.const 1 - i32.shl - i32.add - i32.load16_s - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray local.tee $0 - i32.gt_s + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 65535 - i32.and - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $1 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $2 - local.get $1 - call $~lib/util/number/utoa_dec_simple - local.get $1 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf i32.const 1 - i32.sub - local.tee $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - i32.load16_u - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 1 - i32.shr_u - local.tee $5 - i32.const 10 - i32.add - i32.mul - i32.const 10 - i32.add - local.tee $7 + call $~lib/typedarray/Int8Array#indexOf i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + (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 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s + local.get $1 + local.get $2 + i32.lt_s if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $1 i32.const 1 i32.add - local.set $6 + local.set $1 br $for-loop|0 end end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 + i32.const 11 i32.const 0 - i32.lt_s - local.tee $2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - i32.const 45 - i32.store16 i32.const 0 - local.get $1 - i32.sub - local.set $1 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.const 10 - i32.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 48 - i32.or - i32.store16 - local.get $2 - i32.const 1 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple + i32.store offset=4 local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 + i32.const 3 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne if - local.get $0 - i32.load - call $~lib/util/number/itoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 11 - i32.add - i32.mul - i32.const 11 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.ne if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - local.get $1 - i32.const 10 - i32.lt_u + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount32 - local.tee $0 - call $~lib/util/number/utoa_dec_simple + i32.store offset=4 local.get $0 - ) - (func $~lib/util/string/joinIntegerArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return - end - local.get $4 - i32.eqz + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne if - local.get $0 - i32.load - call $~lib/util/number/utoa32 - local.get $3 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - local.get $3 - 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.shl + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.get $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.shl - i32.add + global.set $~argumentsLength local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) + i32.const 11 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 100000000000 - i64.ge_u - i32.const 10 - i32.add + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 10000000000 - i64.ge_u - i32.add + i32.const -1 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 100000000000000 - i64.ge_u - i32.const 13 - i32.add + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i64.const 10000000000000 - i64.ge_u - i32.add + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 1000000000000 - i64.lt_u - select + i32.store offset=4 local.get $0 - i64.const 10000000000000000 - i64.ge_u - i32.const 16 - i32.add + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const -8446744073709551616 - i64.ge_u - i32.const 18 - i32.add + i32.store offset=4 local.get $0 - i64.const 1000000000000000000 - i64.ge_u - i32.add + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i64.const 100000000000000000 - i64.lt_u - select + i32.store offset=4 local.get $0 - i64.const 1000000000000000 - i64.lt_u - select - ) - (func $~lib/util/number/utoa_dec_simple (param $0 i32) (param $1 i64) (param $2 i32) - loop $do-continue|0 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 10 - i64.rem_u - i32.wrap_i64 - i32.const 48 - i32.add - i32.store16 - local.get $1 - i64.const 10 - i64.div_u - local.tee $1 - i64.const 0 - i64.ne - br_if $do-continue|0 - end - ) - (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 $2 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne if - local.get $0 - i32.const 45 - i32.store16 - i64.const 0 - local.get $1 - i64.sub - local.set $1 + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i64.const 10 - i64.lt_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - local.get $2 - i32.const 1 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i64.const 4294967295 - i64.le_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 1 + i32.ne if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $2 - local.get $0 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.get $2 - i32.add - local.tee $2 - call $~lib/util/number/utoa_dec_simple + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $4 - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.sub - local.tee $5 - i32.const 0 - i32.lt_s + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.ne if - local.get $4 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - i32.eqz - if - block $__inlined_func$~lib/util/number/itoa64 (result i32) - i32.const 7152 - local.get $0 - i64.load - i32.wrap_i64 - i64.extend_i32_s - local.tee $3 - i64.eqz - br_if $__inlined_func$~lib/util/number/itoa64 - drop - i64.const 0 - local.get $3 - i64.sub - local.get $3 - local.get $3 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.tee $0 - select - local.tee $3 - i64.const 4294967295 - i64.le_u - if - local.get $3 - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.get $0 - i32.add - local.tee $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $2 - local.get $5 - call $~lib/util/number/utoa_dec_simple - else - local.get $3 - call $~lib/util/number/decimalCount64High - local.get $0 - i32.add - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $1 - local.get $3 - local.get $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $0 - if - local.get $1 - i32.const 45 - i32.store16 - end - local.get $1 - call $~lib/rt/pure/__retain - end - local.get $4 - call $~lib/rt/pure/__release - return + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $5 - local.get $4 - i32.const 20 - i32.sub - i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf i32.const 1 - i32.shr_u - local.tee $6 - i32.const 21 - i32.add - i32.mul - i32.const 21 - i32.add - local.tee $8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 1 - i32.shl + call $~lib/typedarray/Int8Array#indexOf i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $5 - local.get $7 - i32.gt_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $2 + i32.const 0 + i32.lt_s if - local.get $1 local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl + local.get $4 i32.add - i64.load - call $~lib/util/number/itoa_buffered + local.tee $2 + i32.const 0 local.get $2 - i32.add + i32.const 0 + i32.gt_s + select local.set $2 - local.get $6 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s if - local.get $1 + local.get $0 local.get $2 + local.tee $3 i32.const 1 i32.shl i32.add - local.get $4 - local.get $6 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $3 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 i32.add local.set $2 + br $while-continue|0 end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 end + i32.const -1 + local.set $3 end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $4 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $4 - call $~lib/rt/pure/__release - local.get $1 + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) + (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (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 10 - i64.lt_u - if + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $0 - local.get $1 - i64.const 48 - i64.or - i64.store16 + i32.load offset=8 i32.const 1 - return - end - local.get $1 - i64.const 4294967295 - i64.le_u - if - local.get $1 - i32.wrap_i64 - local.tee $3 - call $~lib/util/number/decimalCount32 - local.set $2 - local.get $0 - local.get $3 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $2 - call $~lib/util/number/utoa_dec_simple - else + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 local.get $0 - local.get $1 - local.get $1 - call $~lib/util/number/decimalCount64High - local.tee $2 - call $~lib/util/number/utoa_dec_simple - end - local.get $2 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return - end - local.get $4 - i32.eqz - if - block $__inlined_func$~lib/util/number/utoa64 (result i32) - i32.const 7152 - local.get $0 - i64.load - local.tee $5 - i64.eqz - br_if $__inlined_func$~lib/util/number/utoa64 - drop - local.get $5 - i64.const 4294967295 - i64.le_u + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s if - local.get $5 - i32.wrap_i64 - local.tee $1 - call $~lib/util/number/decimalCount32 - local.tee $2 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $0 - local.get $1 + local.get $0 local.get $2 - call $~lib/util/number/utoa_dec_simple - else - local.get $5 - call $~lib/util/number/decimalCount64High - local.tee $1 + local.tee $3 i32.const 1 i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.tee $0 - local.get $5 + i32.add + i32.load16_u local.get $1 - call $~lib/util/number/utoa_dec_simple + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end - local.get $0 - call $~lib/rt/pure/__retain end - local.get $3 - call $~lib/rt/pure/__release - return + i32.const -1 + local.set $3 end - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.const 20 + ) + (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $6 - i32.const 20 - i32.add - i32.mul - i32.const 20 - i32.add - local.tee $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $7 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $6 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $6 + 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.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $6 - i32.add - local.set $2 + i32.sub + br_table $0of1 $1of1 $outOfRange end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 end - local.get $8 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - call $~lib/util/number/itoa_buffered + local.get $1 local.get $2 + call $~lib/typedarray/Int16Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + (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 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0 local.get $1 - call $~lib/rt/pure/__release - return + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 3 - i32.shr_u - call $~lib/util/string/joinIntegerArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (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 i64) - (local $8 i64) - (local $9 i32) - (local $10 i64) - (local $11 i32) - (local $12 i64) - (local $13 i64) - local.get $3 - local.get $1 - i64.sub - local.set $8 - local.get $3 - i64.const 1 i32.const 0 - local.get $4 - i32.sub - local.tee $11 - i64.extend_i32_s - i64.shl - local.tee $10 - i64.const 1 - i64.sub - local.tee $12 - i64.and - local.set $7 - local.get $3 - local.get $11 - i64.extend_i32_s - i64.shr_u - i32.wrap_i64 - local.tee $2 - call $~lib/util/number/decimalCount32 - local.set $9 - loop $while-continue|0 - local.get $9 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if 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 $2 - i32.const 1000000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100000 - i32.div_u - local.set $4 - local.get $2 - i32.const 100000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10000 - i32.div_u - local.set $4 - local.get $2 - i32.const 10000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 1000 - i32.div_u - local.set $4 - local.get $2 - i32.const 1000 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 100 - i32.div_u - local.set $4 - local.get $2 - i32.const 100 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - i32.const 10 - i32.div_u - local.set $4 - local.get $2 - i32.const 10 - i32.rem_u - local.set $2 - br $break|1 - end - local.get $2 - local.set $4 - i32.const 0 - local.set $2 - br $break|1 - end - i32.const 0 - local.set $4 - end - local.get $4 - local.get $6 - i32.or - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $4 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $5 - local.get $7 - local.get $2 - i64.extend_i32_u - local.get $11 - 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 8432 - i32.add - i64.load32_u - local.get $11 - i64.extend_i32_s - i64.shl - local.set $10 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|3 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|3 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 - return - end - br $while-continue|0 - end + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $11 - i64.extend_i32_s - local.set $13 - loop $while-continue|4 (result i32) - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $7 - i64.const 10 - i64.mul - local.tee $3 - local.get $13 - i64.shr_u - local.tee $1 - local.get $6 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.const 48 - i32.add - i32.store16 - local.get $6 - i32.const 1 - i32.add - local.set $6 - end - local.get $9 - i32.const 1 - i32.sub - local.set $9 - local.get $3 - local.get $12 - i64.and - local.tee $7 - local.get $5 - 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 - local.get $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if i32.const 0 - local.get $9 - i32.sub - i32.const 2 - i32.shl - i32.const 8432 - i32.add - i64.load32_u - i64.mul - local.set $8 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $2 - loop $while-continue|6 - i32.const 1 - local.get $8 - local.get $1 - i64.sub - local.get $1 - local.get $10 - i64.add - local.tee $3 - local.get $8 - i64.sub - i64.gt_u - local.get $3 - local.get $8 - i64.lt_u - select - i32.const 0 - local.get $10 - local.get $5 - local.get $1 - i64.sub - i64.le_u - i32.const 0 - local.get $1 - local.get $8 - i64.lt_u - select - select - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $1 - local.get $10 - i64.add - local.set $1 - br $while-continue|6 - end - end - local.get $0 - local.get $2 - i32.store16 - local.get $6 + i32.const 1568 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $1 - i32.const 2 - i32.add - return + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $2 - i32.add - local.tee $3 - i32.const 21 - i32.le_s + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 i32.const 0 - local.get $1 - local.get $3 - i32.le_s - select - if (result i32) - loop $for-loop|0 - local.get $1 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end - end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.const 3145774 - i32.store - local.get $3 - i32.const 2 - i32.add - else - local.get $3 - i32.const 21 - i32.le_s + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + if i32.const 0 - local.get $3 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if i32.const 0 - i32.gt_s - select - if (result i32) - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.const 2 - i32.add - local.get $0 - i32.const 0 - local.get $2 - i32.sub - i32.const 1 - i32.shl - call $~lib/memory/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 - i32.const 0 - local.get $3 - i32.const -6 - i32.gt_s - select - if (result i32) - local.get $0 - i32.const 2 - local.get $3 - i32.sub - local.tee $3 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $1 - i32.const 1 - i32.shl - 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 - i32.lt_s - if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 48 - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - local.get $1 - local.get $3 - i32.add - else - local.get $1 - i32.const 1 - i32.eq - if (result i32) - local.get $0 - i32.const 101 - i32.store16 offset=2 - local.get $0 - local.tee $1 - i32.const 4 - i32.add - 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 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - local.get $1 - i32.const 45 - i32.const 43 - local.get $2 - select - i32.store16 offset=4 - local.get $0 - i32.const 2 - i32.add - else - local.get $0 - i32.const 4 - i32.add - local.get $0 - i32.const 2 - i32.add - local.get $1 - i32.const 1 - i32.shl - local.tee $2 - i32.const 2 - i32.sub - call $~lib/memory/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 - local.tee $2 - i32.const 4 - i32.add - 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 - call $~lib/util/number/decimalCount32 - i32.const 1 - i32.add - local.tee $0 - call $~lib/util/number/utoa_dec_simple - 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 - i32.const 2 - i32.add - end - end - end - end - ) - (func $~lib/util/number/dtoa_core (param $0 i32) (param $1 f64) (result i32) - (local $2 i64) - (local $3 i64) - (local $4 i32) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - f64.const 0 - f64.lt - local.tee $9 - if (result f64) - local.get $0 - i32.const 45 - i32.store16 - local.get $1 - f64.neg - else - local.get $1 + i32.const 1568 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 0 - i32.ne - i64.extend_i32_u - i64.const 52 - i64.shl - local.get $2 - i64.const 4503599627370495 - i64.and - i64.add - local.tee $3 - i64.const 1 - i64.shl - i64.const 1 - i64.add - local.tee $2 - local.get $2 - i64.clz - i32.wrap_i64 - local.tee $4 - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_plus - local.get $8 - i32.const 1 - local.get $8 - select - i32.const 1075 - i32.sub - local.tee $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.sub - local.get $4 - i32.sub - local.set $4 - local.get $3 - local.get $3 - i64.const 4503599627370496 - i64.eq + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.add - local.tee $10 - i64.extend_i32_s - i64.shl - i64.const 1 - i64.sub - local.get $8 - local.get $10 - i32.sub - local.get $4 - i32.sub - i64.extend_i32_s - i64.shl - global.set $~lib/util/number/_frc_minus - local.get $4 - global.set $~lib/util/number/_exp - i32.const 348 - i32.const -61 - global.get $~lib/util/number/_exp - i32.sub - f64.convert_i32_s - f64.const 0.30102999566398114 - f64.mul - f64.const 347 - f64.add - local.tee $1 - i32.trunc_f64_s - local.tee $4 - local.get $1 - local.get $4 - f64.convert_i32_s - f64.ne - i32.add + global.set $~argumentsLength + local.get $0 i32.const 3 - i32.shr_s - i32.const 1 - i32.add - local.tee $4 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs i32.const 3 - i32.shl - local.tee $10 - i32.sub - global.set $~lib/util/number/_K - local.get $10 - i32.const 7560 - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - local.get $4 - i32.const 1 - i32.shl - i32.const 8256 - i32.add - i32.load16_s - global.set $~lib/util/number/_exp_pow - global.get $~lib/util/number/_frc_pow - local.tee $6 - i64.const 4294967295 - i64.and - local.set $2 - local.get $6 - i64.const 32 - i64.shr_u - local.tee $6 - global.get $~lib/util/number/_frc_plus - local.tee $5 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $5 - i64.const 4294967295 - i64.and - local.tee $5 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $5 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - i64.const 1 - i64.sub - local.set $5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $9 - i32.const 1 - i32.shl - i32.add + i32.store offset=4 local.get $0 - local.get $6 - local.get $3 - local.get $3 - i64.clz - i32.wrap_i64 - local.tee $0 - i64.extend_i32_s - i64.shl - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $7 - i64.mul - local.get $2 - local.get $7 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $3 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $7 - i64.const 32 - i64.shr_u - i64.add - local.get $3 - local.get $6 - i64.mul - local.get $7 - i64.const 4294967295 - i64.and - i64.add - i64.const 2147483647 - i64.add - i64.const 32 - i64.shr_u - i64.add - global.get $~lib/util/number/_exp_pow - local.tee $4 - local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.sub - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $4 - global.get $~lib/util/number/_exp - i32.add - i32.const -64 - i32.sub - local.get $5 - local.get $6 - global.get $~lib/util/number/_frc_minus - local.tee $3 - i64.const 32 - i64.shr_u - local.tee $5 - i64.mul - local.get $2 - local.get $5 - i64.mul - local.get $2 - local.get $3 - i64.const 4294967295 - i64.and - local.tee $2 - i64.mul - i64.const 32 - i64.shr_u - i64.add - local.tee $3 - i64.const 32 - i64.shr_u - i64.add - local.get $2 - local.get $6 - i64.mul - local.get $3 - 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 $9 - call $~lib/util/number/genDigits - local.get $9 - i32.sub - global.get $~lib/util/number/_K - call $~lib/util/number/prettify - local.get $9 - i32.add - ) - (func $~lib/util/number/dtoa (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) + i32.store offset=4 local.get $0 - f64.const 0 - f64.eq + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 7360 - return + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 + i32.store offset=4 local.get $0 - f64.sub - f64.const 0 - f64.ne + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne if - local.get $0 - local.get $0 - f64.ne - if - i32.const 7392 - return - end - i32.const 7424 - i32.const 7472 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 7504 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/util/number/dtoa_core i32.const 1 - i32.shl - local.tee $1 + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf i32.const 1 - call $~lib/rt/pure/__new - local.tee $2 - i32.const 7504 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (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 + i32.ne if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 + i32.const 0 + i32.const 1568 + i32.const 574 i32.const 3 - return - end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.ne - if - local.get $1 - local.get $1 - f64.ne - if - local.get $0 - i32.const 78 - i32.store16 - local.get $0 - i32.const 97 - i32.store16 offset=2 - local.get $0 - i32.const 78 - i32.store16 offset=4 - i32.const 3 - 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 8 - i32.add - return - end + call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (func $~lib/util/string/joinFloatArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - i32.eqz - if - local.get $0 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - call $~lib/util/string/joinFloatArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/util/string/joinFloatArray (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) - i32.const 7280 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 i32.const 1 - i32.sub - local.tee $4 - i32.const 0 - i32.lt_s - if - local.get $3 - call $~lib/rt/pure/__release - i32.const 6928 - return - end - local.get $4 - i32.eqz + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne if - local.get $0 - f64.load - call $~lib/util/number/dtoa - local.get $3 - call $~lib/rt/pure/__release - return - end - local.get $4 - local.get $3 - i32.const 20 - i32.sub - i32.load offset=16 - i32.const 1 - i32.shr_u - local.tee $5 - i32.const 28 - i32.add - i32.mul - i32.const 28 - i32.add - local.tee $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $4 - local.get $6 - i32.gt_s - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add - local.set $2 - local.get $5 - if - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $3 - local.get $5 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $2 - local.get $5 - i32.add - local.set $2 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $7 - local.get $1 - local.get $2 - i32.const 1 - i32.shl - i32.add + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - f64.load - call $~lib/util/number/dtoa_buffered - local.get $2 - i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray local.tee $0 - i32.gt_s - if - local.get $1 - local.get $0 - call $~lib/string/String#substring - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - return - end - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 3 - i32.shr_u - call $~lib/util/string/joinFloatArray - i32.const 7280 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1056 - i32.const 1104 - i32.const 49 - i32.const 43 + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - call $~lib/rt/pure/__new - local.tee $1 - i32.const 0 + i32.store offset=4 local.get $0 - call $~lib/memory/memory.fill - local.get $1 - call $~lib/rt/pure/__retain - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 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 $3 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.tee $4 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - i32.gt_u + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - local.get $3 - i32.const -1 - i32.eq - if (result i32) - local.get $2 - local.get $1 - i32.sub - else - i32.const 1056 - i32.const 1488 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.set $3 - else - local.get $2 - local.get $1 - local.get $3 - i32.add - i32.lt_s - if - i32.const 1056 - i32.const 1488 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $3 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 - i32.add i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) local.get $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $3 - local.get $1 + i32.const 10 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 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + 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 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 i32.const 0 - i32.lt_s - if (result i32) - local.get $2 - local.get $3 - i32.add - local.tee $2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.get $2 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if i32.const 0 - i32.gt_s - select - else - local.get $2 - local.get $3 - local.get $2 - local.get $3 - i32.lt_s - select + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 0 - call $~lib/rt/pure/__new - local.tee $3 + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $1 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.get $2 - call $~lib/memory/memory.copy - local.get $3 - call $~lib/rt/pure/__retain + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 i32.load - local.tee $3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 - local.get $0 - local.get $3 + local.get $1 + local.get $2 i32.lt_s if - local.get $1 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 8624 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 local.get $0 + local.get $1 + i32.const 7024 + local.get $1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $7 - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int8Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int8Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - i32.const 8636 - i32.load - local.tee $2 - call $~lib/typedarray/Uint8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 - i32.const 1 - global.set $~argumentsLength - local.get $3 i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $4 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $2 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - local.get $4 - local.get $0 - call $~lib/typedarray/Uint8Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Int16Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.set $7 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.const -1 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 1 - i32.and + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.const 3 i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int16Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 1 - i32.and + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint16Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Int32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 3 - i32.and + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + i32.const 1 + global.set $~argumentsLength local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int32Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (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) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 3 - i32.and + local.get $0 + i32.const 11 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint32Array#__get - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (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) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - 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 - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 i32.const 1 global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 7 - i32.and + local.get $0 + i32.const -1 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Int64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Int64Array#__get - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - 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 - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 i32.const 1 global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 7 - i32.and + local.get $0 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Uint64Array#__get - i64.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - 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 - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 - i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 i32.const 3 - i32.and + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.tee $2 - local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float32Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Float32Array#__get - f32.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - i32.const 8636 - i32.load - local.tee $3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.set $1 - loop $for-loop|0 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - i32.const 8624 - local.get $0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - i32.load - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - local.get $1 - i32.load offset=8 - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - global.set $~argumentsLength - local.get $4 - call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 20 - i32.sub - i32.load offset=16 - local.tee $2 - local.set $7 - local.get $2 - i32.const 7 - i32.and + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 1056 - i32.const 1488 - i32.const 1746 - i32.const 9 + i32.const 0 + i32.const 1568 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.tee $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - i32.store - local.get $2 - local.get $7 - i32.store offset=8 - local.get $2 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 local.get $0 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - loop $for-loop|1 - local.get $0 - local.get $3 - i32.lt_s - if - local.get $1 - local.get $0 - call $~lib/typedarray/Float64Array#__get - local.get $2 - local.get $0 - call $~lib/typedarray/Float64Array#__get - f64.ne - if - i32.const 0 - i32.const 1360 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|1 - end - end - local.get $5 - call $~lib/rt/pure/__release - i32.const 8624 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.gt_s + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $1 - local.get $3 - i32.add - local.get $4 - local.get $1 - i32.const 2 - i32.shl - 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 $2 - call $~lib/rt/pure/__release + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 - local.tee $4 - local.get $1 - i32.load offset=12 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_s - local.tee $3 - local.set $5 - local.get $3 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_s - local.tee $3 - i32.ne - if - i32.const 9040 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - 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 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.gt_s + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 6 - i32.add - local.set $4 - 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 $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end - end - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.gt_s + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer 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 - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.gt_s + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 4 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $2 - local.get $4 - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 7 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.gt_s + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=4 - i32.const 7 + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#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) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9008 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 3 - i32.add + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $2 + local.get $0 i32.load offset=8 - i32.gt_s - br_if $folding-inner0 + i32.const 2 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + 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 - i32.const 3 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 i32.lt_s if + local.get $1 local.get $0 - local.get $7 - i32.add - local.get $8 - local.get $0 + local.get $2 + local.tee $3 i32.const 2 i32.shl i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $10 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store8 - local.get $0 + i32.load + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9088 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9120 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $0 + i32.load offset=8 i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $2 + local.get $4 i32.add + local.get $4 + i32.const 1 + i32.sub local.get $2 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 i32.load offset=4 - i32.const 2 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s if + local.get $1 local.get $0 - local.get $9 - i32.add - local.get $14 - local.get $0 - i32.const 3 + local.get $2 + local.tee $3 + i32.const 2 i32.shl i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store8 - local.get $0 + i32.load + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + local.get $3 i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9152 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9184 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $2 end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Int32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - local.tee $4 - local.get $1 - i32.load offset=12 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - local.set $5 - local.get $3 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - i32.ne - if - i32.const 9248 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $3 - 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 1360 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + call $~lib/typedarray/Int32Array#indexOf i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $1 i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 i32.const 0 - i32.const 63 - i32.const 9216 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 567 i32.const 3 - i32.add - local.get $2 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 568 i32.const 3 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $0 - local.get $7 - i32.add - local.get $8 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $10 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9296 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9328 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 2 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s - if - local.get $0 - local.get $9 - i32.add - local.get $14 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9360 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9392 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.load offset=8 - local.tee $4 - local.get $1 - i32.load offset=12 + i32.const -1 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 569 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $4 - i32.lt_s - if - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - local.set $5 - local.get $3 - local.get $2 - local.get $0 - i32.load offset=4 - i32.add - i32.load8_u - local.tee $3 - i32.ne - if - i32.const 9456 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $3 - 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 1360 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 3 - i32.shr_u - i32.add - i32.lt_s + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $6 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $2 - local.get $3 - i32.add - local.get $6 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.tee $5 - i32.wrap_i64 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - local.get $5 - i32.const 255 - local.get $5 - i32.wrap_i64 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - i64.or - i64.and - i64.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - i32.const 0 - i32.lt_s + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 1568 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - local.get $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - i32.add - i32.lt_s + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - local.get $1 - i32.load offset=4 - i32.add - local.set $5 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $6 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - local.set $7 - loop $for-loop|0 - local.get $3 - local.get $7 - i32.lt_s - if - local.get $3 - local.get $5 - i32.add - local.get $6 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.tee $2 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $2 - i32.const 255 - local.get $2 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + i32.const -11 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - (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 f32) - (local $15 f64) - (local $16 i32) i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $9 i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $9 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $9 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $10 + call $~lib/typedarray/Int32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $10 + call $~lib/typedarray/Int32Array#indexOf i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $10 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $16 - call $~lib/rt/pure/__retain - local.tee $3 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + local.get $0 i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $11 + i32.const 2 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + 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 $5 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $0 - local.get $6 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 i32.lt_s if + local.get $1 local.get $0 - local.get $11 - i32.add - local.get $5 - local.get $0 + local.get $2 + local.tee $3 i32.const 2 i32.shl i32.add i32.load - local.tee $7 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $7 - i32.const 255 - local.get $7 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $0 + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9424 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $11 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 3 - i32.add - local.get $1 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $0 i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 3 + i32.const 2 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $2 + local.get $4 i32.add - local.set $5 + local.get $4 + i32.const 1 + i32.sub local.get $2 - i32.load offset=4 - local.set $6 local.get $2 - i32.load offset=12 - local.set $8 - loop $for-loop|00 - local.get $0 - local.get $8 - i32.lt_s + local.get $4 + 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 + local.get $1 local.get $0 - local.get $5 - i32.add - local.get $6 - local.get $0 + local.get $2 + local.tee $3 i32.const 2 i32.shl i32.add - f32.load - local.tee $14 - local.get $14 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $14 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $0 + i32.load + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + local.get $3 i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9520 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $3 - local.get $9 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $3 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9552 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 2 - i32.add - local.get $1 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 2 - i32.add - local.set $8 - local.get $2 - i32.load offset=4 - local.set $12 - local.get $2 - i32.load offset=12 - local.set $13 - loop $for-loop|01 - local.get $0 - local.get $13 - i32.lt_s - if - local.get $0 - local.get $8 - i32.add - local.get $12 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $15 - local.get $15 - f64.sub - f64.const 0 - f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $15 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $0 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint32Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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.add - local.set $0 - br $for-loop|01 + i32.sub + br_table $0of1 $1of1 $outOfRange end + unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - local.get $0 - i32.load offset=8 - i32.gt_s - br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer 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 - local.get $1 - call $~lib/rt/pure/__release + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - local.get $10 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - i32.const 0 - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $1 i32.load offset=8 - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 7 - i32.add - local.set $8 - local.get $2 - i32.load offset=4 - local.set $12 - local.get $2 - i32.load offset=12 - local.set $13 - loop $for-loop|02 - local.get $0 - local.get $13 - i32.lt_s - if - local.get $0 - local.get $8 - i32.add - local.get $0 - local.get $12 - i32.add - i32.load8_s - local.tee $7 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $7 - i32.const 255 - local.get $7 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - local.get $3 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9616 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - return + i32.const 2 + i32.shr_u + local.set $2 end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 local.get $1 - local.get $5 + local.get $2 i32.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $4 + i32.const 7024 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store16 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set local.get $1 i32.const 1 i32.add @@ -24552,2115 +24507,1447 @@ br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 - i32.ne + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 557 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 $0 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#__uget - local.tee $5 - i32.ne - if - i32.const 9696 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - 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 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.store offset=4 + local.get $0 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.set $4 - 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 $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i32.load8_u - i32.store16 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i32.const 3 i32.const 4 - i32.add - local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer 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 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - i32.gt_s + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 14 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - (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 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 + i32.store offset=4 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + global.set $~argumentsLength + local.get $0 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + global.set $~argumentsLength + local.get $0 + i32.const 11 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i32.const -1 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 1 - i32.const 64 - i32.const 9648 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 574 i32.const 3 - i32.add - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 6 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $8 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $10 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9744 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 4 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $14 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 9888 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 i32.const 1 - i32.shl - i32.add - i32.load16_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 i32.const 1 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 576 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 $0 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#__uget - local.tee $5 - i32.ne - if - i32.const 9984 - 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 1360 - i32.const 718 - 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 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - (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 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + call $~lib/typedarray/Uint32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 9 i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 i32.const 1 - i32.const 65 - i32.const 9936 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 i32.const 3 - i32.add + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 + local.get $0 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - i32.gt_s - br_if $folding-inner0 + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + 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 - i32.const 6 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 i32.lt_s if - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $8 + local.get $1 local.get $0 - i32.const 2 + local.get $2 + local.tee $3 + i32.const 3 i32.shl i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $10 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store16 - local.get $0 + i64.load + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10032 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $0 i32.load offset=8 - i32.const 1 + i32.const 3 i32.shr_u - i32.gt_s - br_if $folding-inner0 + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 local.get $2 - i32.load offset=4 - i32.const 4 + local.get $4 i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + 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 - local.get $9 - local.get $0 - i32.const 1 - i32.shl - i32.add - local.get $14 + local.get $1 local.get $0 + local.get $2 + local.tee $3 i32.const 3 i32.shl i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store16 - local.get $0 + i64.load + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + local.get $3 i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10128 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10176 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + i32.const -1 + local.set $3 end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 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 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release + local.get $2 + call $~lib/typedarray/Int64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer 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 1360 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 + local.get $1 local.get $2 - local.get $3 i32.lt_s if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 local.get $0 - local.get $2 - call $~lib/array/Array#__uget - local.tee $4 local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 10288 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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.get $1 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i64.const 0 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 24 - i32.add - local.set $4 - 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 $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 + i64.const -1 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 2 - i32.shr_u - i32.gt_s + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i32.load8_u - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i64.const 3 i32.const 4 - i32.add + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 16 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Int64Array#indexOf i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s + i64.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 28 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i32.load8_s - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i64.const 11 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - (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 f32) - (local $12 f64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 + i32.store offset=4 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + global.set $~argumentsLength + local.get $0 + i64.const -1 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + global.set $~argumentsLength + local.get $0 + i64.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#lastIndexOf i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $13 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 2 - i32.const 16 - i32.const 10224 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 i32.const 3 - i32.add - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 12 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 2 - i32.shl - local.tee $10 - i32.add - local.get $8 - local.get $10 - i32.add - f32.load - local.tee $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - 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 - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10336 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10400 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 + i32.ne + if i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 8 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $10 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $10 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $12 - local.get $12 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $12 - 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|00 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10464 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10528 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + i32.const 1568 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $0 - local.get $2 - call $~lib/array/Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/array/Array#__uget - local.tee $5 - i32.ne - if - i32.const 10656 - 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 1360 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - (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 f32) - (local $12 f64) - (local $13 i32) - (local $14 i32) - (local $15 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 + call $~lib/typedarray/Int64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 + call $~lib/typedarray/Int64Array#indexOf i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $13 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 i32.const 2 - i32.const 66 - i32.const 10592 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 587 i32.const 3 - i32.add + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 + local.get $0 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - i32.gt_s - br_if $folding-inner0 + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + 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 - i32.const 12 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 i32.lt_s if - local.get $7 + local.get $1 local.get $0 - i32.const 2 + local.get $2 + local.tee $3 + i32.const 3 i32.shl - local.tee $10 i32.add - local.get $8 - local.get $10 - i32.add - f32.load - local.tee $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store - local.get $0 + i64.load + i64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $3 i32.const 1 i32.add - local.set $0 - br $for-loop|0 + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10704 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10768 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.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 $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $0 i32.load offset=8 - i32.const 2 + i32.const 3 i32.shr_u - i32.gt_s - br_if $folding-inner0 + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 local.get $2 - i32.load offset=4 - i32.const 8 + local.get $4 i32.add - local.set $9 - local.get $3 + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + 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 $10 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s if - local.get $9 + local.get $1 local.get $0 - i32.const 2 + local.get $2 + local.tee $3 + i32.const 3 i32.shl i32.add - local.get $10 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $12 - local.get $12 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $12 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store - local.get $0 + i64.load + i64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + local.get $3 i32.const 1 - i32.add - local.set $0 - br $for-loop|00 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10832 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 10896 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + i32.store local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $2 end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store offset=8 loop $for-loop|0 local.get $1 - local.get $5 + local.get $2 i32.lt_s if - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $4 + i32.const 7024 local.get $1 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $1 i32.const 1 i32.add @@ -26668,9274 +25955,24689 @@ br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) + i32.store offset=4 local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) + i64.const 0 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 558 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 $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - i64.ne - if - i32.const 11072 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_s - local.get $5 - f64.convert_i64_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - 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 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i64.const -1 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer 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 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 + i32.store offset=4 local.get $0 - i32.load offset=8 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf i32.const 3 - i32.shr_u - i32.gt_s + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $2 - local.get $5 - i32.add - i64.load8_u - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 1 - i32.shr_u + i64.const 3 i32.const 4 - i32.add + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 564 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 32 - i32.add - local.set $4 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $1 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|0 - local.get $2 - local.get $6 - i32.lt_s - if - local.get $4 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $2 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add + i64.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i64.const 11 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne if - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 1568 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - i32.const 56 - i32.add - local.set $3 - local.get $2 - i32.load offset=4 - local.set $4 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|0 - local.get $1 - local.get $5 - i32.lt_s - if - local.get $3 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.get $1 - local.get $4 - i32.add - i64.load8_s - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|0 - end + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + i64.const -1 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - (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 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 + i32.store offset=4 i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + global.set $~argumentsLength + local.get $0 + i64.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs i32.const 3 - i32.const 67 - i32.const 10960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 3 - i32.add - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 24 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $10 - i64.trunc_f32_s - else - i64.const 0 - end - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11120 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11232 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + i32.ne + if i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 16 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 3 - i32.shl - local.tee $16 - i32.add - local.get $14 - local.get $16 - i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_s - else - i64.const 0 - end - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11344 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + i32.const 1568 + i32.const 570 i32.const 3 - i32.const 67 - i32.const 11456 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i64) - (local $5 i64) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.store offset=4 local.get $0 - i32.load offset=8 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#lastIndexOf i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 571 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 $0 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#__uget - local.tee $5 - i64.ne - if - i32.const 11680 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - f64.convert_i64_u - local.get $5 - f64.convert_i64_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - 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 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) - (local $11 f64) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $5 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $5 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $4 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Uint64Array#lastIndexOf i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $6 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $6 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $12 - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $1 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 11568 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - block $folding-inner0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 573 i32.const 3 - i32.add - local.get $2 - i32.load offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 574 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 24 - i32.add - local.set $7 - local.get $3 - i32.load offset=4 - local.set $8 - local.get $3 - i32.load offset=12 - local.set $9 - loop $for-loop|0 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $8 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $10 - local.get $10 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $10 - i64.trunc_f32_u - else - i64.const 0 - end - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 575 i32.const 3 - i32.const 68 - i32.const 11728 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $1 - local.get $5 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $1 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 576 i32.const 3 - i32.const 68 - i32.const 11840 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 8880 - call $~lib/rt/pure/__retain - local.tee $3 - i32.load offset=12 - i32.const 2 - i32.add - local.get $2 - i32.load offset=8 + i32.const 1568 + i32.const 580 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $2 - i32.load offset=4 - i32.const 16 - i32.add - local.set $9 - local.get $3 - i32.load offset=4 - local.set $14 - local.get $3 - i32.load offset=12 - local.set $15 - loop $for-loop|00 - local.get $0 - local.get $15 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 3 - i32.shl - local.tee $16 - i32.add - local.get $14 - local.get $16 - i32.add - f64.load - local.tee $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_u - else - i64.const 0 - end - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 8880 - call $~lib/rt/pure/__release - local.get $1 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 4 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 581 i32.const 3 - i32.const 68 - i32.const 11952 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - local.get $4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $1 - local.get $6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $1 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $1 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 582 i32.const 3 - i32.const 68 - i32.const 12064 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f32) - (local $5 f32) + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.store offset=4 + local.get $0 + i64.const 10 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i64.const 5 i32.const 2 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + (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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 - local.get $3 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $2 + i32.const 0 i32.lt_s if - local.get $0 local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $4 - local.get $1 + local.get $4 + i32.add + local.tee $2 + i32.const 0 local.get $2 - call $~lib/typedarray/Float32Array#__uget - local.tee $5 - f32.ne + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s if - i32.const 12240 - i32.const 3 + local.get $1 + local.get $0 local.get $2 - f64.convert_i32_s - local.get $4 - f64.promote_f32 - local.get $5 - f64.promote_f32 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.tee $3 + i32.const 2 + i32.shl + i32.add + f32.load + f32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 end + i32.const -1 + local.set $3 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (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 $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $10 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $10 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $10 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $7 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $7 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $11 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $11 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $11 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $14 - call $~lib/rt/pure/__retain - local.tee $4 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $0 i32.load offset=8 i32.const 2 i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $12 + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 local.get $2 - i32.load offset=4 - local.set $13 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub local.get $2 - i32.load offset=12 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $8 - i32.lt_s + local.get $2 + local.get $4 + 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 - local.get $12 + local.get $1 local.get $0 + local.get $2 + local.tee $3 i32.const 2 i32.shl - local.tee $5 - i32.add - local.get $5 - local.get $13 i32.add - i32.load - f32.convert_i32_s - f32.store - local.get $0 + f32.load + f32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + local.get $3 i32.const 1 - i32.add - local.set $0 - br $for-loop|0 + i32.sub + local.set $2 + br $while-continue|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12176 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $12 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $4 - call $~lib/rt/pure/__retain - local.set $0 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=12 - i32.const 3 - i32.add - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 + i32.const -1 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $0 - i32.load offset=4 - i32.const 12 - i32.add - local.get $1 - i32.load offset=4 - local.get $1 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $1 - call $~lib/rt/pure/__release + i32.store local.get $0 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12288 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $10 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $1 i32.load offset=8 i32.const 2 i32.shr_u - i32.gt_s - br_if $folding-inner0 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (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 + 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 + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0 local.get $1 - i32.load offset=4 - i32.const 24 - i32.add - local.set $8 - local.get $2 - i32.load offset=4 - local.set $5 local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|00 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $6 - i32.lt_s - if - local.get $8 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12352 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - local.set $0 - local.get $7 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - local.set $9 - loop $for-loop|01 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - local.get $11 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 16 - i32.add - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $9 - loop $for-loop|02 - local.get $0 - local.get $9 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 28 - i32.add - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $9 - loop $for-loop|03 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 local.get $0 - local.get $9 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_s - f32.convert_i32_s - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|03 - end + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12416 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - return end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + f32.const 0 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + if + i32.const 0 + i32.const 1568 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - local.get $1 - i32.load offset=12 + i32.store offset=4 + local.get $0 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 712 + i32.const 1568 + i32.const 558 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 $0 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $4 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#__uget - local.tee $5 - f64.ne - if - i32.const 12592 - i32.const 3 - local.get $2 - f64.convert_i32_s - local.get $4 - local.get $5 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.const 1360 - i32.const 718 - 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 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $11 + i32.store offset=4 + local.get $0 + f32.const -1 i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $11 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $11 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.tee $9 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $9 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $9 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $9 + call $~lib/typedarray/Float32Array#indexOf i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $12 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $12 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $12 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 10 - call $~lib/typedarray/Float64Array#constructor - local.tee $14 - call $~lib/rt/pure/__retain - local.tee $4 - call $~lib/rt/pure/__retain - local.set $1 - block $folding-inner0 - i32.const 8704 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - local.get $1 - i32.load offset=8 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 562 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $13 - local.get $2 - i32.load offset=4 - local.set $10 - local.get $2 - i32.load offset=12 - local.set $6 - loop $for-loop|0 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $13 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $10 - local.get $0 - i32.const 2 - i32.shl - i32.add - i32.load - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8704 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 563 i32.const 3 - i32.const 62 - i32.const 12480 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $13 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $0 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8784 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 + i32.const 1568 + i32.const 564 i32.const 3 - i32.add - local.get $1 - i32.load offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 565 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 24 - i32.add - local.set $10 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=12 - local.set $5 - loop $for-loop|00 - local.get $0 - local.get $5 - i32.lt_s - if - local.get $10 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $6 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - f64.promote_f32 - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8784 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + if + i32.const 0 + i32.const 1568 + i32.const 567 i32.const 3 - i32.const 62 - i32.const 12640 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f32.const 11 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if i32.const 0 - local.set $0 - local.get $11 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 + i32.const 1568 + i32.const 568 i32.const 3 - i32.shr_u - i32.const 6 - i32.add - local.get $1 - i32.load offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f32.const -1 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 569 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 48 - i32.add - local.set $6 - local.get $2 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=8 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 570 i32.const 3 - i32.shr_u - local.set $7 - loop $for-loop|01 - local.get $0 - local.get $7 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 3 - i32.shl - local.tee $8 - i32.add - local.get $5 - local.get $8 - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 i32.const 3 - i32.const 62 - i32.const 12752 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.ne + if i32.const 0 - local.set $0 - local.get $9 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - local.get $1 - i32.load offset=8 + i32.const 1568 + i32.const 572 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - local.set $8 - loop $for-loop|02 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.add - i32.load8_u - f64.convert_i32_u - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.ne + if i32.const 0 - local.set $0 - local.get $12 - call $~lib/rt/pure/__retain - local.set $3 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - local.get $3 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 4 - i32.add - local.get $1 - i32.load offset=8 + i32.const 1568 + i32.const 573 i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 32 - i32.add - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|03 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|03 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 0 - local.set $0 - local.get $4 - call $~lib/rt/pure/__retain - local.set $1 - i32.const 8960 - call $~lib/rt/pure/__retain - local.tee $2 - i32.load offset=12 - i32.const 7 - i32.add - local.get $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.gt_s - br_if $folding-inner0 - local.get $1 - i32.load offset=4 - i32.const 56 - i32.add - local.set $5 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=12 - local.set $8 - loop $for-loop|04 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $5 - local.get $0 - i32.const 3 - i32.shl - i32.add - local.get $0 - local.get $7 - i32.add - i32.load8_s - f64.convert_i32_s - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|04 - end - end - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 8960 - call $~lib/rt/pure/__release - local.get $4 - i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12864 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $0 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - return + call $~lib/builtins/abort + unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - ) - (func $start:std/typedarray - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 f32) - (local $13 f64) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 f32) - (local $18 f64) - (local $19 i64) - (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) - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set + i32.store offset=4 local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 + f32.const 1 + i32.const 100 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 95 + i32.const 1568 + i32.const 574 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.store offset=4 local.get $0 - i32.load - i32.sub + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 96 + i32.const 1568 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 12 + i32.store offset=4 + local.get $0 + f32.const 1 + i32.const -11 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 97 + i32.const 1568 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + f32.const 3 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 98 + i32.const 1568 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne + i32.store offset=4 + local.get $0 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf if i32.const 0 - i32.const 1360 - i32.const 99 + i32.const 1568 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 100 + i32.const 1568 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.set $1 + i32.store offset=4 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 + f32.const 9 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 103 + i32.const 1568 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 10 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 104 + i32.const 1568 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 105 + i32.const 1568 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 106 + i32.const 1568 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/rt/pure/__release - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 4 + i32.store offset=4 + local.get $0 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 122 + i32.const 1568 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + (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 local.get $0 - i32.load offset=4 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.sub - i32.const 16 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 123 + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - i32.const 32 - i32.ne - if + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 i32.const 0 - i32.const 1360 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $0 + local.get $2 + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + f64.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 end - i32.const 0 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (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 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1552 - call $~lib/typedarray/Float64Array#sort - i32.const 1552 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - if (result i32) + i32.store offset=4 + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $2 + local.get $4 + i32.add + local.get $4 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - else + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 i32.const 0 - end - if (result i32) + i32.lt_s + select + local.set $2 local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else - i32.const 0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $0 + local.get $2 + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + f64.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 end - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 local.get $0 + i32.store + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shr_u + local.set $2 end local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 -32 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=4 + i32.const 7036 + i32.load + local.tee $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store offset=8 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7024 + i32.store offset=12 + local.get $0 + local.get $1 + i32.const 7024 + local.get $1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.store offset=4 local.get $0 + f64.const 0 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1360 - i32.const 135 + i32.const 1568 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 + i32.store offset=4 + local.get $0 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 136 + i32.const 1568 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 + i32.store offset=4 + local.get $0 + f64.const -1 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 137 + i32.const 1568 + i32.const 559 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 + f64.const 3 i32.const 0 - i32.const 15 - i32.const 1584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 149 + i32.const 1568 + i32.const 560 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1664 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 152 + i32.const 1568 + i32.const 561 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1696 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 155 + i32.const 1568 + i32.const 562 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1728 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 158 + i32.const 1568 + i32.const 563 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1760 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 161 + i32.const 1568 + i32.const 564 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 local.get $0 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 3 i32.ne if i32.const 0 - i32.const 1360 - i32.const 165 + i32.const 1568 + i32.const 565 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 i32.const 1 - i32.ne + global.set $~argumentsLength + local.get $0 + f64.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs if i32.const 0 - i32.const 1360 - i32.const 166 + i32.const 1568 + i32.const 567 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f64.const 11 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 167 + i32.const 1568 + i32.const 568 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 1792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f64.const -1 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 168 + i32.const 1568 + i32.const 569 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 1824 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt8ArrayEqual - i32.eqz + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + local.get $0 + f64.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 169 + i32.const 1568 + i32.const 570 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set + i32.store offset=4 local.get $0 - i32.const 3 + f64.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set + i32.store offset=4 local.get $0 - i32.const 1 - i32.const 1 + f64.const 3 i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1856 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $2 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 181 + i32.const 1568 + i32.const 572 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 + f64.const 3 i32.const 2 - i32.const 16 - i32.const 1904 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 184 + i32.const 1568 + i32.const 573 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1952 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + f64.const 1 + i32.const 100 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 187 + i32.const 1568 + i32.const 574 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2000 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 190 + i32.const 1568 + i32.const 575 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 1 - i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release + i32.store offset=4 local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2048 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 193 + i32.const 1568 + i32.const 576 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $1 - i32.const 0 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 3 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 197 + i32.const 1568 + i32.const 580 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub - i32.const 4 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf if i32.const 0 - i32.const 1360 - i32.const 198 + i32.const 1568 + i32.const 581 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 199 + i32.const 1568 + i32.const 582 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 2096 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 9 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne if i32.const 0 - i32.const 1360 - i32.const 200 + i32.const 1568 + i32.const 583 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2128 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set + i32.store offset=4 local.get $0 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.tee $1 + f64.const 10 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 222 + i32.const 1568 + i32.const 584 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 223 + i32.const 1568 + i32.const 585 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=4 - local.get $1 - i32.load - i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 1 + call $~lib/typedarray/Float64Array#indexOf i32.const 1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 224 + i32.const 1568 + i32.const 586 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.ne if i32.const 0 - i32.const 1360 - i32.const 225 + i32.const 1568 + i32.const 587 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#substring (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + i32.const 0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray + i32.shr_u local.tee $2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 228 - i32.const 3 - call $~lib/builtins/abort - unreachable - end local.get $2 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 229 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.gt_s + select + local.tee $3 + local.get $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + local.tee $1 local.get $2 - i32.load offset=4 + local.get $1 local.get $2 - i32.load + i32.lt_s + select + local.tee $1 + local.get $1 + local.get $3 + i32.lt_s + select + i32.const 1 + i32.shl + local.tee $4 + local.get $3 + local.get $1 + local.get $1 + local.get $3 + i32.gt_s + select + i32.const 1 + i32.shl + local.tee $1 i32.sub - i32.const 2 - i32.ne + local.tee $3 + i32.eqz if - i32.const 0 - i32.const 1360 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return end + i32.const 0 + local.get $4 local.get $2 - i32.load offset=8 - i32.const 4 - i32.ne + i32.const 1 + i32.shl + i32.eq + local.get $1 + select if - i32.const 0 - i32.const 1360 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 + ) + (func $~lib/util/string/joinIntegerArray (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 $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray + i32.sub local.tee $3 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 234 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 235 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=4 - local.get $3 - i32.load - i32.sub - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load8_s + call $~lib/util/number/itoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_s + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer 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 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set + ) + (func $~lib/typedarray/Int8Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set + i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $2 + i32.store offset=4 local.get $0 - i32.const 0 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $3 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2176 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 248 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.const 3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $5 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2224 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 250 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $6 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.eq if - i32.const 0 - i32.const 1360 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 2 - i32.const 2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2320 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + local.get $1 + i32.eqz + i32.const 1 + local.get $0 + select + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + block $__inlined_func$~lib/util/string/compareImpl (result i32) + local.get $0 + local.tee $3 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + i32.eqz + i32.const 0 + local.get $2 + i32.const 4 + i32.ge_u + select + if + loop $do-continue|0 + local.get $3 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $3 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 4 + i32.sub + local.tee $2 + i32.const 4 + i32.ge_u + br_if $do-continue|0 + end + end + end + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if + local.get $3 + i32.load16_u + local.tee $4 + local.get $1 + i32.load16_u + local.tee $0 + i32.ne + if + local.get $4 + local.get $0 + i32.sub + br $__inlined_func$~lib/util/string/compareImpl + end + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + return end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 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.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $11 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2368 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__release - local.tee $1 i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $15 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2416 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $16 - call $std/typedarray/isInt32ArrayEqual + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1360 - i32.const 258 - i32.const 3 + i32.const 1568 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 1 - i32.const 2 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $20 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2464 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $21 - call $std/typedarray/isInt32ArrayEqual + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1360 - i32.const 260 - i32.const 3 + i32.const 1568 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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 $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const 0 - i32.const -2 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $22 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2512 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return end - local.get $2 + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load8_u + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.add + i32.load8_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $0 + call $~lib/typedarray/Uint8Array#join + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 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.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 local.tee $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $24 - i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 i32.const 2 - i32.const 16 - i32.const 2560 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $25 - call $std/typedarray/isInt32ArrayEqual + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1360 - i32.const 264 - i32.const 3 + i32.const 1568 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $26 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2608 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $27 - call $std/typedarray/isInt32ArrayEqual + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 1360 - i32.const 266 - i32.const 3 + i32.const 1568 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 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.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.get $1 - call $~lib/rt/pure/__release - local.tee $1 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $28 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2656 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $29 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.set $0 - local.get $1 - call $~lib/rt/pure/__release + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const -4 - i32.const -3 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#copyWithin local.tee $1 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 2704 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $30 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 + i32.store offset=4 + local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 3 i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 4 i32.const 5 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.tee $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=4 - local.get $2 - i32.load - i32.sub - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.load offset=8 - i32.const 12 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 284 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 local.get $0 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.tee $1 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.ne + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1360 - i32.const 287 - i32.const 3 + i32.const 1568 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=12 local.get $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 local.get $1 - i32.load - i32.sub + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 - i32.const 1360 - i32.const 290 - i32.const 3 + i32.const 1568 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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.ne - if - i32.const 0 - i32.const 1360 - i32.const 291 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice + i32.sub local.tee $3 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.ne + i32.lt_s if - i32.const 0 - i32.const 1360 - i32.const 295 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return end - local.get $3 - i32.load offset=4 - local.get $3 - i32.load - i32.sub - if - i32.const 0 - i32.const 1360 - i32.const 296 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.load offset=8 - i32.const 4 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 297 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $0 - i32.const 0 - i32.const 2147483647 - call $~lib/typedarray/Int32Array#slice - local.tee $4 - i32.eq - if - i32.const 0 - i32.const 1360 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load16_s + call $~lib/util/number/itoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=4 - local.get $4 - i32.load + ) + (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 i32.load offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load - i32.sub - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $4 - i32.load offset=8 + i32.store offset=4 local.get $0 i32.load offset=8 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain local.tee $1 + i32.store offset=4 + local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 1 i32.const 2 - call $~lib/typedarray/Int8Array#__set + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 i32.const 2 i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int16Array#join local.set $0 - i32.const 0 - local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2752 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - local.set $8 - loop $for-loop|0 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $0 - local.get $6 - i32.add - i32.load8_s - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $9 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if local.get $0 - local.get $2 + i32.load16_u + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 local.get $0 - i32.const 1 - i32.add + call $~lib/string/String#substring local.set $0 - br $for-loop|0 + br $folding-inner0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2752 - call $~lib/rt/pure/__release - block $folding-inner18 - block $folding-inner17 - block $folding-inner16 - block $folding-inner15 - block $folding-inner14 - block $folding-inner11 - block $folding-inner10 - block $folding-inner9 - block $folding-inner8 - block $folding-inner7 - block $folding-inner6 - block $folding-inner5 - block $folding-inner4 - block $folding-inner3 - block $folding-inner2 - block $folding-inner1 - block $folding-inner0 - local.get $3 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2784 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2816 - call $~lib/typedarray/Uint8Array#reduce - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2848 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|00 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $9 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|00 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2848 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 2880 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $8 - loop $for-loop|01 - local.get $0 - local.get $8 - i32.lt_s - if - local.get $6 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $9 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $9 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|01 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 2880 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2912 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2944 - call $~lib/typedarray/Int32Array#reduce - i32.const 6 - i32.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2976 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3008 - call $~lib/typedarray/Int64Array#reduce - i64.const 6 - i64.ne - br_if $folding-inner0 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3040 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - loop $for-loop|02 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $17 - i32.const 4 - global.set $~argumentsLength - local.get $12 - local.get $17 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $12 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|02 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3040 - call $~lib/rt/pure/__release - local.get $12 - f32.const 6 - f32.ne - br_if $folding-inner0 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3072 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|03 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $18 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $18 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $13 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|03 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3072 - call $~lib/rt/pure/__release - local.get $13 - f64.const 6 - f64.ne - br_if $folding-inner0 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3104 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|04 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $0 - local.get $6 - i32.add - i32.load8_s - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|04 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3104 - call $~lib/rt/pure/__release - local.get $3 - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3136 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3168 - call $~lib/typedarray/Uint8Array#reduceRight - i32.const 255 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3200 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|05 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|05 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3200 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3232 - call $~lib/rt/pure/__retain - local.set $5 - local.get $2 - i32.load offset=4 - local.set $6 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|06 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $6 - local.get $0 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $8 - i32.const 4 - global.set $~argumentsLength - local.get $3 - local.get $8 - local.get $0 - local.get $2 - local.get $5 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|06 - end - end - local.get $5 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3232 - call $~lib/rt/pure/__release - local.get $3 - i32.const 65535 - i32.and - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $7 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3264 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3296 - call $~lib/typedarray/Int32Array#reduceRight - i32.const 6 - i32.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3328 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3360 - call $~lib/typedarray/Int64Array#reduceRight - i64.const 6 - i64.ne - br_if $folding-inner1 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - f32.const 0 - local.set $12 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3392 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|07 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $7 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $17 - i32.const 4 - global.set $~argumentsLength - local.get $12 - local.get $17 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $12 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|07 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3392 - call $~lib/rt/pure/__release - local.get $12 - f32.const 6 - f32.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - f64.const 0 - local.set $13 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3424 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.const 1 - i32.sub - local.set $0 - loop $for-loop|08 - local.get $0 - i32.const 0 - i32.ge_s - if - local.get $7 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $18 - i32.const 4 - global.set $~argumentsLength - local.get $13 - local.get $18 - local.get $0 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $13 - local.get $0 - i32.const 1 - i32.sub - local.set $0 - br $for-loop|08 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3424 - call $~lib/rt/pure/__release - local.get $13 - f64.const 6 - f64.ne - br_if $folding-inner1 - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3456 - call $~lib/rt/pure/__retain - local.set $6 - local.get $2 - i32.load offset=8 - local.set $4 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.set $3 - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new - local.set $5 - loop $for-loop|09 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $9 - i32.add - i32.load8_s - local.set $10 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $5 - i32.add - local.get $10 - local.get $0 - local.get $2 - local.get $6 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|09 - end - end - local.get $3 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3456 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3488 - call $~lib/rt/pure/__retain - local.set $6 - local.get $2 - i32.load offset=8 - local.set $4 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.set $3 - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new - local.set $5 - loop $for-loop|010 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $9 - i32.add - i32.load8_u - local.set $10 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $5 - i32.add - local.get $10 - local.get $0 - local.get $2 - local.get $6 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|010 - end - end - local.get $3 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3488 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3520 - call $~lib/rt/pure/__retain - local.set $6 - local.get $2 - i32.load offset=8 - local.set $4 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.set $3 - local.get $4 - i32.const 0 - call $~lib/rt/pure/__new - local.set $5 - loop $for-loop|011 - local.get $0 - local.get $4 - i32.lt_s - if - local.get $0 - local.get $9 - i32.add - i32.load8_u - local.set $10 - i32.const 3 - global.set $~argumentsLength - local.get $0 - local.get $5 - i32.add - local.get $10 - local.get $0 - local.get $2 - local.get $6 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|011 - end - end - local.get $3 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $5 - i32.store offset=4 - local.get $3 - local.get $4 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $6 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3520 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3552 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 1 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|012 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.tee $11 - i32.add - i32.load16_s - local.set $14 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $14 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|012 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3552 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3584 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 1 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|013 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 1 - i32.shl - local.tee $11 - i32.add - i32.load16_u - local.set $14 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $14 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|013 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3584 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3616 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 2 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|014 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 2 - i32.shl - local.tee $11 - i32.add - i32.load - local.set $14 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $14 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|014 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3616 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3648 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 2 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|015 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 2 - i32.shl - local.tee $11 - i32.add - i32.load - local.set $14 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $14 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|015 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3648 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3680 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 3 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|016 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 3 - i32.shl - local.tee $11 - i32.add - i64.load - local.set $19 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $19 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|016 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3680 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3712 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 3 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|017 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 3 - i32.shl - local.tee $11 - i32.add - i64.load - local.set $19 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $19 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|017 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3712 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3744 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 2 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|018 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 2 - i32.shl - local.tee $11 - i32.add - f32.load - local.set $12 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $12 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $f32_i32_i32_=>_f32) - f32.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|018 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3744 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $8 - call $~lib/rt/pure/__retain - local.tee $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 3776 - call $~lib/rt/pure/__retain - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - local.get $2 - i32.load offset=4 - local.set $9 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $3 - local.get $6 - i32.const 3 - i32.shl - local.tee $10 - i32.const 0 - call $~lib/rt/pure/__new - local.set $4 - loop $for-loop|019 - local.get $0 - local.get $6 - i32.lt_s - if - local.get $9 - local.get $0 - i32.const 3 - i32.shl - local.tee $11 - i32.add - f64.load - local.set $13 - i32.const 3 - global.set $~argumentsLength - local.get $4 - local.get $11 - i32.add - local.get $13 - local.get $0 - local.get $2 - local.get $7 - i32.load - call_indirect (type $f64_i32_i32_=>_f64) - f64.store - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|019 - end - end - local.get $3 - local.get $4 - call $~lib/rt/pure/__retain - i32.store - local.get $3 - local.get $4 - i32.store offset=4 - local.get $3 - local.get $10 - i32.store offset=8 - local.get $3 - call $~lib/rt/pure/__retain - local.set $0 - local.get $7 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 3776 - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.ne - br_if $folding-inner2 - local.get $0 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.ne - br_if $folding-inner3 - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.ne - br_if $folding-inner4 - local.get $8 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4160 - call $~lib/typedarray/Int8Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4192 - call $~lib/typedarray/Int8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4224 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4256 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4288 - call $~lib/typedarray/Uint8Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4320 - call $~lib/typedarray/Uint8Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4352 - call $~lib/typedarray/Int16Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4384 - call $~lib/typedarray/Int16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4416 - call $~lib/typedarray/Uint16Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4448 - call $~lib/typedarray/Uint16Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4480 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4512 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4544 - call $~lib/typedarray/Int32Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4576 - call $~lib/typedarray/Int32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4608 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4640 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4672 - call $~lib/typedarray/Int64Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4704 - call $~lib/typedarray/Int64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4736 - call $~lib/typedarray/Float32Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4768 - call $~lib/typedarray/Float32Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4800 - call $~lib/typedarray/Float64Array#some - i32.eqz - br_if $folding-inner5 - local.get $0 - i32.const 4832 - call $~lib/typedarray/Float64Array#some - br_if $folding-inner6 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4864 - call $~lib/typedarray/Int8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 4896 - call $~lib/typedarray/Int8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4928 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 4960 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4992 - call $~lib/typedarray/Uint8Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5024 - call $~lib/typedarray/Uint8Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5056 - call $~lib/typedarray/Int16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5088 - call $~lib/typedarray/Int16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5120 - call $~lib/typedarray/Uint16Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5152 - call $~lib/typedarray/Uint16Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5184 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5216 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5248 - call $~lib/typedarray/Int32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5280 - call $~lib/typedarray/Int32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 5312 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5344 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 5376 - call $~lib/typedarray/Int64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5408 - call $~lib/typedarray/Int64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 5440 - call $~lib/typedarray/Float32Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5472 - call $~lib/typedarray/Float32Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5504 - call $~lib/typedarray/Float64Array#findIndex - i32.const 1 - i32.ne - br_if $folding-inner7 - local.get $0 - i32.const 5536 - call $~lib/typedarray/Float64Array#findIndex - i32.const -1 - i32.ne - br_if $folding-inner8 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 5568 - call $~lib/typedarray/Int8Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5600 - call $~lib/typedarray/Int8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 5632 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5664 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 5696 - call $~lib/typedarray/Uint8Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5728 - call $~lib/typedarray/Uint8Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 5760 - call $~lib/typedarray/Int16Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5792 - call $~lib/typedarray/Int16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 5824 - call $~lib/typedarray/Uint16Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5856 - call $~lib/typedarray/Uint16Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 5888 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5920 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 5952 - call $~lib/typedarray/Int32Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 5984 - call $~lib/typedarray/Int32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 6016 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 6048 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6080 - call $~lib/typedarray/Int64Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 6112 - call $~lib/typedarray/Int64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 6144 - call $~lib/typedarray/Float32Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 6176 - call $~lib/typedarray/Float32Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6208 - call $~lib/typedarray/Float64Array#every - i32.eqz - br_if $folding-inner9 - local.get $0 - i32.const 6240 - call $~lib/typedarray/Float64Array#every - br_if $folding-inner10 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6352 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - local.set $6 - loop $for-loop|020 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $1 - local.get $7 - i32.add - i32.load8_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|020 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6352 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 6384 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 6416 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6448 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|021 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|021 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6448 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6480 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 1 - i32.shr_u - local.set $6 - loop $for-loop|022 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|022 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6480 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 6512 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 6544 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 6576 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 6608 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6640 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $6 - loop $for-loop|023 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f32_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|023 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6640 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $5 - call $~lib/rt/pure/__retain - local.tee $0 - global.set $std/typedarray/forEachSelf - local.get $0 - i32.const 0 - i32.const 6304 - i32.const 0 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - i32.const 6304 - i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6304 - i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - i32.const 0 - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $2 - i32.const 6672 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - i32.load offset=4 - local.set $7 - local.get $2 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.set $6 - loop $for-loop|024 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $7 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 3 - global.set $~argumentsLength - local.get $1 - local.get $2 - local.get $4 - i32.load - call_indirect (type $f64_i32_i32_=>_none) - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|024 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - i32.const 6672 - call $~lib/rt/pure/__release - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.ne - br_if $folding-inner11 - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $2 - f64.const nan:0x8000000000000 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $2 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 3 - i32.shr_u - local.tee $3 - i32.eqz - i32.const 1 - local.get $3 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $1 - i32.load offset=4 - local.set $4 - loop $while-continue|0 - local.get $0 - local.get $3 - i32.lt_s - if - i32.const 1 - local.get $4 - local.get $0 - i32.const 3 - i32.shl - i32.add - f64.load - local.tee $13 - local.get $13 - f64.ne - local.get $13 - f64.const nan:0x8000000000000 - f64.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|0 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 608 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $3 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.ne - if - i32.const 0 - i32.const 1360 - i32.const 613 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.set $0 - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $3 - call $~lib/rt/pure/__retain - local.tee $1 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.tee $4 - i32.eqz - i32.const 1 - local.get $4 - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $1 - i32.load offset=4 - local.set $5 - loop $while-continue|025 - local.get $0 - local.get $4 - i32.lt_s - if - i32.const 1 - local.get $5 - local.get $0 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $12 - local.get $12 - f32.ne - local.get $12 - f32.const nan:0x400000 - f32.eq - select - if - local.get $1 - call $~lib/rt/pure/__release - i32.const 1 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $while-continue|025 - end - end - local.get $1 - call $~lib/rt/pure/__release - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 1360 - i32.const 614 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Int8Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Uint8Array#join - local.tee $3 - local.get $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Int16Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Uint16Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Int32Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Uint32Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Int64Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Uint64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $2 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner16 - local.get $0 - call $~lib/typedarray/Uint64Array#join - local.tee $3 - i32.const 7312 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner17 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $0 - i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $2 - i32.const 8496 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner14 - local.get $0 - call $~lib/typedarray/Float32Array#join - local.tee $3 - i32.const 8496 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner15 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 5 - call $~lib/typedarray/Float64Array#constructor - local.tee $1 - call $~lib/rt/pure/__retain - local.tee $0 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $2 - i32.const 8496 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner14 - local.get $0 - call $~lib/typedarray/Float64Array#join - local.tee $3 - i32.const 8496 - call $~lib/string/String.__eq - i32.eqz - br_if $folding-inner15 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $0 - i32.const 2 - global.set $~argumentsLength - local.get $0 - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.tee $2 - i32.load offset=8 - if - i32.const 0 - i32.const 1360 - i32.const 691 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $1 - local.get $0 - call $~lib/rt/pure/__release - i32.const 2 - global.set $~argumentsLength - local.get $1 - i32.const 2 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $0 - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - i32.load offset=8 - if - i32.const 0 - i32.const 1360 - i32.const 695 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $5 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $5 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $5 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.tee $1 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.tee $7 - i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $7 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - local.set $2 - local.get $5 - call $~lib/rt/pure/__retain - local.set $6 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $6 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 1 - i32.add - local.get $3 - i32.load offset=8 - i32.gt_s - br_if $folding-inner18 - local.get $3 - i32.load offset=4 - i32.const 1 - i32.add - local.set $9 - local.get $4 - i32.load offset=4 - local.set $10 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $11 - loop $for-loop|026 - local.get $2 - local.get $11 - i32.lt_s - if - local.get $2 - local.get $9 - i32.add - local.get $10 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.tee $12 - local.get $12 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $12 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|026 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - local.get $1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - i32.const 0 - local.set $2 - local.get $7 - call $~lib/rt/pure/__retain - local.set $6 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $6 - call $~lib/rt/pure/__retain - local.tee $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.const 8 - i32.add - local.get $3 - i32.load offset=8 - i32.gt_s - br_if $folding-inner18 - local.get $3 - i32.load offset=4 - i32.const 8 - i32.add - local.set $9 - local.get $4 - i32.load offset=4 - local.set $10 - local.get $4 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $11 - loop $for-loop|027 - local.get $2 - local.get $11 - i32.lt_s - if - local.get $2 - local.get $9 - i32.add - local.get $10 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $8 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - local.get $8 - i32.const 255 - local.get $8 - i32.sub - i32.const 31 - i32.shr_s - i32.or - i32.and - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|027 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 12976 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $2 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $3 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - local.set $4 - local.get $2 - call $~lib/rt/pure/__retain - local.set $9 - local.get $0 - call $~lib/rt/pure/__retain - local.set $6 - local.get $9 - call $~lib/rt/pure/__retain - local.tee $8 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.get $6 - i32.load offset=8 - i32.gt_s - br_if $folding-inner18 - local.get $6 - i32.load offset=4 - local.set $11 - local.get $8 - i32.load offset=4 - local.set $14 - local.get $8 - i32.load offset=8 - i32.const 2 - i32.shr_u - local.set $15 - loop $for-loop|028 - local.get $4 - local.get $15 - i32.lt_s - if - local.get $4 - local.get $11 - i32.add - i32.const 255 - local.get $14 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load - local.tee $16 - local.get $16 - i32.const 255 - i32.gt_u - select - i32.store8 - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|028 - end - end - local.get $8 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $0 - local.get $3 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $0 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 13008 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $0 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - return - end - i32.const 0 - i32.const 1360 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1360 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint16Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint16Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint16Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load + call $~lib/util/number/itoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 11 + i32.add + i32.mul + i32.const 11 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int32Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i32.load + call $~lib/util/number/utoa32 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 10 + i32.add + i32.mul + i32.const 10 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint32Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint32Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + i64.load + i32.wrap_i64 + i64.extend_i32_s + call $~lib/util/number/itoa64 + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $4 + i32.const 21 + i32.add + i32.mul + i32.const 21 + i32.add + local.tee $6 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Int64Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i64) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $1 + i32.const 1 + i32.sub + local.tee $4 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $4 + i32.eqz + if + local.get $0 + i64.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + block $__inlined_func$~lib/util/number/utoa64 + local.get $3 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7296 + local.set $0 + br $__inlined_func$~lib/util/number/utoa64 + end + local.get $3 + i64.const 4294967295 + i64.le_u + if + local.get $3 + i32.wrap_i64 + local.tee $2 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $2 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else + local.get $3 + call $~lib/util/number/decimalCount64High + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + local.get $0 + local.get $3 + local.get $1 + call $~lib/util/number/utoa_dec_simple + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 7420 + i32.load + i32.const 1 + i32.shr_u + local.tee $5 + i32.const 20 + i32.add + i32.mul + i32.const 20 + i32.add + local.tee $7 + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + loop $for-loop|0 + local.get $4 + local.get $6 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $5 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $5 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $5 + i32.add + local.set $2 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|0 + end + end + local.get $7 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + i64.load + call $~lib/util/number/itoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinIntegerArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $0 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint64Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=8 + local.get $1 + i32.const 7456 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + 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 offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float32Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Float32Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8640 + i32.store offset=8 + local.get $0 + i32.const 8640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8640 + i32.store offset=8 + local.get $1 + i32.const 8640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinFloatArray (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 $1 + i32.const 1 + i32.sub + local.tee $3 + i32.const 0 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7072 + return + end + block $folding-inner0 + local.get $3 + i32.eqz + if + local.get $0 + f64.load + call $~lib/util/number/dtoa + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 7420 + 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 offset=4 + loop $for-loop|0 + local.get $3 + local.get $5 + i32.gt_s + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.set $2 + local.get $4 + if + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.const 7424 + local.get $4 + i32.const 1 + i32.shl + call $~lib/memory/memory.copy + local.get $2 + local.get $4 + i32.add + local.set $2 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $6 + local.get $1 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + call $~lib/util/number/dtoa_buffered + local.get $2 + i32.add + local.tee $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + call $~lib/string/String#substring + local.set $0 + br $folding-inner0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store + call $~lib/util/string/joinFloatArray + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 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 + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Float64Array#join + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8640 + i32.store offset=8 + local.get $0 + i32.const 8640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 626 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float64Array#join + 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 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8640 + i32.store offset=8 + local.get $1 + i32.const 8640 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 627 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $0 + local.get $1 + i32.lt_u + if + i32.const 1360 + i32.const 1632 + i32.const 1745 + 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 $0 + local.get $1 + i32.sub + else + i32.const 1056 + i32.const 1632 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.set $0 + else + local.get $0 + local.get $2 + local.tee $0 + local.get $1 + i32.add + i32.lt_s + if + i32.const 1056 + i32.const 1632 + i32.const 1759 + 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 $2 + i32.store offset=8 + local.get $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + call $~lib/rt/itcms/__link + local.get $2 + local.get $0 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $3 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $3 + local.get $1 + i32.const 0 + i32.lt_s + if (result i32) + local.get $1 + local.get $3 + i32.add + local.tee $1 + i32.const 0 + local.get $1 + i32.const 0 + i32.gt_s + select + else + local.get $1 + local.get $3 + local.get $1 + local.get $3 + i32.lt_s + select + end + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 0 + i32.lt_s + if (result i32) + local.get $2 + local.get $3 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + else + local.get $2 + local.get $3 + local.get $2 + local.get $3 + i32.lt_s + select + end + local.get $1 + i32.sub + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.tee $3 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=4 + local.get $2 + local.get $0 + local.get $1 + i32.add + local.get $3 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int8Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Int8Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $2 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint8Array#__get + local.get $4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Int16Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int16Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Int16Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Uint16Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 1 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint16Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Int32Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $4 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint32Array#__get + local.get $3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 i64) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Int64Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Int64Array#__get + local.get $6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i64) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Uint64Array#__get + local.get $6 + i64.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f32) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 3 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Float32Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Float32Array#__get + local.get $6 + f32.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 f64) + 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 + i32.const 8768 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8780 + i32.load + local.tee $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=8 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8768 + i32.store offset=12 + local.get $1 + local.get $0 + i32.const 8768 + local.get $0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $0 + local.get $1 + i32.load offset=8 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 1 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + local.tee $2 + local.set $5 + local.get $2 + i32.const 7 + i32.and + if + i32.const 1056 + i32.const 1632 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store + local.get $2 + local.get $0 + call $~lib/rt/itcms/__link + local.get $2 + local.get $5 + i32.store offset=8 + local.get $2 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/typedarray/Float64Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + call $~lib/typedarray/Float64Array#__get + local.get $6 + f64.ne + if + i32.const 0 + i32.const 1568 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 8852 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_s + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_s + local.tee $5 + local.set $6 + local.get $4 + local.get $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 9184 + i32.store + i32.const 9184 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $6 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 3 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $2 + i32.const 8932 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 6 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 2 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $1 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + i32.const 9108 + i32.load + i32.const 9112 + i32.load + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9152 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9232 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9264 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9296 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9328 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_u + local.tee $5 + local.set $6 + local.get $4 + local.get $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 9392 + i32.store + i32.const 9392 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 3 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $2 + i32.const 8932 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 2 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9360 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9440 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9472 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9504 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9536 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $2 + i32.const 8852 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $0 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + i32.load8_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 + local.get $1 + i32.load offset=4 + i32.add + i32.load8_u + local.tee $5 + local.set $6 + local.get $4 + local.get $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 9600 + i32.store + i32.const 9600 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 3 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 3 + i32.add + local.set $2 + i32.const 8932 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $3 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + local.get $5 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $0 + i32.load offset=4 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $3 + i32.gt_s + if + local.get $0 + local.get $3 + i32.add + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + i64.load + local.tee $4 + i32.wrap_i64 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + local.get $4 + i32.const 255 + local.get $4 + i32.wrap_i64 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + i64.or + i64.and + i64.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 2 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 2 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + f64.const 0 + f64.const 255 + local.get $3 + f64.min + f64.max + i32.trunc_f64_u + else + i32.const 0 + end + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + local.get $4 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + 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 $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 + if + local.get $2 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $0 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $2 + i32.const 7 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 7 + i32.add + local.set $2 + i32.const 9108 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $2 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_s + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $0 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9568 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9664 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9696 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9728 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9760 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 8852 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + 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.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Int16Array#__uget + local.tee $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 9840 + i32.store + i32.const 9840 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $2 + i32.const 8932 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 6 + 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 1780 + i32.const 47 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 1 + i32.shl + 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 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + 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 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 14 + i32.add + local.set $0 + i32.const 9108 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 9792 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 9888 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 9936 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 9984 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10032 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint16Array#__uget + local.tee $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 10128 + i32.store + i32.const 10128 + 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 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 6 + i32.add + local.set $2 + i32.const 8932 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 4 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10080 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10176 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10224 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10272 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10320 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 8852 + i32.load + i32.const 8856 + i32.load + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/array/Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/array/Array#__uget + local.tee $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 10432 + i32.store + i32.const 10432 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $1 + i32.const 8932 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + local.tee $0 + i32.add + local.get $0 + local.get $4 + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + 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 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $0 + i32.const 9108 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_s + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10368 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10480 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10544 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10608 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10672 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint32Array#__uget + local.tee $5 + i32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 10800 + i32.store + i32.const 10800 + 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 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + local.set $1 + i32.const 8932 + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $5 + loop $for-loop|0 + local.get $2 + local.get $5 + i32.lt_s + if + local.get $1 + local.get $2 + i32.const 2 + i32.shl + local.tee $0 + i32.add + local.get $0 + local.get $4 + i32.add + f32.load + local.tee $3 + local.get $3 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $3 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $2 + i32.const 9028 + i32.load + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $3 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 10736 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 10848 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 10912 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 10976 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11040 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 8852 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Int64Array#__uget + local.tee $5 + i64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 11216 + i32.store + i32.const 11216 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i64_s + local.get $5 + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $0 + i32.const 8932 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $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 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + 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 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $0 + i32.const 9028 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $3 + i64.trunc_f64_s + else + i64.const 0 + end + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $3 + i32.add + i64.load8_u + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $0 + i32.const 9108 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i64.load8_s + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11104 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11264 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11376 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11488 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11600 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i64) + (local $5 i64) + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Uint64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#__uget + local.tee $5 + i64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 11824 + i32.store + i32.const 11824 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.convert_i64_u + local.get $5 + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $0 + i32.const 8932 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $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 + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 f64) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 2 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 16 + i32.add + local.set $0 + i32.const 9028 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=8 + i32.const 9036 + i32.load + local.set $4 + loop $for-loop|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + i32.const 3 + i32.shl + local.tee $5 + local.get $0 + i32.add + local.get $1 + local.get $5 + i32.add + f64.load + local.tee $3 + local.get $3 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $3 + i64.trunc_f64_u + else + i64.const 0 + end + i64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 11712 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 11872 + call $~lib/rt/__newArray + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 11984 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9024 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12096 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12208 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 f32) + global.get $~lib/memory/__stack_pointer + i32.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.store + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Float32Array#__uget + local.tee $5 + f32.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12384 + i32.store + i32.const 12384 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + f64.promote_f32 + local.get $5 + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 3 + i32.shl + i32.add + i64.load + f32.convert_i64_s + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f32.convert_i32_s + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 28 + i32.add + local.set $0 + i32.const 9108 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_s + f32.convert_i32_s + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + 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 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + block $folding-inner0 + local.get $5 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $5 + i32.const 8852 + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $7 + loop $for-loop|0 + local.get $3 + local.get $7 + i32.lt_s + if + local.get $5 + local.get $3 + i32.const 2 + i32.shl + local.tee $8 + i32.add + local.get $6 + local.get $8 + i32.add + i32.load + f32.convert_i32_s + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12320 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + i32.add + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + i32.const 12 + i32.add + i32.const 8932 + i32.load + i32.const 8936 + i32.load + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12432 + call $~lib/rt/__newArray + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12496 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.gt_s + br_if $folding-inner0 + local.get $0 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|00 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.add + i32.load8_u + f32.convert_i32_u + f32.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12560 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $0 + i32.const 8852 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=8 + i32.const 8860 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.load offset=12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $4 + local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#__uget + local.tee $5 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 12736 + i32.store + i32.const 12736 + i32.const 3 + local.get $2 + f64.convert_i32_s + local.get $4 + local.get $5 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.const 1568 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 3 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 24 + i32.add + local.set $0 + i32.const 8932 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=8 + i32.const 8940 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 48 + i32.add + local.set $0 + local.get $1 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $3 + i32.gt_s + if + local.get $3 + i32.const 3 + i32.shl + local.tee $4 + local.get $0 + i32.add + local.get $2 + local.get $4 + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 1 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 4 + 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 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + 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 $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.get $3 + local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f64.convert_i32_s + f64.store + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + i32.const 7 + 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 56 + i32.add + local.set $0 + i32.const 9108 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=8 + i32.const 9116 + i32.load + local.set $3 + loop $for-loop|0 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_s + f64.convert_i32_s + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8848 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 12624 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8928 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 12784 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $0 + local.get $3 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 12896 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $0 + local.get $2 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store 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 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.set $3 + local.get $1 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $5 + i32.gt_s + if + local.get $3 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $2 + local.get $5 + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $0 + local.get $4 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 9104 + i32.store offset=20 + local.get $0 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 13008 + call $~lib/rt/__newArray + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $0 + local.get $1 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 1 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 1 + i32.add + local.set $3 + local.get $1 + i32.load offset=4 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $2 + local.get $3 + i32.add + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $4 + local.get $4 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $4 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.get $3 + i32.const 8 + i32.add + i32.lt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + i32.const 8 + i32.add + local.set $3 + local.get $1 + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $2 + local.get $3 + i32.add + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + local.get $0 + i32.const 255 + local.get $0 + i32.sub + i32.const 31 + i32.shr_s + i32.or + i32.and + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.gt_s + if + i32.const 1360 + i32.const 1632 + i32.const 1780 + 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 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $1 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.gt_s + if + local.get $0 + local.get $2 + i32.add + i32.const 255 + local.get $3 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $4 + local.get $4 + i32.const 255 + i32.gt_u + select + i32.store8 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/typedarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 f32) + (local $7 f64) + (local $8 i32) + (local $9 i64) + (local $10 f32) + (local $11 f64) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 1280 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1312 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1456 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.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 + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + i32.const 1696 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 1696 + i32.store + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array#sort + 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 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + if + i32.const 0 + i32.const 1568 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1728 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1808 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1840 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1872 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1904 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int8Array#fill + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3 + i32.const 0 + i32.const 15 + i32.const 1936 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 1968 + 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/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2000 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2048 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2096 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2144 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2192 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#fill + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 3 + i32.const 2 + i32.const 16 + i32.const 2240 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2272 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2320 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.const 3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2368 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2416 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 2 + i32.const 2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2464 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2512 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2560 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2608 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.const -2 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2656 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2704 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2752 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2800 + call $~lib/rt/__newArray + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.const -4 + i32.const -3 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#copyWithin + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 2848 + 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/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + local.get $2 + i32.load + i32.sub + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + if + i32.const 0 + i32.const 1568 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + i32.const 2147483647 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=28 + local.get $0 + local.get $1 + i32.eq + if + i32.const 0 + i32.const 1568 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=8 + i32.const 2 + i32.shr_u + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + local.get $1 + i32.load + i32.sub + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.get $0 + i32.load + i32.sub + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $4 + loop $for-loop|0 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $1 + local.get $3 + i32.add + i32.load8_s + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $8 + local.get $1 + local.get $0 + i32.const 2896 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + block $folding-inner6 + block $folding-inner5 + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + local.get $2 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store offset=8 + local.get $0 + i32.const 2928 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2960 + i32.store offset=8 + local.get $0 + i32.const 2960 + call $~lib/typedarray/Uint8Array#reduce + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|00 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $8 + local.get $1 + local.get $0 + i32.const 2992 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|00 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $4 + loop $for-loop|01 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $8 + local.get $1 + local.get $0 + i32.const 3024 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|02 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $8 + local.get $1 + local.get $0 + i32.const 3056 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|02 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=8 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $4 + loop $for-loop|03 + local.get $1 + local.get $4 + i32.lt_s + if + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $8 + local.get $1 + local.get $0 + i32.const 3088 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + i32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=8 + i32.const 0 + local.set $1 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $for-loop|04 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $9 + local.get $1 + local.get $0 + i32.const 3120 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|04 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i64.const 6 + i64.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=8 + i32.const 0 + local.set $1 + i64.const 0 + local.set $5 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $for-loop|05 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $9 + local.get $1 + local.get $0 + i32.const 3152 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $5 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|05 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i64.const 6 + i64.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=8 + i32.const 0 + local.set $1 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|06 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $10 + local.get $1 + local.get $0 + i32.const 3184 + i32.load + call_indirect (type $f32_f32_i32_i32_=>_f32) + local.set $6 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|06 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + f32.const 6 + f32.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=8 + i32.const 0 + local.set $1 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.set $3 + loop $for-loop|07 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $7 + local.get $11 + local.get $1 + local.get $0 + i32.const 3216 + i32.load + call_indirect (type $f64_f64_i32_i32_=>_f64) + local.set $7 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|07 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + f64.const 6 + f64.ne + br_if $folding-inner0 + 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 + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|08 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $1 + local.get $3 + i32.add + i32.load8_s + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + local.get $0 + i32.const 3248 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|08 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3280 + i32.store offset=8 + local.get $0 + i32.const 3280 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3312 + i32.store offset=8 + local.get $0 + i32.const 3312 + call $~lib/typedarray/Uint8Array#reduceRight + i32.const 255 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|09 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + local.get $0 + i32.const 3344 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|09 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|010 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + local.get $0 + i32.const 3376 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|010 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 65535 + i32.and + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|011 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + local.get $0 + i32.const 3408 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|011 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=8 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|012 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $3 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $2 + local.get $4 + local.get $1 + local.get $0 + i32.const 3440 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $2 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|012 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 6 + i32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=8 + i64.const 0 + local.set $5 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|013 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $9 + local.get $1 + local.get $0 + i32.const 3472 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $5 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|013 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i64.const 6 + i64.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=8 + i64.const 0 + local.set $5 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|014 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $5 + local.get $9 + local.get $1 + local.get $0 + i32.const 3504 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $5 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|014 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + i64.const 6 + i64.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=8 + f32.const 0 + local.set $6 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|015 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $6 + local.get $10 + local.get $1 + local.get $0 + i32.const 3536 + i32.load + call_indirect (type $f32_f32_i32_i32_=>_f32) + local.set $6 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|015 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + f32.const 6 + f32.ne + br_if $folding-inner1 + 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 + 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=8 + f64.const 0 + local.set $7 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + i32.const 1 + i32.sub + local.set $1 + loop $for-loop|016 + local.get $1 + i32.const 0 + i32.ge_s + if + local.get $2 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 4 + global.set $~argumentsLength + local.get $7 + local.get $11 + local.get $1 + local.get $0 + i32.const 3568 + i32.load + call_indirect (type $f64_f64_i32_i32_=>_f64) + local.set $7 + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $for-loop|016 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + f64.const 6 + f64.ne + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4304 + i32.store offset=8 + local.get $0 + i32.const 4304 + call $~lib/typedarray/Int8Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4336 + i32.store offset=8 + local.get $0 + i32.const 4336 + call $~lib/typedarray/Int8Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4368 + i32.store offset=8 + local.get $0 + i32.const 4368 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4400 + i32.store offset=8 + local.get $0 + i32.const 4400 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4432 + i32.store offset=8 + local.get $0 + i32.const 4432 + call $~lib/typedarray/Uint8Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4464 + i32.store offset=8 + local.get $0 + i32.const 4464 + call $~lib/typedarray/Uint8Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store offset=8 + local.get $0 + i32.const 4496 + call $~lib/typedarray/Int16Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=8 + local.get $0 + i32.const 4528 + call $~lib/typedarray/Int16Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=8 + local.get $0 + i32.const 4560 + call $~lib/typedarray/Uint16Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4592 + i32.store offset=8 + local.get $0 + i32.const 4592 + call $~lib/typedarray/Uint16Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4624 + i32.store offset=8 + local.get $0 + i32.const 4624 + call $~lib/typedarray/Int32Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4656 + i32.store offset=8 + local.get $0 + i32.const 4656 + call $~lib/typedarray/Int32Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4688 + i32.store offset=8 + local.get $0 + i32.const 4688 + call $~lib/typedarray/Uint32Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4720 + i32.store offset=8 + local.get $0 + i32.const 4720 + call $~lib/typedarray/Uint32Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4752 + i32.store offset=8 + local.get $0 + i32.const 4752 + call $~lib/typedarray/Int64Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4784 + i32.store offset=8 + local.get $0 + i32.const 4784 + call $~lib/typedarray/Int64Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4816 + i32.store offset=8 + local.get $0 + i32.const 4816 + call $~lib/typedarray/Uint64Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4848 + i32.store offset=8 + local.get $0 + i32.const 4848 + call $~lib/typedarray/Uint64Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4880 + i32.store offset=8 + local.get $0 + i32.const 4880 + call $~lib/typedarray/Float32Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4912 + i32.store offset=8 + local.get $0 + i32.const 4912 + call $~lib/typedarray/Float32Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4944 + i32.store offset=8 + local.get $0 + i32.const 4944 + call $~lib/typedarray/Float64Array#some + i32.eqz + br_if $folding-inner2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4976 + i32.store offset=8 + local.get $0 + i32.const 4976 + call $~lib/typedarray/Float64Array#some + br_if $folding-inner3 + 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 + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5008 + i32.store offset=8 + local.get $0 + i32.const 5008 + call $~lib/typedarray/Int8Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5040 + i32.store offset=8 + local.get $0 + i32.const 5040 + call $~lib/typedarray/Int8Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5072 + i32.store offset=8 + local.get $0 + i32.const 5072 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5104 + i32.store offset=8 + local.get $0 + i32.const 5104 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5136 + i32.store offset=8 + local.get $0 + i32.const 5136 + call $~lib/typedarray/Uint8Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5168 + i32.store offset=8 + local.get $0 + i32.const 5168 + call $~lib/typedarray/Uint8Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5200 + i32.store offset=8 + local.get $0 + i32.const 5200 + call $~lib/typedarray/Int16Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5232 + i32.store offset=8 + local.get $0 + i32.const 5232 + call $~lib/typedarray/Int16Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5264 + i32.store offset=8 + local.get $0 + i32.const 5264 + call $~lib/typedarray/Uint16Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5296 + i32.store offset=8 + local.get $0 + i32.const 5296 + call $~lib/typedarray/Uint16Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5328 + i32.store offset=8 + local.get $0 + i32.const 5328 + call $~lib/typedarray/Int32Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5360 + i32.store offset=8 + local.get $0 + i32.const 5360 + call $~lib/typedarray/Int32Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5392 + i32.store offset=8 + local.get $0 + i32.const 5392 + call $~lib/typedarray/Uint32Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5424 + i32.store offset=8 + local.get $0 + i32.const 5424 + call $~lib/typedarray/Uint32Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5456 + i32.store offset=8 + local.get $0 + i32.const 5456 + call $~lib/typedarray/Int64Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5488 + i32.store offset=8 + local.get $0 + i32.const 5488 + call $~lib/typedarray/Int64Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5520 + i32.store offset=8 + local.get $0 + i32.const 5520 + call $~lib/typedarray/Uint64Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5552 + i32.store offset=8 + local.get $0 + i32.const 5552 + call $~lib/typedarray/Uint64Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5584 + i32.store offset=8 + local.get $0 + i32.const 5584 + call $~lib/typedarray/Float32Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5616 + i32.store offset=8 + local.get $0 + i32.const 5616 + call $~lib/typedarray/Float32Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5648 + i32.store offset=8 + local.get $0 + i32.const 5648 + call $~lib/typedarray/Float64Array#findIndex + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5680 + i32.store offset=8 + local.get $0 + i32.const 5680 + call $~lib/typedarray/Float64Array#findIndex + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5712 + i32.store offset=8 + local.get $0 + i32.const 5712 + call $~lib/typedarray/Int8Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5744 + i32.store offset=8 + local.get $0 + i32.const 5744 + call $~lib/typedarray/Int8Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5776 + i32.store offset=8 + local.get $0 + i32.const 5776 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5808 + i32.store offset=8 + local.get $0 + i32.const 5808 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5840 + i32.store offset=8 + local.get $0 + i32.const 5840 + call $~lib/typedarray/Uint8Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5872 + i32.store offset=8 + local.get $0 + i32.const 5872 + call $~lib/typedarray/Uint8Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5904 + i32.store offset=8 + local.get $0 + i32.const 5904 + call $~lib/typedarray/Int16Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5936 + i32.store offset=8 + local.get $0 + i32.const 5936 + call $~lib/typedarray/Int16Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 5968 + i32.store offset=8 + local.get $0 + i32.const 5968 + call $~lib/typedarray/Uint16Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6000 + i32.store offset=8 + local.get $0 + i32.const 6000 + call $~lib/typedarray/Uint16Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6032 + i32.store offset=8 + local.get $0 + i32.const 6032 + call $~lib/typedarray/Int32Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6064 + i32.store offset=8 + local.get $0 + i32.const 6064 + call $~lib/typedarray/Int32Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6096 + i32.store offset=8 + local.get $0 + i32.const 6096 + call $~lib/typedarray/Uint32Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6128 + i32.store offset=8 + local.get $0 + i32.const 6128 + call $~lib/typedarray/Uint32Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6160 + i32.store offset=8 + local.get $0 + i32.const 6160 + call $~lib/typedarray/Int64Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6192 + i32.store offset=8 + local.get $0 + i32.const 6192 + call $~lib/typedarray/Int64Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6224 + i32.store offset=8 + local.get $0 + i32.const 6224 + call $~lib/typedarray/Uint64Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6256 + i32.store offset=8 + local.get $0 + i32.const 6256 + call $~lib/typedarray/Uint64Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6288 + i32.store offset=8 + local.get $0 + i32.const 6288 + call $~lib/typedarray/Float32Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6320 + i32.store offset=8 + local.get $0 + i32.const 6320 + call $~lib/typedarray/Float32Array#every + br_if $folding-inner5 + 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 + 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 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6352 + i32.store offset=8 + local.get $0 + i32.const 6352 + call $~lib/typedarray/Float64Array#every + i32.eqz + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6384 + i32.store offset=8 + local.get $0 + i32.const 6384 + call $~lib/typedarray/Float64Array#every + br_if $folding-inner5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6656 + i32.store offset=8 + i32.const 0 + local.set $1 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6656 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|017 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6656 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|017 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 6448 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 1 + i32.const 6448 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.const 6448 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 6688 + i32.store offset=8 + i32.const 0 + local.set $1 + 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 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6688 + i32.store offset=4 + local.get $0 + i32.load offset=4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.set $3 + loop $for-loop|018 + local.get $1 + local.get $3 + i32.lt_s + if + local.get $2 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + i32.const 3 + global.set $~argumentsLength + local.get $1 + local.get $0 + i32.const 6688 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|018 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + 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 + call $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + i32.const 3 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $1 + local.get $3 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.tee $7 + local.get $7 + f64.ne + local.get $7 + f64.const nan:0x8000000000000 + f64.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + i32.const 0 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 0 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + local.tee $3 + i32.eqz + i32.const 1 + local.get $3 + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|019 + local.get $1 + local.get $3 + i32.lt_s + if + i32.const 1 + i32.const 1 + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.tee $6 + local.get $6 + f32.ne + local.get $6 + f32.const nan:0x400000 + f32.eq + select + br_if $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + drop + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|019 end - i32.const 0 - i32.const 1360 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable end i32.const 0 - i32.const 1360 - i32.const 440 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1568 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + if + i32.const 0 + i32.const 1568 + i32.const 691 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=8 + if + i32.const 0 + i32.const 1568 + i32.const 695 i32.const 3 call $~lib/builtins/abort unreachable end + call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + 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 $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $0 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 13120 + 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/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 1360 - i32.const 461 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 300 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + local.get $2 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 13152 + 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/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 30108 + global.set $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|020 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|020 + 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 36 + i32.add + global.set $~lib/memory/__stack_pointer + return end i32.const 0 - i32.const 1360 - i32.const 463 + i32.const 1568 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1360 - i32.const 495 + i32.const 1568 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1360 - i32.const 626 - i32.const 5 + i32.const 1568 + i32.const 415 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1360 - i32.const 627 - i32.const 5 + i32.const 1568 + i32.const 417 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1360 - i32.const 629 - i32.const 5 + i32.const 1568 + i32.const 461 + i32.const 3 call $~lib/builtins/abort unreachable end i32.const 0 - i32.const 1360 - i32.const 630 - i32.const 5 + i32.const 1568 + i32.const 463 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1424 - i32.const 1488 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable + i32.const 0 + i32.const 1568 + i32.const 495 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/arraybuffer/ArrayBufferView#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 1073741820 + local.get $2 + i32.shr_u + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 18 + 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 $2 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=4 + local.get $1 + i32.const 0 + local.get $2 + call $~lib/memory/memory.fill + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView#set:buffer + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.shl + local.tee $4 + local.set $5 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__new + local.set $1 + local.get $3 + if + local.get $1 + local.get $3 + local.get $5 + call $~lib/memory/memory.copy + end + local.get $1 + local.tee $3 + i32.store + i32.const 16 + local.get $2 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + call $~lib/rt/itcms/__link + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + local.get $4 + i32.store offset=8 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (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 + 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.add + global.set $~lib/memory/__stack_pointer + i32.const 7296 + return + end + i32.const 0 + local.get $0 + i32.sub + local.get $0 + local.get $0 + i32.const 31 + i32.shr_u + local.tee $1 + select + local.tee $2 + call $~lib/util/number/decimalCount32 + local.get $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 $0 + i32.store + local.get $0 + local.get $2 + local.get $3 + call $~lib/util/number/utoa_dec_simple + 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 ) - (func $~lib/rt/pure/decrement (param $0 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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store 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 + i32.eqz if - i32.const 0 - i32.const 1232 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7296 + return end + local.get $0 + call $~lib/util/number/decimalCount32 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 - i32.eq + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $~lib/util/number/utoa_dec_simple + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/util/number/itoa64 (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i64.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7296 + return + end + i64.const 0 + local.get $0 + i64.sub + local.get $0 + local.get $0 + i64.const 63 + i64.shr_u + i32.wrap_i64 + local.tee $3 + select + local.tee $0 + i64.const 4294967295 + i64.le_u if - block $__inlined_func$~lib/rt/__visit_members - block $folding-inner3 - block $folding-inner2 - 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 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner2 $folding-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 $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=20 - local.tee $1 - if - local.get $1 - call $~lib/rt/pure/__visit - end - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=24 - call $~lib/rt/pure/__visit - br $__inlined_func$~lib/rt/__visit_members - end - local.get $0 - i32.load offset=20 - call $~lib/rt/pure/__visit - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1232 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT local.get $0 - call $~lib/rt/tlsf/freeBlock - else + i32.wrap_i64 + local.tee $4 + call $~lib/util/number/decimalCount32 + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + local.get $4 + local.get $1 + call $~lib/util/number/utoa_dec_simple + else local.get $0 + call $~lib/util/number/decimalCount64High + local.get $3 + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 i32.const 1 - i32.sub + i32.shl + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store local.get $2 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/util/number/utoa_dec_simple end + local.get $3 + if + local.get $2 + i32.const 45 + i32.store16 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~start - call $start:std/typedarray - ) - (func $~lib/rt/pure/__visit (param $0 i32) + (func $~lib/util/number/dtoa (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $0 - i32.const 13020 - i32.lt_u + f64.const 0 + f64.eq if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7504 return end local.get $0 - i32.const 20 + local.get $0 + f64.sub + f64.const 0 + f64.ne + if + local.get $0 + local.get $0 + f64.ne + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7536 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 7568 + i32.const 7616 + local.get $0 + f64.const 0 + f64.lt + select + return + end + i32.const 7648 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 7648 + local.get $1 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.sub - call $~lib/rt/pure/decrement + 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 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1104 + i32.const 49 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + local.get $1 + i32.const 0 + local.get $0 + call $~lib/memory/memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) ) diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index 46286fdac9..9d085611dd 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -820,4 +820,7 @@ testTypedArraySet(); targetClampedArray.set(d, 0); targetClampedArray.set(e, 5); valuesEqual(targetClampedArray, [1, 255, 100, 255, 0, 0, 100, 10, 255, 0]); -} \ No newline at end of file +} + +__stack_pointer = __heap_base; +__collect(); diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index db991bbdf8..89080d514e 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -9,8 +9,8 @@ (type $i64_i32_i32_=>_i32 (func (param i64 i32 i32) (result i32))) (type $f32_i32_i32_=>_i32 (func (param f32 i32 i32) (result i32))) (type $f64_i32_i32_=>_i32 (func (param f64 i32 i32) (result i32))) - (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $i32_=>_none (func (param i32))) + (type $i64_i64_i32_i32_=>_i64 (func (param i64 i64 i32 i32) (result i64))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) @@ -39,272 +39,278 @@ (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) (type $i32_i64_i32_i32_=>_none (func (param i32 i64 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i64_=>_i32 (func (param i64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "env" "trace" (func $~lib/builtins/trace (param i32 i32 f64 f64 f64 f64 f64))) (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&\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 124) "<\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 188) "<\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 252) "<\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 316) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 380) "<\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 444) "<\00\00\00\01\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 508) "\1c\00\00\00\01\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 540) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\01\04\05\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\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") - (data (i32.const 620) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 652) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 684) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data (i32.const 716) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\02\02\00\00\00\00\00\00\00") - (data (i32.const 748) "\1c\00\00\00\01\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") - (data (i32.const 780) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00") - (data (i32.const 812) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 860) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 908) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 956) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1004) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1052) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1084) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1132) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1180) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1228) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1276) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1324) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1372) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1420) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1468) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1516) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1564) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1612) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1660) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1708) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1740) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1772) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1804) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1836) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1868) "\1c\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1900) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1932) "\1c\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1964) "\1c\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 1996) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2028) "\1c\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2060) "\1c\00\00\00\01\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2092) "\1c\00\00\00\01\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2124) "\1c\00\00\00\01\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2156) "\1c\00\00\00\01\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2188) "\1c\00\00\00\01\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2220) "\1c\00\00\00\01\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2252) "\1c\00\00\00\01\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2284) "\1c\00\00\00\01\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2316) "\1c\00\00\00\01\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2348) "\1c\00\00\00\01\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2380) "\1c\00\00\00\01\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2412) "\1c\00\00\00\01\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2444) "\1c\00\00\00\01\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2476) "\1c\00\00\00\01\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2508) "\1c\00\00\00\01\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2540) "\1c\00\00\00\01\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2572) "\1c\00\00\00\01\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2604) "\1c\00\00\00\01\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2636) "\1c\00\00\00\01\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 2668) "\1c\00\00\00\01\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 2700) "\1c\00\00\00\01\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 2732) "\1c\00\00\00\01\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 2764) "\1c\00\00\00\01\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 2796) "\1c\00\00\00\01\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 2828) "\1c\00\00\00\01\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 2860) "\1c\00\00\00\01\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 2892) "\1c\00\00\00\01\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 2924) "\1c\00\00\00\01\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 2956) "\1c\00\00\00\01\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 2988) "\1c\00\00\00\01\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 3020) "\1c\00\00\00\01\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 3052) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3084) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3116) "\1c\00\00\00\01\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 3148) "\1c\00\00\00\01\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 3180) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3212) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3244) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3276) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3308) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3340) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3372) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3404) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3436) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3468) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3500) "\1c\00\00\00\01\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 3532) "\1c\00\00\00\01\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 3564) "\1c\00\00\00\01\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 3596) "\1c\00\00\00\01\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 3628) "\1c\00\00\00\01\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 3660) "\1c\00\00\00\01\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 3692) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3724) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3756) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3788) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3820) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3852) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3884) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3916) "\1c\00\00\00\01\00\00\00\00\00\00\00(\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3948) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 3980) "\1c\00\00\00\01\00\00\00\00\00\00\00)\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4012) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4044) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00K\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4076) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4108) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4140) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4172) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4204) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4236) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4268) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4300) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4332) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4364) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4396) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00V\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4428) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00W\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4460) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00X\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4492) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4524) "\1c\00\00\00\01\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4556) "\1c\00\00\00\01\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 4588) "\1c\00\00\00\01\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 4620) "\1c\00\00\00\01\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 4652) "\1c\00\00\00\01\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 4684) "\1c\00\00\00\01\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 4716) "\1c\00\00\00\01\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 4748) "\1c\00\00\00\01\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4780) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4812) "\1c\00\00\00\01\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4844) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4876) "\1c\00\00\00\01\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4908) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4940) "\1c\00\00\00\01\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 4972) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5004) "\1c\00\00\00\01\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5036) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5068) "\1c\00\00\00\01\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5100) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00l\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5132) "\1c\00\00\00\01\00\00\00\00\00\00\000\00\00\00\08\00\00\00m\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5164) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5196) "\1c\00\00\00\01\00\00\00\00\00\00\001\00\00\00\08\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5228) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\n\00\00\00\0c\00\00\00\0e\00\00\00") - (data (i32.const 5260) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\80\14\00\00\80\14\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 5308) "\1c\00\00\00\01\00\00\00\00\00\00\002\00\00\00\08\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5340) "\1c\00\00\00\01\00\00\00\00\00\00\003\00\00\00\08\00\00\00q\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5372) "\1c\00\00\00\01\00\00\00\00\00\00\004\00\00\00\08\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5404) "\1c\00\00\00\01\00\00\00\00\00\00\005\00\00\00\08\00\00\00s\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5436) "\1c\00\00\00\01\00\00\00\00\00\00\006\00\00\00\08\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5468) "\1c\00\00\00\01\00\00\00\00\00\00\007\00\00\00\08\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5500) "\1c\00\00\00\01\00\00\00\00\00\00\008\00\00\00\08\00\00\00v\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5532) "\1c\00\00\00\01\00\00\00\00\00\00\009\00\00\00\08\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5564) "\1c\00\00\00\01\00\00\00\00\00\00\00:\00\00\00\08\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5596) "\1c\00\00\00\01\00\00\00\00\00\00\00;\00\00\00\08\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5628) "\1c\00\00\00\01\00\00\00\00\00\00\00<\00\00\00\08\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5660) "<\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 5724) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\000\16\00\000\16\00\00$\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5772) "<\00\00\00\01\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\00\00\00") - (data (i32.const 5836) ",\00\00\00\01\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\a0\16\00\00\a0\16\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 5884) "\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 5916) "|\00\00\00\01\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 6044) "<\00\00\00\01\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 6108) "\1c\00\00\00\01\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 6140) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 6540) "\1c\04\00\00\01\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 7596) "\\\00\00\00\01\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 7692) "\1c\00\00\00\01\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") - (data (i32.const 7724) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\001\00,\002\00,\003\00,\004\00,\005\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 7772) "\1c\00\00\00\01\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 7804) "\1c\00\00\00\01\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 7836) ",\00\00\00\01\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 7884) ",\00\00\00\01\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 7936) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 7992) "\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\000$\00\000$\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9340) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") - (data (i32.const 9372) ",\00\00\00\01\00\00\00\00\00\00\00\0f\00\00\00\10\00\00\00\90$\00\00\90$\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9420) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data (i32.const 9452) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9500) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data (i32.const 9532) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data (i32.const 9564) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data (i32.const 9596) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data (i32.const 9628) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data (i32.const 9660) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00U\00i\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data (i32.const 9708) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data (i32.const 9740) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data (i32.const 9772) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data (i32.const 9804) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\e8\e9\ea\92\91\90\00\00") - (data (i32.const 9836) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") - (data (i32.const 9868) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 9932) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\00\00\00\00\00\00") - (data (i32.const 9964) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\04\05\06\07\08\t\00\00\00") - (data (i32.const 9996) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\00\00\00\06\07\08\t\00\00\00") - (data (i32.const 10028) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") - (data (i32.const 10060) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10108) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\001\006\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data (i32.const 10156) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10204) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10252) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10300) ",\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 10348) ",\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\01\00\02\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10396) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 10444) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10492) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10540) ",\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10588) ",\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 10636) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\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 10700) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\003\002\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data (i32.const 10748) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10812) "<\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 10876) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 10940) "<\00\00\00\01\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\00\00\00\00") - (data (i32.const 11004) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\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 11068) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 11116) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11180) "<\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 11244) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11308) "<\00\00\00\01\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\00\00\00\00") - (data (i32.const 11372) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11484) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\14\00\00\00I\00n\00t\006\004\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00") - (data (i32.const 11532) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11644) "l\00\00\00\01\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\00\00\00\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 11756) "l\00\00\00\01\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\00\00\00\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 11868) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 11980) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12092) ",\00\00\00\01\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\00\00\00\00\00\00\00") - (data (i32.const 12140) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12252) "l\00\00\00\01\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\00\00\00\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 12364) "l\00\00\00\01\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\00\00\00\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 12476) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12588) "<\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\00\00\80?\00\00\00@\00\00@@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12652) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 12700) "<\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 12764) "<\00\00\00\01\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\00\00\00\00\00\00\00\00") - (data (i32.const 12828) "<\00\00\00\01\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\00\00\00\00") - (data (i32.const 12892) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 13004) ",\00\00\00\01\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\00\00\00\00\00") - (data (i32.const 13052) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 13164) "l\00\00\00\01\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\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13276) "l\00\00\00\01\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\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 13388) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\ff\00\00\00d\n\ff\ff\00\00\00") - (data (i32.const 13420) "\1c\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\ffd\ff\00\00d\n\ff\00\00\00") + (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&\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 124) "<\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 188) "<\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 256) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 288) "\00\00\00\00\00\00\00\00\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\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 380) ",\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 432) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 460) "<\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 524) "<\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\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\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 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 684) "\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\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\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\01\01\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 828) "\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\00\00\00\00\00\00\00") + (data (i32.const 860) "\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\00\00\00\00\00\00\00") + (data (i32.const 892) "\1c\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") + (data (i32.const 924) "\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\00\00\00\00\00\00\00") + (data (i32.const 956) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1004) ",\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1052) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1100) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1148) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1196) "\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\00\00\00\00\00\00\00") + (data (i32.const 1228) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1276) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1324) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1372) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1420) ",\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\00\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\00\14\00\00\00\04\00\00\00\02\00\00\00\03\00\00\00\04\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1516) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1564) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1612) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1660) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1708) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1756) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1804) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1916) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1948) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 1980) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2012) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2044) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2076) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2108) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2140) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2172) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2204) "\1c\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\08\00\00\00\0d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2236) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2268) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2300) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2332) "\1c\00\00\00\00\00\00\00\00\00\00\00\15\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2364) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2396) "\1c\00\00\00\00\00\00\00\00\00\00\00\17\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2428) "\1c\00\00\00\00\00\00\00\00\00\00\00\18\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2460) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2492) "\1c\00\00\00\00\00\00\00\00\00\00\00\1a\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2524) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2556) "\1c\00\00\00\00\00\00\00\00\00\00\00\1c\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2588) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2620) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2652) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2684) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2716) "\1c\00\00\00\00\00\00\00\00\00\00\00!\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2748) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2780) "\1c\00\00\00\00\00\00\00\00\00\00\00#\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2812) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2844) "\1c\00\00\00\00\00\00\00\00\00\00\00%\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2876) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2908) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2940) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 2972) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3004) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3036) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3068) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3100) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3132) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3164) "\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 3196) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3228) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3260) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3292) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3324) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3356) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3388) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3420) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3452) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3484) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3516) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3548) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3580) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3612) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3644) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3676) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3708) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3740) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3772) "\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 3804) "\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 3836) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3868) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3900) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 3932) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\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\00D\00\00\00\00\00\00\00\00\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\00E\00\00\00\00\00\00\00\00\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\00F\00\00\00\00\00\00\00\00\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\00G\00\00\00\00\00\00\00\00\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\00H\00\00\00\00\00\00\00\00\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\00I\00\00\00\00\00\00\00\00\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\00J\00\00\00\00\00\00\00\00\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\00K\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4220) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00L\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4252) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00M\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4284) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00N\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4316) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00O\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4348) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00P\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4380) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00Q\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4412) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00R\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4444) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00S\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4476) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00T\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4508) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00U\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4540) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00V\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4572) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00W\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4604) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00X\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4636) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00Y\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4668) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00Z\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4700) "\1c\00\00\00\00\00\00\00\00\00\00\00\'\00\00\00\08\00\00\00[\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4732) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00\\\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4764) "\1c\00\00\00\00\00\00\00\00\00\00\00(\00\00\00\08\00\00\00]\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4796) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00^\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4828) "\1c\00\00\00\00\00\00\00\00\00\00\00)\00\00\00\08\00\00\00_\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4860) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00`\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4892) "\1c\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\08\00\00\00a\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4924) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00b\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4956) "\1c\00\00\00\00\00\00\00\00\00\00\00+\00\00\00\08\00\00\00c\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 4988) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5020) "\1c\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\08\00\00\00e\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5052) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00f\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5084) "\1c\00\00\00\00\00\00\00\00\00\00\00-\00\00\00\08\00\00\00g\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5116) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00h\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5148) "\1c\00\00\00\00\00\00\00\00\00\00\00.\00\00\00\08\00\00\00i\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5180) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00j\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5212) "\1c\00\00\00\00\00\00\00\00\00\00\00/\00\00\00\08\00\00\00k\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5244) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00l\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5276) "\1c\00\00\00\00\00\00\00\00\00\00\000\00\00\00\08\00\00\00m\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5308) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00n\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5340) "\1c\00\00\00\00\00\00\00\00\00\00\001\00\00\00\08\00\00\00o\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5372) "\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\00\00\00") + (data (i32.const 5404) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\10\15\00\00\10\15\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 5452) "\1c\00\00\00\00\00\00\00\00\00\00\002\00\00\00\08\00\00\00p\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5484) "\1c\00\00\00\00\00\00\00\00\00\00\003\00\00\00\08\00\00\00q\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5516) "\1c\00\00\00\00\00\00\00\00\00\00\004\00\00\00\08\00\00\00r\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5548) "\1c\00\00\00\00\00\00\00\00\00\00\005\00\00\00\08\00\00\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5580) "\1c\00\00\00\00\00\00\00\00\00\00\006\00\00\00\08\00\00\00t\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5612) "\1c\00\00\00\00\00\00\00\00\00\00\007\00\00\00\08\00\00\00u\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5644) "\1c\00\00\00\00\00\00\00\00\00\00\008\00\00\00\08\00\00\00v\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5676) "\1c\00\00\00\00\00\00\00\00\00\00\009\00\00\00\08\00\00\00w\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5708) "\1c\00\00\00\00\00\00\00\00\00\00\00:\00\00\00\08\00\00\00x\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5740) "\1c\00\00\00\00\00\00\00\00\00\00\00;\00\00\00\08\00\00\00y\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5772) "\1c\00\00\00\00\00\00\00\00\00\00\00<\00\00\00\08\00\00\00z\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5804) "<\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\00\00\00\00\00\00\00\00") + (data (i32.const 5868) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\00\c0\16\00\00\c0\16\00\00$\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 5916) "<\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\00\00\00") + (data (i32.const 5980) ",\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\10\00\00\000\17\00\000\17\00\00,\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 6028) "\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 6060) "|\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 6188) "<\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 6252) "\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 6284) "0\000\000\001\000\002\000\003\000\004\000\005\000\006\000\007\000\008\000\009\001\000\001\001\001\002\001\003\001\004\001\005\001\006\001\007\001\008\001\009\002\000\002\001\002\002\002\003\002\004\002\005\002\006\002\007\002\008\002\009\003\000\003\001\003\002\003\003\003\004\003\005\003\006\003\007\003\008\003\009\004\000\004\001\004\002\004\003\004\004\004\005\004\006\004\007\004\008\004\009\005\000\005\001\005\002\005\003\005\004\005\005\005\006\005\007\005\008\005\009\006\000\006\001\006\002\006\003\006\004\006\005\006\006\006\007\006\008\006\009\007\000\007\001\007\002\007\003\007\004\007\005\007\006\007\007\007\008\007\009\008\000\008\001\008\002\008\003\008\004\008\005\008\006\008\007\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 6684) "\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 7740) "\\\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 7836) "\1c\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") + (data (i32.const 7868) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 7916) "\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 7948) "\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 7980) ",\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 8028) ",\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 8080) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 8136) "\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\c0$\00\00\c0$\00\00\18\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9484) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\92\91\90\00\00\00\00\00\00\00\00\00") + (data (i32.const 9516) ",\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\10\00\00\00 %\00\00 %\00\00\03\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9564) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\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\00I\00n\00t\008\00A\00r\00r\00a\00y\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 9644) "\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\00\00\00\00\00\00") + (data (i32.const 9676) "\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\00\00\00") + (data (i32.const 9708) "\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\00\00\00") + (data (i32.const 9740) "\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\00\00") + (data (i32.const 9772) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data (i32.const 9804) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 9852) "\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\00\00\00\00\00\00") + (data (i32.const 9884) "\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\00\00\00") + (data (i32.const 9916) "\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\00\00\00") + (data (i32.const 9948) "\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\00\00") + (data (i32.const 9980) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\01\02\03\00\00\00\00\00\00\00\00\00") + (data (i32.const 10012) "<\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10076) "\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\00\00\00\00\00\00") + (data (i32.const 10108) "\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\00\00\00") + (data (i32.const 10140) "\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\00\00\00") + (data (i32.const 10172) "\1c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00defg\ff\ff\ff\00\00\00\00\00") + (data (i32.const 10204) ",\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\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 10252) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 10300) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10348) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10396) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10444) ",\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\00\00\00\00\00\00\00\00") + (data (i32.const 10492) ",\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\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 10540) ",\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\00\00\00\00\00\00\00") + (data (i32.const 10588) ",\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10636) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10684) ",\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10732) ",\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\00\00\00\00\00\00\00\00") + (data (i32.const 10780) "<\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\00\00\00\00\00\00\00\00\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 10844) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 10892) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 10956) "<\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\00\00\00\00\00\00\00\00") + (data (i32.const 11020) "<\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11084) "<\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\00\00\00\00") + (data (i32.const 11148) "<\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\00\00\00\00\00\00\00\00\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 11212) ",\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\00\00\00\00\00\00\00") + (data (i32.const 11260) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11324) "<\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\00\00\00\00\00\00\00\00") + (data (i32.const 11388) "<\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\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 11452) "<\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\00\00\00\00") + (data (i32.const 11516) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11628) ",\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\00\00\00\00\00\00\00\00\00") + (data (i32.const 11676) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 11788) "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\00\00\00\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 11900) "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\00\00\00\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 12012) "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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12124) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12236) ",\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\00\00\00\00\00\00\00") + (data (i32.const 12284) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 12396) "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\00\00\00\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 12508) "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\00\00\00\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 12620) "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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12732) "<\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\00\00\00\00\00\00\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 12796) ",\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\00\00\00\00\00") + (data (i32.const 12844) "<\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12908) "<\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\00\00\00\00\00\00\00\00") + (data (i32.const 12972) "<\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\00\00\00\00") + (data (i32.const 13036) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 13148) ",\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\00\00\00\00\00") + (data (i32.const 13196) "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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\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 13308) "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\"@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13420) "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\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 13532) "\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\00\00\00") + (data (i32.const 13564) "\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\00\00\00") + (data (i32.const 13600) "E\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\00\00\00\00\00\00") (table $0 123 funcref) (elem (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0) (global $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT i32 (i32.const 1)) @@ -318,6 +324,15 @@ (global $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) (global $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT i32 (i32.const 4)) (global $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT i32 (i32.const 8)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) @@ -325,9 +340,9 @@ (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) - (global $std/typedarray/forEachValues i32 (i32.const 5280)) - (global $std/typedarray/testArrayReverseValues i32 (i32.const 5744)) - (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 5856)) + (global $std/typedarray/forEachValues i32 (i32.const 5424)) + (global $std/typedarray/testArrayReverseValues i32 (i32.const 5888)) + (global $std/typedarray/testArrayIndexOfAndLastIndexOfValues i32 (i32.const 6000)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -335,24 +350,334 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $std/typedarray/testArrayWrapValues i32 (i32.const 9056)) - (global $std/typedarray/setSource1 (mut i32) (i32.const 9136)) - (global $std/typedarray/setSource2 (mut i32) (i32.const 9216)) - (global $std/typedarray/setSource3 (mut i32) (i32.const 9312)) - (global $std/typedarray/setSource7 (mut i32) (i32.const 9392)) - (global $~lib/memory/__heap_base i32 (i32.const 13452)) + (global $std/typedarray/testArrayWrapValues i32 (i32.const 9200)) + (global $std/typedarray/setSource1 (mut i32) (i32.const 9280)) + (global $std/typedarray/setSource2 (mut i32) (i32.const 9360)) + (global $std/typedarray/setSource3 (mut i32) (i32.const 9456)) + (global $std/typedarray/setSource7 (mut i32) (i32.const 9536)) + (global $~lib/rt/__rtti_base i32 (i32.const 13600)) + (global $~lib/memory/__data_end i32 (i32.const 14156)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 30540)) + (global $~lib/memory/__heap_base i32 (i32.const 30540)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/pure/__release (param $0 i32) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - global.get $~lib/memory/__heap_base + 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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 208 + 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 208 + 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 336 + i32.const 400 + 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.const 20 - i32.sub - call $~lib/rt/pure/decrement + i32.load offset=8 + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 208 + 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) @@ -376,8 +701,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 272 + i32.const 480 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -403,8 +728,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 274 + i32.const 480 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -457,8 +782,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 287 + i32.const 480 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -473,13 +798,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -565,7 +890,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -589,8 +914,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 200 + i32.const 480 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -606,8 +931,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 202 + i32.const 480 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -660,7 +985,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -701,8 +1026,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 223 + i32.const 480 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -735,7 +1060,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -744,7 +1069,7 @@ 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 @@ -766,8 +1091,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 238 + i32.const 480 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -784,8 +1109,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 239 + i32.const 480 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -843,8 +1168,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 255 + i32.const 480 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -868,15 +1193,15 @@ 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 @@ -904,7 +1229,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -948,8 +1273,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 380 + i32.const 480 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -991,8 +1316,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 387 + i32.const 480 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1024,8 +1349,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 400 + i32.const 480 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1062,13 +1387,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 @@ -1079,7 +1404,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 @@ -1106,6 +1431,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 @@ -1148,7 +1475,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 @@ -1236,6 +1563,334 @@ 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 480 + i32.const 565 + 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 + 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 + 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 208 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1262,8 +1917,8 @@ i32.ge_u if i32.const 144 - i32.const 272 - i32.const 461 + i32.const 480 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1346,8 +2001,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 333 + i32.const 480 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1411,8 +2066,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 346 + i32.const 480 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1562,8 +2217,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 360 + i32.const 480 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1588,7 +2243,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 @@ -1601,7 +2256,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 @@ -1612,7 +2267,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 @@ -1642,7 +2297,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) @@ -1671,8 +2326,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 498 + i32.const 480 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1691,8 +2346,8 @@ i32.eqz if i32.const 0 - i32.const 272 - i32.const 500 + i32.const 480 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1720,44 +2375,15 @@ 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/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) local.get $0 - i32.const 1073741804 - i32.gt_u - if - i32.const 144 - i32.const 208 - 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 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $1 i32) local.get $0 + local.get $1 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) @@ -1972,157 +2598,144 @@ end end ) - (func $~lib/rt/pure/increment (param $0 i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) local.get $0 - 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 144 i32.const 208 - i32.const 109 - i32.const 3 + i32.const 256 + 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 - i32.const 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 - i32.store offset=4 + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.set $3 + local.get $3 i32.const 0 - drop + 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.load - i32.const 1 - i32.and - i32.eqz i32.eqz if i32.const 0 i32.const 208 - i32.const 112 + i32.const 290 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 + 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 - call $~lib/rt/pure/increment + 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 - local.get $0 ) - (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.get $0 - i32.eqz - if - i32.const 12 - i32.const 2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/arraybuffer/ArrayBufferView#set:buffer (param $0 i32) (param $1 i32) local.get $0 - i32.const 0 + local.get $1 i32.store 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 1073741820 - local.get $2 - i32.shr_u - i32.gt_u - if - i32.const 32 - i32.const 80 - i32.const 18 - i32.const 57 - call $~lib/builtins/abort - unreachable - end local.get $1 - local.get $2 - i32.shl - local.tee $1 i32.const 0 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - i32.const 0 - local.get $1 - 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 + 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=8 - local.get $0 + i32.store offset=4 ) - (func $~lib/typedarray/Int8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + (func $~lib/arraybuffer/ArrayBufferView#set:byteLength (param $0 i32) (param $1 i32) local.get $0 local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 + i32.store offset=8 ) (func $~lib/arraybuffer/ArrayBufferView#get:byteOffset (param $0 i32) (result i32) local.get $0 @@ -2135,3180 +2748,2247 @@ local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Uint8Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Uint8ClampedArray#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 0 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Uint8ClampedArray#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 ) - (func $~lib/typedarray/Int16Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (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/Uint16Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 1 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Uint16Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 1 i32.shr_u ) - (func $~lib/typedarray/Int32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Int32Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Uint32Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 2 i32.shr_u ) - (func $~lib/typedarray/Int64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Int64Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Uint64Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 3 i32.shr_u ) - (func $~lib/typedarray/Float32Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 2 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (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/Float64Array#constructor (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end - local.get $0 - local.get $1 - i32.const 3 - call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $0 - local.get $0 - ) (func $~lib/typedarray/Float64Array#get:length (param $0 i32) (result i32) local.get $0 i32.load offset=8 i32.const 3 i32.shr_u ) - (func $std/typedarray/testInstantiate (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - i32.const 0 - local.get $0 - call $~lib/typedarray/Int8Array#constructor - local.set $1 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 32 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 33 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) local.get $1 - call $~lib/typedarray/Int8Array#get:length local.get $0 - i32.eq - i32.eqz + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 336 - i32.const 34 - i32.const 3 + i32.const 608 + i32.const 675 + i32.const 64 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $0 - call $~lib/typedarray/Uint8Array#constructor - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 37 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add local.get $2 - i32.load offset=8 + i32.store + ) + (func $~lib/typedarray/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) + local.get $1 local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 336 - i32.const 38 - i32.const 3 + i32.const 608 + i32.const 664 + i32.const 64 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/typedarray/Uint8Array#get:length local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 39 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + ) + (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) + local.get $1 local.get $0 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $3 - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 42 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 43 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.get $0 - i32.eq - i32.eqz + i32.const 3 + i32.shr_u + i32.ge_u if - i32.const 0 i32.const 336 - i32.const 44 - i32.const 3 + i32.const 608 + i32.const 1315 + i32.const 64 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $0 - call $~lib/typedarray/Int16Array#constructor - local.set $4 - local.get $4 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.get $2 + f64.store + ) + (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 i32) + (local $8 f64) + (local $9 i32) i32.const 0 - i32.eq - i32.eqz - if + 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 $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + local.get $3 + i32.const 1 + i32.sub + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 + i32.const 0 + i32.ge_s + local.set $7 + local.get $7 + if + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $8 + local.get $5 + local.get $8 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + else + br $while-break|1 + end + br $while-continue|1 + end + end + end + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + ) + (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 f64) + (local $10 f64) + (local $11 i32) + (local $12 f64) + local.get $1 + i32.const 31 + i32.add + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + local.set $3 + local.get $3 + call $~lib/rt/tlsf/__alloc + local.set $4 + local.get $4 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 i32.const 0 - i32.const 336 - i32.const 47 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.gt_s + local.set $6 + local.get $6 + if + local.get $5 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 + i32.const 1 + i32.shr_s + local.set $7 + br $while-continue|1 + end + end + local.get $7 + i32.const 1 + i32.shr_s + local.set $8 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $10 + local.get $9 + local.get $10 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $5 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $5 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $9 + f64.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|0 + end + end + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + local.set $6 + local.get $6 + if + local.get $0 + f64.load + local.set $10 + local.get $0 + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $0 + local.get $5 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + i32.const 1 + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $7 + local.set $8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if + local.get $0 + f64.load + local.set $10 + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $9 + local.get $10 + local.get $9 + i32.const 2 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + local.get $4 + local.get $8 + i32.const 5 + i32.shr_u + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 1 + local.get $8 + i32.const 31 + i32.and + i32.shl + i32.xor + i32.store + local.get $0 + local.get $8 + i32.const 3 + i32.shl + i32.add + local.get $10 + f64.store + local.get $0 + local.get $9 + f64.store + end + local.get $8 + i32.const 1 + i32.shr_s + local.set $8 + br $while-continue|4 + end + end + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $for-loop|2 + end end local.get $4 - i32.load offset=8 + call $~lib/rt/tlsf/__free local.get $0 - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz + f64.load offset=8 + local.set $12 + local.get $0 + local.get $0 + f64.load + f64.store offset=8 + local.get $0 + local.get $12 + f64.store + ) + (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 0 i32.const 336 - i32.const 48 - i32.const 3 + i32.const 608 + i32.const 1304 + i32.const 64 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length local.get $0 - i32.eq - i32.eqz + 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 0 i32.const 336 - i32.const 49 - i32.const 3 + i32.const 608 + i32.const 291 + i32.const 45 call $~lib/builtins/abort unreachable end - i32.const 0 local.get $0 - call $~lib/typedarray/Uint16Array#constructor - local.set $5 - local.get $5 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz + 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 0 i32.const 336 - i32.const 52 - i32.const 3 + i32.const 608 + i32.const 280 + i32.const 45 call $~lib/builtins/abort unreachable end - local.get $5 - i32.load offset=8 local.get $0 - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz + 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 0 i32.const 336 - i32.const 53 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 54 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int32Array#constructor - local.set $6 - local.get $6 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 57 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 58 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - call $~lib/typedarray/Int32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 59 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint32Array#constructor - local.set $7 - local.get $7 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 62 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 63 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $7 - call $~lib/typedarray/Uint32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 64 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Int64Array#constructor - local.set $8 - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 67 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 68 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - call $~lib/typedarray/Int64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 69 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Uint64Array#constructor - local.set $9 - local.get $9 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 72 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 73 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $9 - call $~lib/typedarray/Uint64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 74 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float32Array#constructor - local.set $10 - local.get $10 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 77 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 78 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $10 - call $~lib/typedarray/Float32Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 79 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - local.get $0 - call $~lib/typedarray/Float64Array#constructor - local.set $11 - local.get $11 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 82 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - i32.load offset=8 - local.get $0 - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.mul - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 83 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $11 - call $~lib/typedarray/Float64Array#get:length - local.get $0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 84 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 675 - i32.const 64 + i32.const 608 + i32.const 35 + i32.const 45 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/Int32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 664 - 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 - i32.load + i32.store8 ) - (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float64Array#__set (param $0 i32) (param $1 i32) (param $2 f64) - local.get $1 - local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 1315 - i32.const 64 - call $~lib/builtins/abort - unreachable + 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.load offset=4 - local.get $1 i32.const 3 - i32.shl - i32.add - local.get $2 - f64.store - ) - (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - local.get $4 + i32.and i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/util/sort/insertionSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 i32) - (local $8 f64) - (local $9 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - local.get $3 - i32.const 1 - i32.sub - local.set $6 - block $while-break|1 - loop $while-continue|1 - local.get $6 - i32.const 0 - i32.ge_s - local.set $7 - local.get $7 - if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $8 - local.get $5 - local.get $8 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $0 - local.get $6 - local.tee $9 - i32.const 1 - i32.sub - local.set $6 - local.get $9 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $8 - f64.store - else - br $while-break|1 - end - br $while-continue|1 - end - end - end - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $2 - call $~lib/rt/pure/__release - ) - (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 272 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - ) - (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/__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 + i32.eq 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/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 i32) - (local $12 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 31 - i32.add - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - local.set $3 - local.get $3 - call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|0 - local.get $5 - i32.const 0 - i32.gt_s - local.set $6 - local.get $6 - if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 local.get $5 - local.set $7 - loop $while-continue|1 - local.get $7 - i32.const 1 - i32.and - local.get $4 - local.get $7 - i32.const 6 - i32.shr_u - i32.const 2 - i32.shl + 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 - local.get $7 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - local.set $8 - local.get $8 - if - local.get $7 - i32.const 1 - i32.shr_s - local.set $7 - br $while-continue|1 - end - end - local.get $7 - i32.const 1 - i32.shr_s - local.set $8 - local.get $0 - local.get $8 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $9 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $9 - local.get $10 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + i32.store + local.get $0 + i32.const 8 i32.add - local.get $4 - local.get $5 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl + local.get $1 + i32.const 8 i32.add i32.load - i32.const 1 - local.get $5 - i32.const 31 - i32.and - i32.shl - i32.xor i32.store local.get $0 - local.get $5 - i32.const 3 - i32.shl + i32.const 12 i32.add - local.get $9 - f64.store + 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 - local.get $8 - i32.const 3 - i32.shl + i32.const 16 i32.add - local.get $10 - f64.store + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 end - local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $for-loop|0 end - end - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $for-loop|2 - local.get $5 - i32.const 2 - i32.ge_s - local.set $6 - local.get $6 + local.get $2 + i32.const 8 + i32.and if local.get $0 - f64.load - local.set $10 + 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 - local.get $5 - i32.const 3 - i32.shl + i32.const 8 i32.add - f64.load - f64.store + 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 $5 - i32.const 3 - i32.shl + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 i32.add - local.get $10 - f64.store + 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 - local.set $8 - loop $while-continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_u - i32.const 2 - i32.shl - i32.add - i32.load - local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $7 - local.set $8 - br $while-continue|3 - end - end - loop $while-continue|4 - local.get $8 - i32.const 0 - i32.gt_s - local.set $11 - local.get $11 - if + i32.add + local.set $0 + local.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 - f64.load - local.set $10 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 local.get $0 - local.get $8 - i32.const 3 - i32.shl + local.tee $5 + i32.const 1 i32.add - f64.load - local.set $9 - local.get $10 - local.get $9 - i32.const 2 - global.set $~argumentsLength + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + 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.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + 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 $4 - local.get $8 - i32.const 5 - i32.shr_u + 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 - local.get $8 - i32.const 5 + i32.const 16 i32.shr_u - i32.const 2 + local.get $3 + i32.const 16 i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 i32.add i32.load - i32.const 1 - local.get $8 - i32.const 31 - i32.and + 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.xor + i32.or i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 local.get $0 - local.get $8 - i32.const 3 + 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.get $10 - f64.store + local.set $1 local.get $0 - local.get $9 - f64.store + 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.get $8 - i32.const 1 - i32.shr_s - local.set $8 - br $while-continue|4 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 $5 - br $for-loop|2 + 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 $4 - call $~lib/rt/tlsf/__free - local.get $0 - f64.load offset=8 - local.set $12 - local.get $0 - local.get $0 - f64.load - f64.store offset=8 - local.get $0 - local.get $12 - f64.store local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#sort (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 f64) - (local $7 f64) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + i32.const 16 + i32.and + if local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $4 + local.tee $5 i32.const 1 - i32.le_s - if - local.get $3 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.eq - if - local.get $5 - f64.load offset=8 - local.set $6 - local.get $5 - f64.load - local.set $7 - local.get $6 - local.get $7 - i32.const 2 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s - if - local.get $5 - local.get $7 - f64.store offset=8 - local.get $5 - local.get $6 - f64.store - end - local.get $3 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 - end + i32.add + local.set $1 local.get $5 - local.set $10 - local.get $4 - local.set $9 - local.get $2 - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - drop - local.get $9 - i32.const 256 - i32.lt_s - if - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/insertionSort - else - local.get $10 - local.get $9 - local.get $8 - call $~lib/util/sort/weakHeapSort - end - local.get $8 - call $~lib/rt/pure/__release - local.get $3 - local.set $10 - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - end - local.set $5 - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - ) - (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#sort@varargs (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength - br_table $0of1 $1of1 $outOfRange - end - unreachable - end - 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 528 - call $~lib/rt/pure/__retain - br $~lib/util/sort/COMPARATOR|inlined.0 - end - local.tee $2 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add local.set $1 - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array#sort - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (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 400 - i32.const 464 - i32.const 1304 - 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 400 - i32.const 464 - i32.const 291 - 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 400 - i32.const 464 - i32.const 280 - 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 400 - i32.const 464 - i32.const 35 - 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 - call $~lib/rt/pure/__retain - 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.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - local.tee $10 - i32.const 0 - local.tee $11 - local.get $10 - local.get $11 - i32.gt_s - select - else + local.set $0 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 + local.get $1 + local.tee $5 + i32.const 1 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.set $1 local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 i32.add - local.get $6 - local.get $4 + local.set $0 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 $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 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 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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 $0 - i32.const 3 + local.get $2 + i32.const 8 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 $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.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 - i32.const 8 - i32.and + local.set $3 + local.get $5 + local.get $4 + i32.eq 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 + br $~lib/util/memory/memmove|inlined.0 end - local.get $2 - i32.const 4 - i32.and + 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 $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 + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 end - local.get $2 - i32.const 2 - i32.and + local.get $5 + local.get $4 + i32.lt_u 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 0 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 + i32.lt_s + drop + local.get $4 + i32.const 7 + i32.and 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 + 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.eq - br_if $case0|2 + 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 - i32.const 2 - i32.eq - br_if $case1|2 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 local.get $5 - i32.const 3 - i32.eq - br_if $case2|2 - br $break|2 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 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 + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 + local.tee $7 i32.const 1 i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 + local.set $5 + local.get $7 + local.get $4 + local.tee $7 i32.const 1 i32.add - local.set $1 - local.get $5 + local.set $4 + local.get $7 i32.load8_u i32.store8 - local.get $0 - local.tee $5 + local.get $3 i32.const 1 - i32.add - local.set $0 + 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 $1 - local.tee $5 - i32.const 1 + local.get $3 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 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz 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 + 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 - 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 + local.get $3 + i32.const 8 i32.ge_u - local.set $5 - local.get $5 + local.set $6 + local.get $6 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 + i32.sub local.set $3 - local.get $0 - i32.const 12 + local.get $5 + local.get $3 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 + i64.load + i64.store 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 + local.get $3 + local.set $6 + local.get $6 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 $5 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.const 1 + i32.sub + local.tee $3 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 + i32.load8_u + i32.store8 br $while-continue|5 end end - br $break|2 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 - i32.const 16 - i32.and if + local.get $3 + local.get $2 local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 + call $~lib/memory/memory.copy + end + local.get $3 + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Int8Array#__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 24 + i32.const 45 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_s + ) + (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_s + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (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 $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 $1 + local.get $0 + i32.load offset=8 + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 163 + 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 8 - i32.and + i32.store8 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~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/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + 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 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - i32.load8_u - i32.store8 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.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 419 + 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.const 4 - i32.and + i32.store16 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~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/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 1 + 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 547 + 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 $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~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/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + local.get $1 + local.get $0 + i32.load offset=8 i32.const 2 - i32.and + 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 + i32.const 336 + i32.const 608 + i32.const 803 + 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.const 1 - i32.and + i32.store + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~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/Int64Array#__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 - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.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 931 + 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/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 $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/rt/__newBuffer (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (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 336 + i32.const 608 + i32.const 1059 + i32.const 64 + call $~lib/builtins/abort + unreachable + end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__new - local.set $3 + i32.const 3 + i32.shl + i32.add local.get $2 + i64.store + ) + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>~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/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) + local.get $1 + local.get $0 + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u if - local.get $3 - local.get $2 - local.get $0 - call $~lib/memory/memory.copy + i32.const 336 + i32.const 608 + i32.const 1187 + i32.const 64 + call $~lib/builtins/abort + unreachable end - local.get $3 - ) - (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) - i32.const 16 - local.get $2 - call $~lib/rt/pure/__new - local.set $4 local.get $0 + i32.load offset=4 local.get $1 + i32.const 2 i32.shl - local.set $5 - local.get $5 - i32.const 0 - local.get $3 - call $~lib/rt/__newBuffer - local.set $6 - local.get $4 - local.get $6 - call $~lib/rt/pure/__retain - i32.store - local.get $4 - local.get $6 - i32.store offset=4 - local.get $4 - local.get $5 - i32.store offset=8 - local.get $4 + i32.add + local.get $2 + f32.store + ) + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) local.get $0 - i32.store offset=12 - local.get $4 + local.get $1 + f32.add ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) local.get $0 - i32.load offset=12 + local.get $1 + f64.add ) - (func $~lib/typedarray/Int8Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) + local.get $0 + local.get $1 + i64.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) + local.get $0 + local.get $1 + f32.add + ) + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) + local.get $0 + local.get $1 + f64.add + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $~lib/typedarray/Uint8Array#__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 400 - i32.const 464 - i32.const 24 + i32.const 336 + i32.const 608 + i32.const 152 i32.const 45 call $~lib/builtins/abort unreachable @@ -5317,7641 +4997,6759 @@ i32.load offset=4 local.get $1 i32.add - i32.load8_s + i32.load8_u ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (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 336 + i32.const 608 + i32.const 408 + i32.const 64 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 local.get $1 - i32.const 0 + i32.const 1 i32.shl i32.add - i32.load8_s + i32.load16_s ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 - i32.load offset=12 + i32.load offset=8 + i32.const 1 + i32.shr_u i32.ge_u if - i32.const 400 - i32.const 592 - i32.const 104 - i32.const 42 + i32.const 336 + i32.const 608 + i32.const 536 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.const 1 + i32.shl + i32.add + i32.load16_u ) - (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result 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 - call $~lib/typedarray/Int8Array#get:length + i32.mul + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) local.get $1 - call $~lib/array/Array#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return - end - i32.const 0 - local.set $2 local.get $0 - call $~lib/typedarray/Int8Array#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 - call $~lib/typedarray/Int8Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|0 - end + i32.load offset=8 + i32.const 2 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 792 + i32.const 64 + call $~lib/builtins/abort + unreachable end - i32.const 1 - local.set $3 local.get $0 - call $~lib/rt/pure/__release + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__release - local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load ) - (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.get $0 + i64.mul + ) + (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 + local.get $0 + i32.load offset=8 i32.const 3 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 + i32.shr_u + i32.ge_u + if + i32.const 336 + i32.const 608 + i32.const 920 + i32.const 64 + call $~lib/builtins/abort + unreachable + end + local.get $0 i32.load offset=4 - local.get $4 - i32.const 0 + local.get $1 + i32.const 3 i32.shl i32.add - i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + i64.load ) - (func $~lib/typedarray/Int32Array#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) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) local.get $0 - call $~lib/rt/pure/__retain - 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/Int32Array#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 4 - i32.const 1 - i32.eq - drop - loop $for-loop|0 - local.get $5 - local.get $4 - i32.lt_s - local.set $11 - local.get $11 - if - local.get $8 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - local.get $7 - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.load offset=12 + i64.mul ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) + 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 1048 + i32.const 64 + call $~lib/builtins/abort + unreachable + end local.get $0 i32.load offset=4 local.get $1 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load + i64.load ) - (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) + local.get $0 + local.get $0 + f32.mul + ) + (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) local.get $1 local.get $0 - i32.load offset=12 + i32.load offset=8 + i32.const 2 + i32.shr_u i32.ge_u if - i32.const 400 - i32.const 592 - i32.const 104 - i32.const 42 + i32.const 336 + i32.const 608 + i32.const 1176 + i32.const 64 call $~lib/builtins/abort unreachable end local.get $0 + i32.load offset=4 local.get $1 - call $~lib/array/Array#__uget - local.set $2 - i32.const 0 - drop - local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load ) - (func $std/typedarray/isInt32ArrayEqual (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) + local.get $0 + local.get $0 + f64.mul + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.gt_s + ) + (func $~lib/rt/itcms/__renew (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 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 - call $~lib/typedarray/Int32Array#get:length + i32.const 20 + i32.sub + local.set $2 local.get $1 - call $~lib/array/Array#get:length - i32.ne + local.get $2 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:rtSize + local.get $0 return end - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#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 - call $~lib/typedarray/Int32Array#__get - local.get $1 - local.get $2 - call $~lib/array/Array#__get - i32.ne - if - i32.const 0 - local.set $5 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - 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 $3 - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + local.get $2 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.set $3 local.get $3 - ) - (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - local.set $4 + local.tee $4 local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $4 - local.get $6 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $6 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $3 + i32.load offset=16 + local.tee $5 local.get $4 - i32.sub - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $6 - i32.const 0 - local.get $6 - call $~lib/typedarray/Int32Array#constructor - local.tee $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $8 - i32.load offset=4 local.get $5 - i32.load offset=4 - local.get $4 + i32.lt_u + select + call $~lib/memory/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) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 i32.shl - i32.add - local.get $6 + i32.const 16 + i32.shr_s + i32.const 2 + i32.gt_s + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.gt_s + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 2 + i32.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_s + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.gt_u + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.gt + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.gt + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 i32.shl - call $~lib/memory/memory.copy - local.get $8 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $9 + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq ) - (func $~lib/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 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) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $7 - local.get $1 - local.set $6 - local.get $2 - local.set $5 - local.get $3 - local.set $4 - local.get $7 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - local.get $7 - i32.load offset=4 - local.set $9 - local.get $4 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - local.set $4 - local.get $6 - i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $6 - i32.add - local.tee $11 - i32.const 0 - local.tee $10 - local.get $11 - local.get $10 - i32.gt_s - select - else - local.get $6 - local.tee $10 - local.get $8 - local.tee $11 - local.get $10 - local.get $11 - i32.lt_s - select - end - local.set $10 - local.get $5 - i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $5 - i32.add - local.tee $11 - i32.const 0 - local.tee $12 - local.get $11 - local.get $12 - i32.gt_s - select - else - local.get $5 - local.tee $12 - local.get $8 - local.tee $11 - local.get $12 - local.get $11 - i32.lt_s - select - end - local.set $12 - local.get $4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 0 - i32.lt_s - if (result i32) - local.get $8 - local.get $4 - i32.add - local.tee $11 - i32.const 0 - local.tee $13 - local.get $11 - local.get $13 - i32.gt_s - select - else - local.get $4 - local.tee $13 - local.get $8 - local.tee $11 - local.get $13 - local.get $11 - i32.lt_s - select - end - local.set $13 - local.get $13 - local.get $12 - i32.sub - local.tee $11 - local.get $8 - local.get $10 - i32.sub - local.tee $14 - local.get $11 - local.get $14 - i32.lt_s - select - local.set $11 - local.get $9 - local.get $10 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and i32.const 2 - i32.shl - i32.add - local.get $9 - local.get $12 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 0 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 i32.shl - i32.add - local.get $11 + i32.const 16 + i32.shr_s i32.const 2 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 i32.shl - call $~lib/memory/memory.copy - local.get $7 + i32.const 16 + i32.shr_s + i32.const 0 + i32.eq ) - (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 $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.const 65535 + i32.and + i32.const 2 + i32.eq ) - (func $~lib/typedarray/Int8Array#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 + i32.const 65535 + i32.and i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 + i32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 0 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1728 + i32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 0 - call $~lib/typedarray/Int8Array#reduce - local.set $2 - local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 6 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i64.const 2 + i64.eq ) - (func $~lib/typedarray/Uint8Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 163 - i32.const 45 - call $~lib/builtins/abort - unreachable - end + i64.const 0 + i64.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.add - local.get $2 - i32.store8 + i64.const 2 + i64.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i64.const 0 + i64.eq ) - (func $~lib/typedarray/Uint8Array#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 + f32.const 2 + f32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 0 + f32.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.eq + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 0 + f64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1760 - i32.const 0 - call $~lib/typedarray/Uint8Array#reduce - local.set $2 - local.get $2 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 255 i32.and - i32.const 6 + i32.const 4 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.const 255 + i32.and + i32.const 2 + i32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.const 255 + i32.and + i32.const 4 + i32.eq ) - (func $~lib/typedarray/Uint8ClampedArray#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1792 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduce - local.set $2 - local.get $2 - i32.const 255 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 i32.and - i32.const 6 + i32.const 4 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.const 2 + i32.eq ) - (func $~lib/typedarray/Int16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 419 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.const 4 + i32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~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 1 - i32.shl - i32.add - local.get $2 - i32.store16 + i32.const 2 + i32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.const 4 + i32.eq ) - (func $~lib/typedarray/Int16Array#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 + i64.const 2 + i64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 4 + i64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 4 + i64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 2 + f32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f32.const 4 + f32.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 2 + f64.eq + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + f64.const 4 + f64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.rem_s i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $8 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 + i32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.rem_u i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 2 + i32.rem_u i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1824 + i32.rem_s i32.const 0 - call $~lib/typedarray/Int16Array#reduce - local.set $2 - local.get $2 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 i32.const 16 i32.shl i32.const 16 i32.shr_s - i32.const 6 + i32.const 2 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.const 65535 + i32.and + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq ) - (func $~lib/typedarray/Uint16Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 547 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.const 65535 + i32.and + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~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 1 - i32.shl - i32.add - local.get $2 - i32.store16 + i32.const 2 + i32.rem_s + i32.const 0 + i32.eq ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + i32.const 2 + i32.eq ) - (func $~lib/typedarray/Uint16Array#reduce (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.rem_u + i32.const 0 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 2 + i32.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.rem_s + i64.const 0 + i64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.rem_u + i64.const 0 + i64.eq + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i64.const 2 + i64.eq + ) + (func $~lib/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) + (local $8 f32) (local $9 i32) + (local $10 i32) + (local $11 i32) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + f32.abs + f32.const 1 + f32.eq + if + local.get $0 + local.get $0 + f32.trunc + f32.sub + local.get $0 + f32.copysign + return + end local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + i32.reinterpret_f32 + local.set $2 local.get $1 - call $~lib/rt/pure/__retain + i32.reinterpret_f32 + local.set $3 + local.get $2 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and local.set $4 + local.get $3 + i32.const 23 + i32.shr_u + i32.const 255 + i32.and + local.set $5 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 + i32.const -2147483648 + i32.and local.set $6 - i32.const 0 + local.get $3 + i32.const 1 + i32.shl local.set $7 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $4 + i32.const 255 + i32.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + local.get $1 + f32.ne + end + if + local.get $0 + local.get $1 + f32.mul + local.set $8 local.get $8 - i32.lt_s - local.set $9 + local.get $8 + f32.div + return + end + local.get $2 + i32.const 1 + i32.shl + local.set $9 + local.get $9 + local.get $7 + i32.le_u + if + local.get $0 local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $7 + i32.ne + f32.convert_i32_u + f32.mul + return end - local.get $3 - local.set $8 local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1856 - i32.const 0 - call $~lib/typedarray/Uint16Array#reduce - local.set $2 - local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $2 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $4 + local.get $2 + i32.const 1 + local.get $4 + i32.sub + i32.shl + local.set $2 + else + local.get $2 + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $2 + local.get $2 + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $2 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 + i32.eqz + if + local.get $5 + local.get $3 + i32.const 9 + i32.shl + i32.clz + i32.sub + local.set $5 + local.get $3 + i32.const 1 + local.get $5 + i32.sub + i32.shl + local.set $3 + else + local.get $3 + i32.const -1 + i32.const 9 + i32.shr_u + i32.and + local.set $3 + local.get $3 + i32.const 1 + i32.const 23 + i32.shl + i32.or + local.set $3 + end + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + local.set $10 + local.get $10 if + local.get $2 local.get $3 - local.get $6 - local.get $7 - i32.const 2 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + f32.const 0 + local.get $0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $2 + i32.const 1 i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength + local.set $2 local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + i32.sub + local.set $4 + br $while-continue|0 end end + local.get $2 local.get $3 - local.set $8 + i32.ge_u + if + local.get $2 + local.get $3 + i32.eq + if + f32.const 0 + local.get $0 + f32.mul + return + end + local.get $2 + local.get $3 + i32.sub + local.set $2 + end + local.get $2 + i32.const 8 + i32.shl + i32.clz + local.set $11 local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1888 - i32.const 0 - call $~lib/typedarray/Int32Array#reduce - local.set $2 + local.get $11 + i32.sub + local.set $4 local.get $2 - i32.const 6 - i32.eq - i32.eqz + local.get $11 + i32.shl + local.set $2 + local.get $4 + i32.const 0 + i32.gt_s if + local.get $2 + i32.const 1 + i32.const 23 + i32.shl + i32.sub + local.set $2 + local.get $2 + local.get $4 + i32.const 23 + i32.shl + i32.or + local.set $2 + else + local.get $2 i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + i32.sub + i32.const 1 + i32.add + i32.shr_u + local.set $2 end + local.get $2 + local.get $6 + i32.or + f32.reinterpret_i32 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + f32.const 2 + call $~lib/math/NativeMathf.mod + f32.const 0 + f32.eq ) - (func $~lib/typedarray/Uint32Array#__set (param $0 i32) (param $1 i32) (param $2 i32) - local.get $1 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u + f32.const 2 + f32.eq + ) + (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 f64) + (local $9 i64) + (local $10 i32) + (local $11 i64) + local.get $1 + f64.abs + f64.const 1 + f64.eq if - i32.const 400 - i32.const 464 - i32.const 803 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $0 + f64.trunc + f64.sub + local.get $0 + f64.copysign + return end local.get $0 - i32.load offset=4 + i64.reinterpret_f64 + local.set $2 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain + i64.reinterpret_f64 local.set $3 - local.get $0 - local.get $1 - i32.add + local.get $2 + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and local.set $4 local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#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 $8 i32) - (local $9 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain + i64.const 52 + i64.shr_u + i64.const 2047 + i64.and local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 + i64.const 63 + i64.shr_u local.set $6 - i32.const 0 + local.get $3 + i64.const 1 + i64.shl local.set $7 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 + local.get $7 + i64.const 0 + i64.eq + if (result i32) + i32.const 1 + else + local.get $4 + i64.const 2047 + i64.eq + end + if (result i32) + i32.const 1 + else + local.get $1 + local.get $1 + f64.ne + end + if + local.get $0 + local.get $1 + f64.mul + local.set $8 local.get $8 - i32.lt_s - local.set $9 + local.get $8 + f64.div + return + end + local.get $2 + i64.const 1 + i64.shl + local.set $9 + local.get $9 + local.get $7 + i64.le_u + if + local.get $0 local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end + local.get $7 + i64.ne + f64.convert_i32_u + f64.mul + return end - local.get $3 - local.set $8 local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1920 - i32.const 0 - call $~lib/typedarray/Uint32Array#reduce - local.set $2 - local.get $2 - i32.const 6 - i32.eq + i64.const 0 + i64.ne i32.eqz if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $2 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $4 + local.get $2 + i64.const 1 + local.get $4 + i64.sub + i64.shl + local.set $2 + else + local.get $2 + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $2 + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $2 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#__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 + local.get $5 + i64.const 0 + i64.ne + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 931 - i32.const 64 - call $~lib/builtins/abort - unreachable + local.get $5 + local.get $3 + i64.const 12 + i64.shl + i64.clz + i64.sub + local.set $5 + local.get $3 + i64.const 1 + local.get $5 + i64.sub + i64.shl + local.set $3 + else + local.get $3 + i64.const -1 + i64.const 12 + i64.shr_u + i64.and + local.set $3 + local.get $3 + i64.const 1 + i64.const 52 + i64.shl + i64.or + local.set $3 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 $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + local.set $10 + local.get $10 if + local.get $2 local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength + i64.ge_u + if + local.get $2 + local.get $3 + i64.eq + if + f64.const 0 + local.get $0 + f64.mul + return + end + local.get $2 + local.get $3 + i64.sub + local.set $2 + end + local.get $2 + i64.const 1 + i64.shl + local.set $2 local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 + i64.const 1 + i64.sub + local.set $4 + br $while-continue|0 end end + local.get $2 local.get $3 - local.set $10 + i64.ge_u + if + local.get $2 + local.get $3 + i64.eq + if + f64.const 0 + local.get $0 + f64.mul + return + end + local.get $2 + local.get $3 + i64.sub + local.set $2 + end + local.get $2 + i64.const 11 + i64.shl + i64.clz + local.set $11 local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1952 - i64.const 0 - call $~lib/typedarray/Int64Array#reduce - local.set $2 + local.get $11 + i64.sub + local.set $4 local.get $2 - i64.const 6 - i64.eq - i32.eqz + local.get $11 + i64.shl + local.set $2 + local.get $4 + i64.const 0 + i64.gt_s if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + i64.const 1 + i64.const 52 + i64.shl + i64.sub + local.set $2 + local.get $2 + local.get $4 + i64.const 52 + i64.shl + i64.or + local.set $2 + else + local.get $2 + i64.const 0 + local.get $4 + i64.sub + i64.const 1 + i64.add + i64.shr_u + local.set $2 end + local.get $2 + local.get $6 + i64.const 63 + i64.shl + i64.or + f64.reinterpret_i64 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + f64.const 2 + call $~lib/math/NativeMath.mod + f64.const 0 + f64.eq ) - (func $~lib/typedarray/Uint64Array#__set (param $0 i32) (param $1 i32) (param $2 i64) - local.get $1 + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u + f64.const 2 + f64.eq + ) + (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) + local.get $0 + i32.const 100000 + i32.lt_u if - i32.const 400 - i32.const 464 - i32.const 1059 - i32.const 64 - call $~lib/builtins/abort + 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 - 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/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + unreachable ) - (func $~lib/typedarray/Uint64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) + (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 $10 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 + (local $8 i64) + (local $9 i64) + (local $10 i32) + (local $11 i32) + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $3 + local.get $3 if - local.get $3 + 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 6284 local.get $6 - local.get $7 - i32.const 3 + i32.const 2 i32.shl i32.add - i64.load + i64.load32_u + local.set $8 + i32.const 6284 local.get $7 - local.get $5 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $9 + local.get $2 i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 + i32.sub + local.set $2 + local.get $0 + local.get $2 i32.const 1 + i32.shl i32.add - local.set $7 - br $for-loop|0 + local.get $8 + local.get $9 + i64.const 32 + i64.shl + i64.or + i64.store + br $while-continue|0 end end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1984 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduce - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 323 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__set (param $0 i32) (param $1 i32) (param $2 f32) local.get $1 - local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u + i32.const 100 i32.ge_u if - i32.const 400 - i32.const 464 - i32.const 1187 - i32.const 64 - call $~lib/builtins/abort - unreachable + 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 6284 + 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 $0 - i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - local.get $2 - f32.store + i32.const 10 + i32.ge_u + if + local.get $2 + i32.const 2 + i32.sub + local.set $2 + i32.const 6284 + 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 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 + (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 6704 + 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 6704 + local.get $1 + i32.wrap_i64 + i32.const 6 + i32.shl + i32.add + i32.load16_u + i32.store16 + end ) - (func $~lib/typedarray/Float32Array#reduce (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 f32) - (local $4 i32) + (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 $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + 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 $5 - i32.load offset=4 - local.set $6 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 + 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 $7 i32) + 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-continue|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 7760 + local.get $1 local.get $6 - local.get $7 - i32.const 2 + i64.and + i32.wrap_i64 + i32.const 1 i32.shl i32.add - f32.load - local.get $7 + i32.load16_u + i32.store16 + local.get $1 local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $3 + i64.shr_u + local.set $1 + local.get $1 + i64.const 0 + i64.ne + local.set $7 local.get $7 + br_if $do-continue|0 + end + else + loop $do-continue|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 7760 + 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 local.set $7 - br $for-loop|0 + local.get $7 + br_if $do-continue|1 end end - local.get $3 - local.set $10 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 ) - (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 f32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + (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/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 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 + local.set $2 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + drop local.get $1 - i32.const 2016 - f32.const 0 - call $~lib/typedarray/Float32Array#reduce + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 0 + i32.lt_s local.set $2 local.get $2 - f32.const 6 - f32.eq - i32.eqz if i32.const 0 - i32.const 336 - i32.const 323 - 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 - local.get $0 - call $~lib/rt/pure/__release + 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 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) + i32.const 24 + i32.shl + i32.const 24 + i32.shr_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.const 24 + i32.shl + i32.const 24 + i32.shr_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 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/util/number/decimalCount32 + i32.add local.set $3 local.get $0 + local.set $6 local.get $1 - f64.add - local.set $4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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/Float64Array#reduce (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 f64) - (local $4 i32) + (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 $10 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.const 1 + i32.shl + i32.add + local.set $5 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add local.set $6 i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $8 - loop $for-loop|0 - local.get $7 - local.get $8 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $3 - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $10 + i32.const 2 + i32.lt_s + drop local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + 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-continue|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 + local.set $7 + local.get $7 + br_if $do-continue|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 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 f64) + (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 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $2 + i32.const 0 + drop i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set + i32.le_s + drop + i32.const 0 + drop local.get $1 - i32.const 2048 - f64.const 0 - call $~lib/typedarray/Float64Array#reduce - local.set $2 - local.get $2 - f64.const 6 - f64.eq - i32.eqz + i32.const 255 + i32.and + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 336 - i32.const 323 - 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 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + local.get $2 + local.set $3 + i32.const 1 + i32.const 4 + i32.le_u + drop local.get $3 - call $~lib/rt/pure/__retain + 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.add - local.set $4 + i32.const 255 + i32.and + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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/Int8Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + i32.const 0 + local.set $2 + i32.const 1 + drop local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 0 + i32.lt_s + local.set $2 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + if i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end + local.get $1 + i32.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 + i32.le_s + drop i32.const 1 + drop i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set + i32.const 4 + i32.le_u + drop local.get $1 - i32.const 2080 - i32.const 0 - call $~lib/typedarray/Int8Array#reduceRight - local.set $2 - local.get $2 - i32.const 24 + i32.const 16 i32.shl - i32.const 24 + i32.const 16 i32.shr_s - i32.const 6 - i32.eq - i32.eqz + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - 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 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 48 + i32.or + i32.store16 + i32.const 1 + local.get $2 + i32.add + return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + local.get $2 + local.set $3 + i32.const 2 + i32.const 4 + i32.le_u + drop local.get $3 - call $~lib/rt/pure/__retain + local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/util/number/decimalCount32 + i32.add local.set $3 local.get $0 + local.set $6 local.get $1 - i32.add - local.set $4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $2 + i32.const 0 + drop i32.const 0 i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2112 + i32.le_s + drop i32.const 0 - call $~lib/typedarray/Uint8Array#reduceRight - local.set $2 - local.get $2 - i32.const 255 + drop + local.get $1 + i32.const 65535 i32.and - i32.const 6 - i32.eq - i32.eqz + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - 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 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + local.get $2 + local.set $3 + i32.const 2 + i32.const 4 + i32.le_u + drop local.get $3 - call $~lib/rt/pure/__retain + 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.add - local.set $4 + i32.const 65535 + i32.and + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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/Uint8ClampedArray#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + i32.const 0 + local.set $2 + i32.const 1 + drop local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.const 0 + i32.lt_s + local.set $2 local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + if i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end + local.get $1 + i32.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + i32.le_s + drop i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set + drop + i32.const 4 + i32.const 4 + i32.le_u + drop local.get $1 - i32.const 2144 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#reduceRight - local.set $2 - local.get $2 - i32.const 255 - i32.and - i32.const 6 - i32.eq - i32.eqz + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - 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 + i32.or + i32.store16 + i32.const 1 + local.get $2 + i32.add + return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + local.get $2 + local.set $3 + i32.const 4 + i32.const 4 + i32.le_u + drop local.get $3 - call $~lib/rt/pure/__retain + local.get $1 + call $~lib/util/number/decimalCount32 + i32.add local.set $3 local.get $0 + local.set $6 local.get $1 - i32.add - local.set $4 + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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/Int16Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $2 + i32.const 0 + drop i32.const 0 i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2176 + i32.le_s + drop i32.const 0 - call $~lib/typedarray/Int16Array#reduceRight - local.set $2 - local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 6 - i32.eq - i32.eqz + drop + local.get $1 + i32.const 10 + i32.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i32.const 48 + i32.or + i32.store16 + i32.const 1 + return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) + local.get $2 + local.set $3 + i32.const 4 + i32.const 4 + i32.le_u + drop local.get $3 - call $~lib/rt/pure/__retain + local.get $1 + call $~lib/util/number/decimalCount32 + i32.add local.set $3 local.get $0 + local.set $6 local.get $1 - i32.add - local.set $4 + local.set $5 local.get $3 - call $~lib/rt/pure/__release + 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/Uint16Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (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 i32) + (local $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 + (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 $3 + 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 1 + i32.const 100 + i32.div_u + local.set $10 + local.get $7 + i32.const 100 + i32.rem_u + local.set $11 + i32.const 6284 + local.get $10 + i32.const 2 i32.shl i32.add - i32.load16_u - local.get $7 - local.get $5 + i64.load32_u + local.set $12 + i32.const 6284 + local.get $11 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $13 + local.get $2 i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 + 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 6284 + local.get $8 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.set $12 + i32.const 6284 + 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 $7 - br $for-loop|0 + 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 $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $6 + i32.wrap_i64 + local.get $2 + call $~lib/util/number/utoa32_dec_lut ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + local.set $2 i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set + drop local.get $1 - i32.const 2208 - i32.const 0 - call $~lib/typedarray/Uint16Array#reduceRight + i64.const 0 + i64.lt_s local.set $2 local.get $2 - i32.const 65535 - i32.and - i32.const 6 - i32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#reduceRight (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 $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end + i64.const 0 + local.get $1 + i64.sub + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 + i32.le_s + drop i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set + drop + i32.const 8 + i32.const 4 + i32.le_u + drop local.get $1 - i32.const 2240 - i32.const 0 - call $~lib/typedarray/Int32Array#reduceRight - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + local.get $2 + i32.add + return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint32Array#reduceRight (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 $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + 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 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i32_i32_i32_i32_=>_i32) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end + local.get $5 + call $~lib/util/number/utoa64_dec_lut end local.get $3 - local.set $7 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $7 - local.set $6 - local.get $1 - call $~lib/rt/pure/__release - local.get $6 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) + (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $2 + i32.const 0 + drop i32.const 0 i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2272 + i32.le_s + drop i32.const 0 - call $~lib/typedarray/Uint32Array#reduceRight - local.set $2 - local.get $2 - i32.const 6 - i32.eq - i32.eqz + drop + local.get $1 + i64.const 10 + i64.lt_u if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $0 + local.get $1 + i64.const 48 + i64.or + i64.store16 + i32.const 1 + return end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - i64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + 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 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end + local.get $5 + call $~lib/util/number/utoa64_dec_lut end local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + (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 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 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2304 - i64.const 0 - call $~lib/typedarray/Int64Array#reduceRight - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i64) (param $2 i32) (param $3 i32) (result i64) - (local $4 i64) + 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 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 local.get $1 - i64.add - local.set $4 + i64.sub + local.set $10 local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) - (local $3 i64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + 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 $13 i32.const 0 - i32.ge_s - local.set $8 - local.get $8 + i32.gt_s + local.set $15 + local.get $15 if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - i64.load + 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 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $i64_i64_i32_i32_=>_i64) - local.set $3 + 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 9008 + 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 $7 - br $for-loop|0 + 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 9008 + 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 $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 + 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 - call $~lib/rt/pure/__release local.get $3 - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2336 - i64.const 0 - call $~lib/typedarray/Uint64Array#reduceRight - local.set $2 - local.get $2 - i64.const 6 - i64.eq - i32.eqz - if + i32.le_s + if (result i32) + local.get $3 + i32.const 21 + i32.le_s + else i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 f32) (param $2 i32) (param $3 i32) (result f32) - (local $4 f32) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f32.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float32Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f32) (result f32) - (local $3 f32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - local.get $5 - i32.load offset=4 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $for-loop|0 - local.get $7 + 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.ge_s - local.set $8 - local.get $8 + 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 - local.get $6 - local.get $7 - i32.const 2 + i32.const 1 i32.shl i32.add - f32.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength + local.set $4 local.get $4 - i32.load - call_indirect (type $f32_f32_i32_i32_=>_f32) - local.set $3 - local.get $7 - i32.const 1 + i32.const 2 + i32.add + local.get $4 + i32.const 0 + local.get $2 i32.sub - local.set $7 - br $for-loop|0 + 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 - local.get $3 - local.set $9 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 + unreachable ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 f32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + (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 - i32.const 2368 - f32.const 0 - call $~lib/typedarray/Float32Array#reduceRight + f64.const 0 + f64.lt local.set $2 local.get $2 - f32.const 6 - f32.eq - i32.eqz if - i32.const 0 - i32.const 336 - i32.const 344 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + f64.neg + local.set $1 + local.get $0 + i32.const 45 + i32.store16 end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 f64) (param $2 i32) (param $3 i32) (result f64) - (local $4 f64) - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - local.get $1 - f64.add - local.set $4 - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f64) (result f64) - (local $3 f64) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 f64) local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain local.set $5 - local.get $1 - call $~lib/rt/pure/__retain + local.get $0 local.set $4 local.get $2 local.set $3 local.get $5 - i32.load offset=4 + i64.reinterpret_f64 local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length + 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 - loop $for-loop|0 - local.get $7 - i32.const 0 - i32.ge_s - local.set $8 - local.get $8 - if - local.get $3 - local.get $6 - local.get $7 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $7 - local.get $5 - i32.const 4 - global.set $~argumentsLength - local.get $4 - i32.load - call_indirect (type $f64_f64_i32_i32_=>_f64) - local.set $3 - local.get $7 - i32.const 1 - i32.sub - local.set $7 - br $for-loop|0 - end - end - local.get $3 + 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 8136 + local.get $14 + i32.const 3 + i32.shl + i32.add + i64.load + global.set $~lib/util/number/_frc_pow + i32.const 8832 + 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 $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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 $3 - local.get $1 - call $~lib/rt/pure/__release + 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 $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 f64) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set + (func $~lib/util/number/dtoa_buffered (param $0 i32) (param $1 f64) (result i32) + (local $2 i32) local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set + 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 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 2400 + f64.sub f64.const 0 - call $~lib/typedarray/Float64Array#reduceRight - local.set $2 - local.get $2 - f64.const 6 f64.eq i32.eqz if - i32.const 0 - i32.const 336 - i32.const 344 - 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 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + call $~lib/util/number/dtoa_core ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end local.get $0 - i32.mul - local.set $3 + local.get $1 local.get $2 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/typedarray/Uint8Array.wrap ) - (func $~lib/typedarray/Int8Array#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) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/typedarray/Int8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 + local.get $2 + call $~lib/typedarray/Int8Array.wrap + ) + (func $~lib/typedarray/Uint8ClampedArray.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + local.set $1 end + i32.const -1 + local.set $2 end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray.wrap ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set + (func $~lib/typedarray/Int16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end + local.get $0 local.get $1 - i32.const 2432 - call $~lib/typedarray/Int8Array#map - local.set $2 local.get $2 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Int16Array.wrap + ) + (func $~lib/typedarray/Uint16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 end + local.get $0 + local.get $1 local.get $2 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Uint16Array.wrap + ) + (func $~lib/typedarray/Int32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 end + local.get $0 + local.get $1 local.get $2 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/typedarray/Int32Array.wrap + ) + (func $~lib/typedarray/Uint32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 end local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/pure/__release + call $~lib/typedarray/Uint32Array.wrap ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 + (func $~lib/typedarray/Int64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end local.get $0 - i32.mul - local.set $3 + local.get $1 local.get $2 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/typedarray/Int64Array.wrap ) - (func $~lib/typedarray/Uint8Array#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) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/typedarray/Uint64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 + local.get $2 + call $~lib/typedarray/Uint64Array.wrap + ) + (func $~lib/typedarray/Float32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + local.set $1 end + i32.const -1 + local.set $2 end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 + local.get $0 + local.get $1 local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 + call $~lib/typedarray/Float32Array.wrap + ) + (func $~lib/typedarray/Float64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + block $2of2 + block $1of2 + block $0of2 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of2 $1of2 $2of2 $outOfRange + end + unreachable + end + i32.const 0 + local.set $1 + end + i32.const -1 + local.set $2 + end + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + local.get $2 + call $~lib/typedarray/Float64Array.wrap ) - (func $~lib/typedarray/Uint8Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 + i32.add + i32.load8_s + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.load offset=8 - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 152 - i32.const 45 - call $~lib/builtins/abort - unreachable - end + i32.load 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:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 i32.load offset=4 local.get $1 i32.add i32.load8_u ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $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/typedarray/Uint8ClampedArray#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.add + i32.load8_u + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load16_s + ) + (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 1 + i32.shl + i32.add + i32.load16_s + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + ) + (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 1 + i32.shl + i32.add + i32.load16_u + ) + (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) + local.get $0 + i32.load offset=4 local.get $1 i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set + i32.shl + i32.add + i32.load + ) + (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 2464 - call $~lib/typedarray/Uint8Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.load + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + local.get $0 + i32.load offset=12 + ) + (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 - call $~lib/rt/pure/__release + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + i32.const 3 + i32.shl + i32.add + i64.load ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 + i32.load offset=4 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.load offset=12 ) - (func $~lib/typedarray/Uint8ClampedArray#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) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - local.get $3 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 0 - i32.shl - local.set $6 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + i32.shl + i32.add + i64.load + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 3 + i32.shl + i32.add + i64.load + ) + (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.shl + i32.add + f32.load + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) + local.get $0 + i32.load offset=4 local.get $1 i32.const 2 + i32.shl + i32.add + f32.load + ) + (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 + local.get $1 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.shl + i32.add + f64.load + ) + (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2496 - call $~lib/typedarray/Uint8ClampedArray#map - local.set $2 - local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + ) + (func $~lib/rt/itcms/__collect + (local $0 i32) i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 1 - i32.eq - i32.eqz + 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.const 336 - i32.const 365 - 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 - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 - i32.eq - 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 + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 9 - i32.eq - i32.eqz + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $std/typedarray/forEachValues + local.tee $1 if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayReverseValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/testArrayWrapValues + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource1 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource2 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit end + global.get $std/typedarray/setSource3 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $std/typedarray/setSource7 + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 336 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + call $~lib/rt/itcms/__visit + i32.const 32 local.get $0 + call $~lib/rt/itcms/__visit + i32.const 144 local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + call $~lib/rt/itcms/__visit + i32.const 6704 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 7760 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Int16Array#map (param $0 i32) (param $1 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (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.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 1 - i32.shl - local.set $6 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/arraybuffer/ArrayBufferView~visit ) - (func $~lib/typedarray/Int16Array#__get (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 408 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s + call $~lib/arraybuffer/ArrayBufferView~visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2528 - call $~lib/typedarray/Int16Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/arraybuffer/ArrayBufferView~visit + ) + (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/arraybuffer/ArrayBufferView~visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (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 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit ) - (func $~lib/typedarray/Uint16Array#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) - (local $9 i32) - (local $10 i32) + (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/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - local.get $3 - i32.load offset=4 - local.set $5 - local.get $4 - i32.const 1 - i32.shl - local.set $6 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 + drop + local.get $0 + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Uint16Array#__get (param $0 i32) (param $1 i32) (result i32) + (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<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 1 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 536 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2560 - call $~lib/typedarray/Uint16Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__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<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit ) - (func $~lib/typedarray/Int32Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2592 - call $~lib/typedarray/Int32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%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<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit ) - (func $~lib/typedarray/Uint32Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Uint32Array#__get (param $0 i32) (param $1 i32) (result i32) - local.get $1 + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 792 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2624 - call $~lib/typedarray/Uint32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 9 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__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<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) local.get $0 - i64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit ) - (func $~lib/typedarray/Int64Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Int64Array#__get (param $0 i32) (param $1 i32) (result i64) - local.get $1 + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 920 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2656 - call $~lib/typedarray/Int64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 9 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i64) - (local $3 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__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%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) local.get $0 - i64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit ) - (func $~lib/typedarray/Uint64Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i64) - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Uint64Array#__get (param $0 i32) (param $1 i32) (result i64) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 3 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 1048 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2688 - call $~lib/typedarray/Uint64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 1 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 9 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result f32) - (local $3 f32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%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<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit (param $0 i32) (param $1 i32) local.get $0 - f32.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit ) - (func $~lib/typedarray/Float32Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 2 - i32.shl - local.set $6 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_f32) - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $~lib/typedarray/Float32Array#__get (param $0 i32) (param $1 i32) (result f32) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.load offset=8 - i32.const 2 - i32.shr_u - i32.ge_u - if - i32.const 400 - i32.const 464 - i32.const 1176 - i32.const 64 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) local.get $0 i32.load offset=4 local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2720 - call $~lib/typedarray/Float32Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 1 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 9 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result f64) - (local $3 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%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<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - f64.mul - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit ) - (func $~lib/typedarray/Float64Array#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) - (local $9 i32) - (local $10 i32) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $4 - local.get $3 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 i32.load offset=4 - local.set $5 - local.get $4 - i32.const 3 - i32.shl - local.set $6 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $7 - local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $8 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $5 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_f64) - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $7 - local.get $8 - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $8 - i32.store offset=4 - local.get $7 - local.get $6 - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $9 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 local.get $1 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.const 2752 - call $~lib/typedarray/Float64Array#map - local.set $2 - local.get $2 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 1 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 365 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 366 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 9 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 367 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit ) - (func $~lib/rt/tlsf/moveBlock (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit (param $0 i32) (param $1 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 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 local.get $1 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - call $~lib/memory/memory.copy + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - 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 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit ) - (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 + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit (param $0 i32) (param $1 i32) + local.get $0 + i32.load offset=4 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 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit (param $0 i32) (param $1 i32) local.get $0 local.get $1 - local.get $2 - call $~lib/rt/tlsf/moveBlock + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit ) - (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 + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit (param $0 i32) (param $1 i32) 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) + i32.load offset=4 local.get $1 - i32.const 1073741804 - i32.gt_u - if - i32.const 144 - i32.const 208 - i32.const 288 - i32.const 30 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit (param $0 i32) (param $1 i32) 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 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit ) - (func $~lib/typedarray/Int8Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + (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/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $4 - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 + drop + local.get $0 + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $10 + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (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 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set + drop + local.get $0 + i32.load local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int8Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2784 - call $~lib/typedarray/Int8Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + drop local.get $0 - call $~lib/rt/pure/__release + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $1 + call $~lib/array/Array#__visit ) - (func $~lib/typedarray/Uint8Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) + (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/__retain - local.set $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/pure/__retain - local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $4 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 + call $~lib/array/Array#__visit + ) + (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 + drop + local.get $0 + i32.load local.get $1 - call $~lib/rt/pure/__release - local.get $10 + call $~lib/rt/itcms/__visit ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 + (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 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set + drop + local.get $0 + i32.load local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set + 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 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - i32.const 2816 - call $~lib/typedarray/Uint8Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz + 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/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> + block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> + block $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> + block $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> + block $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> + block $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> + block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> + block $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> + block $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> + block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> + block $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> + block $~lib/array/Array + block $~lib/array/Array + block $~lib/function/Function<%28f64%2Cf64%29=>i32> + block $~lib/typedarray/Float64Array + block $~lib/typedarray/Float32Array + block $~lib/typedarray/Uint64Array + block $~lib/typedarray/Int64Array + block $~lib/typedarray/Uint32Array + block $~lib/typedarray/Int32Array + block $~lib/typedarray/Uint16Array + block $~lib/typedarray/Int16Array + block $~lib/typedarray/Uint8ClampedArray + block $~lib/typedarray/Uint8Array + block $~lib/typedarray/Int8Array + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $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/Int8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint16Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Int64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Uint64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float32Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + unreachable + ) + (func $~start + call $start:std/typedarray + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 + i32.const 30560 + i32.const 30608 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/typedarray/Uint8Array#get:length - i32.const 3 - i32.eq + ) + (func $~lib/typedarray/Int8Array#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 336 - i32.const 391 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 3 - i32.eq + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8Array#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 4 - i32.eq + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8ClampedArray#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.eq + i32.store offset=4 + local.get $2 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#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 + i64.const 0 + i64.store + local.get $0 i32.eqz if - i32.const 0 - i32.const 336 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - call $~lib/rt/pure/__release + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + (func $~lib/typedarray/Uint16Array#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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 1 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int32Array#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 + i64.const 0 + i64.store local.get $0 - i32.const 255 - i32.and + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $1 i32.const 2 - i32.gt_u - local.set $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 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 ) - (func $~lib/typedarray/Uint8ClampedArray#filter (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint32Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/rt/pure/__retain - local.set $3 + 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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - call $~lib/rt/pure/__retain + i32.const 2 + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 local.set $2 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $4 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 0 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.store8 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int64Array#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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - local.get $8 - i32.const 0 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 local.get $1 - call $~lib/rt/pure/__release - local.get $10 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#constructor (param $0 i32) (param $1 i32) (result i32) (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float32Array#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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#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 + i64.const 0 + i64.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 local.get $1 i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2848 - call $~lib/typedarray/Uint8ClampedArray#filter + call $~lib/arraybuffer/ArrayBufferView#constructor + local.tee $0 + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 + ) + (func $std/typedarray/testInstantiate (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + i32.const 0 + local.get $0 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store + local.get $1 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 390 + i32.const 544 + i32.const 32 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 3 + local.get $1 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 391 + i32.const 544 + i32.const 33 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 34 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 392 + i32.const 544 + i32.const 37 i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 4 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 393 + i32.const 544 + i32.const 38 i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 394 + i32.const 544 + i32.const 39 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=12 local.get $3 - ) - (func $~lib/typedarray/Int16Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 42 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $4 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 43 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $8 - i32.const 1 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) - (local $2 i32) + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 44 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 6 + local.get $0 call $~lib/typedarray/Int16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2880 - call $~lib/typedarray/Int16Array#filter - local.set $2 - local.get $2 + local.tee $4 + i32.store offset=16 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 390 + i32.const 544 + i32.const 47 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 48 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 call $~lib/typedarray/Int16Array#get:length - i32.const 3 + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 391 + i32.const 544 + i32.const 49 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Uint16Array#constructor + local.tee $5 + i32.store offset=20 + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - call $~lib/typedarray/Int16Array#__get - i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 392 + i32.const 544 + i32.const 52 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 4 + local.get $5 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 393 + i32.const 544 + i32.const 53 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int16Array#__get - i32.const 5 + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 394 + i32.const 544 + i32.const 54 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $4 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 1 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $8 + local.get $0 + call $~lib/typedarray/Int32Array#constructor + local.tee $6 + i32.store offset=24 + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 1 - i32.shl - i32.add - local.get $11 - i32.store16 - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 57 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $8 - i32.const 1 - i32.shl - local.set $9 local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 58 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 59 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2912 - call $~lib/typedarray/Uint16Array#filter - local.set $2 - local.get $2 + local.get $0 + call $~lib/typedarray/Uint32Array#constructor + local.tee $7 + i32.store offset=28 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 390 + i32.const 544 + i32.const 62 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/typedarray/Uint16Array#get:length - i32.const 3 + local.get $7 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 391 + i32.const 544 + i32.const 63 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - call $~lib/typedarray/Uint16Array#__get - i32.const 3 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 392 + i32.const 544 + i32.const 64 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Int64Array#constructor + local.tee $8 + i32.store offset=32 + local.get $8 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 393 + i32.const 544 + i32.const 67 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 + local.get $8 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 394 + i32.const 544 + i32.const 68 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $8 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int64Array#get:length local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 69 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $0 - i32.const 2 - i32.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Int32Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $4 - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $9 + i32.store offset=36 local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2944 - call $~lib/typedarray/Int32Array#filter - local.set $2 - local.get $2 + local.get $12 call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 390 + i32.const 544 + i32.const 72 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 + local.get $9 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 391 + i32.const 544 + i32.const 73 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 + local.get $9 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 392 + i32.const 544 + i32.const 74 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Float32Array#constructor + local.tee $10 + i32.store offset=40 + local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 393 + i32.const 544 + i32.const 77 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 5 + local.get $10 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 394 + i32.const 544 + i32.const 78 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.gt_u - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint32Array#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 $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $4 - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 - i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $11 - i32.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 local.get $10 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $11 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 5 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2976 - call $~lib/typedarray/Uint32Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint32Array#get:length - i32.const 3 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 391 + i32.const 544 + i32.const 79 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $0 + call $~lib/typedarray/Float64Array#constructor + local.tee $11 + i32.store offset=44 + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - call $~lib/typedarray/Uint32Array#__get - i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 392 + i32.const 544 + i32.const 82 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 4 + local.get $11 + i32.load offset=8 + local.get $0 + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.mul i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 393 + i32.const 544 + i32.const 83 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Float64Array#get:length + local.get $0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 394 + i32.const 544 + i32.const 84 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.gt_s - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -12959,710 +11757,643 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Int64Array#get:length local.set $4 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.set $5 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + local.set $6 local.get $4 - i32.const 3 - i32.shl i32.const 0 - call $~lib/rt/pure/__new - local.set $6 + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select + end + local.set $4 local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - i64.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + select end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 local.get $8 - i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 local.get $5 - local.get $10 - call $~lib/rt/pure/__retain + i32.load + local.set $8 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release + local.get $7 local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + (func $~lib/typedarray/Float64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Int64Array#__set + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store local.get $1 - i32.const 3008 - call $~lib/typedarray/Int64Array#filter - local.set $2 + local.set $4 local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + local.get $4 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Int64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end - local.get $2 + local.set $4 + local.get $3 i32.const 0 - call $~lib/typedarray/Int64Array#__get - i64.const 3 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 4 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.gt_u local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + 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/typedarray/Uint64Array#filter (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#sort (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 $6 f64) + (local $7 f64) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $4 - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.set $5 - local.get $4 - i32.const 3 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 + (local $11 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 - local.set $9 - loop $for-loop|0 - local.get $9 + i32.store offset=16 + block $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + local.set $4 local.get $4 - i32.lt_s - local.set $10 - local.get $10 + i32.const 1 + i32.le_s if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $11 - local.get $9 local.get $3 - i32.const 3 + br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.eq + if + local.get $5 + f64.load offset=8 + local.set $6 + local.get $5 + f64.load + local.set $7 + local.get $6 + local.get $7 + i32.const 2 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_i32) + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s if + local.get $5 + local.get $7 + f64.store offset=8 + local.get $5 local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - i64.store + f64.store end + local.get $3 + br $~lib/typedarray/SORT<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $5 + local.set $10 + local.get $4 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.tee $8 + i32.store offset=12 + i32.const 0 + drop + local.get $9 + i32.const 256 + i32.lt_s + if + local.get $10 local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=16 + local.get $11 + call $~lib/util/sort/insertionSort + else + local.get $10 + local.get $9 + local.get $8 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=16 + local.get $11 + call $~lib/util/sort/weakHeapSort end + local.get $3 end - local.get $8 - i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (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 $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $7 i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 + local.get $1 + local.set $6 local.get $2 - call $~lib/rt/pure/__release + local.set $5 local.get $3 - call $~lib/rt/pure/__release + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Uint64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int8Array#get:length + local.set $9 + local.get $5 i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 5 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3040 - call $~lib/typedarray/Uint64Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Uint64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $9 + local.get $5 + i32.add + local.tee $10 i32.const 0 - i32.const 336 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $2 + local.set $5 + local.get $4 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 3 - i64.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $9 + local.get $4 + i32.add + local.tee $10 i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $2 + local.set $4 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 4 - i64.eq - i32.eqz + i32.const 1 + i32.eq + drop + local.get $5 + local.get $4 + i32.lt_s if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $2 - i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.eq - i32.eqz + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (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 0 i32.const 336 - i32.const 394 - i32.const 3 + i32.const 736 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain + call $~lib/array/Array#__uget local.set $2 - local.get $0 - f32.const 2 - f32.gt - local.set $3 + i32.const 0 + drop local.get $2 - call $~lib/rt/pure/__release + 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/typedarray/Float32Array#filter (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt8ArrayEqual (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f32) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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/rt/pure/__retain - local.set $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int8Array#get:length local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $4 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new local.set $5 - local.get $4 - i32.const 2 - i32.shl - i32.const 0 - call $~lib/rt/pure/__new - local.set $6 - local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.ne + if + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end i32.const 0 - local.set $9 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $3 loop $for-loop|0 - local.get $9 - local.get $4 + local.get $2 + local.get $3 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) + call $~lib/typedarray/Int8Array#__get + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $2 + call $~lib/array/Array#__get + i32.ne if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 2 - i32.shl + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - local.get $11 - f32.store + global.set $~lib/memory/__stack_pointer + local.get $5 + return end - local.get $9 + local.get $2 i32.const 1 i32.add - local.set $9 + local.set $2 br $for-loop|0 end end - local.get $8 - i32.const 2 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 - local.get $5 - local.get $10 - call $~lib/rt/pure/__retain - i32.store - local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 - i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 5 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3072 - call $~lib/typedarray/Float32Array#filter - local.set $2 - local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Float32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 3 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 4 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 394 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.gt - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + 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/typedarray/Float64Array#filter (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -13670,4192 +12401,4331 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 f64) - (local $12 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - call $~lib/typedarray/Float64Array#get:length local.set $4 - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $5 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + local.set $6 local.get $4 - i32.const 3 - i32.shl i32.const 0 - call $~lib/rt/pure/__new - local.set $6 + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select + end + local.set $4 local.get $3 - i32.load offset=4 - local.set $7 - i32.const 0 - local.set $8 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $4 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 i32.lt_s - local.set $10 - local.get $10 - if - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $11 - local.get $9 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $6 - local.get $8 - local.tee $12 - i32.const 1 - i32.add - local.set $8 - local.get $12 - i32.const 3 - i32.shl - i32.add - local.get $11 - f64.store - end - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + select end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 3 - i32.shl - local.set $9 - local.get $6 - local.get $9 - call $~lib/rt/pure/__renew - local.set $10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 local.get $5 - local.get $10 - call $~lib/rt/pure/__retain + i32.load + local.set $8 + local.get $7 + local.get $8 i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 local.get $5 - local.get $9 - i32.store offset=8 - local.get $5 - local.get $10 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.set $12 - local.get $2 - call $~lib/rt/pure/__release + local.get $7 local.get $3 - call $~lib/rt/pure/__release - local.get $12 - local.set $10 - local.get $1 - call $~lib/rt/pure/__release - local.get $10 - ) - (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - i32.const 0 - i32.const 6 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.get $4 + i32.sub i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5 - f64.const 5 - call $~lib/typedarray/Float64Array#__set + i32.shl + i32.store offset=8 + local.get $7 + 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/typedarray/Int32Array#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 $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $7 + i32.store local.get $1 - i32.const 3104 - call $~lib/typedarray/Float64Array#filter - local.set $2 + local.set $6 local.get $2 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.set $5 + local.get $3 + local.set $4 + local.get $7 + i32.load offset=4 + local.set $8 + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.set $9 + local.get $5 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 390 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/typedarray/Float64Array#get:length - i32.const 3 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $9 + local.get $5 + i32.add + local.tee $10 i32.const 0 - i32.const 336 - i32.const 391 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $2 + local.set $5 + local.get $4 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 3 - f64.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $9 + local.get $4 + i32.add + local.tee $10 i32.const 0 - i32.const 336 - i32.const 392 - i32.const 3 - call $~lib/builtins/abort - unreachable + 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.get $2 + local.set $4 + i32.const 4 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 393 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + drop + loop $for-loop|0 + local.get $5 + local.get $4 + i32.lt_s + local.set $11 + local.get $11 + if + local.get $8 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - local.get $2 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq - i32.eqz + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (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 0 i32.const 336 - i32.const 394 - i32.const 3 + i32.const 736 + i32.const 92 + i32.const 42 call $~lib/builtins/abort unreachable end local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain + call $~lib/array/Array#__uget local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 + i32.const 0 + drop local.get $2 - call $~lib/rt/pure/__release + 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/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) + (func $std/typedarray/isInt32ArrayEqual (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 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int32Array#get:length local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.ne + if i32.const 0 local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + i32.const 0 + local.set $2 + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 + i32.lt_s + local.set $4 + local.get $4 + if + local.get $0 + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 + i32.store + local.get $5 + local.get $2 + call $~lib/typedarray/Int32Array#__get + local.get $1 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $2 + call $~lib/array/Array#__get + i32.ne if - local.get $4 - local.get $5 i32.const 0 - i32.shl + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 - end + global.set $~lib/memory/__stack_pointer local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 + return end + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 i32.const 1 + local.set $5 + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3136 - call $~lib/typedarray/Int8Array#some - local.set $2 - local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3168 - call $~lib/typedarray/Int8Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 ) - (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $4 + local.get $6 + i32.add + local.tee $7 i32.const 0 - local.set $5 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + local.get $6 + i32.add + local.tee $7 i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else local.get $3 - call $~lib/rt/pure/__release + local.tee $8 local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + local.get $4 + i32.sub + local.tee $7 i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $6 + global.get $~lib/memory/__stack_pointer i32.const 0 + local.get $6 + call $~lib/typedarray/Int32Array#constructor + local.tee $7 + i32.store offset=8 + local.get $7 + i32.load offset=4 + local.get $5 + i32.load offset=4 + local.get $4 i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + i32.shl + i32.add + local.get $6 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set + i32.shl + call $~lib/memory/memory.copy + local.get $7 + 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/typedarray/Int32Array#copyWithin (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 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) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $7 + i32.store local.get $1 - i32.const 3200 - call $~lib/typedarray/Uint8Array#some - local.set $2 + local.set $6 local.get $2 + local.set $5 + local.get $3 + local.set $4 + local.get $7 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + local.get $7 + i32.load offset=4 + local.set $9 + local.get $4 + local.tee $10 + local.get $8 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select + local.set $4 + local.get $6 i32.const 0 - i32.ne - i32.eqz - if + i32.lt_s + if (result i32) + local.get $8 + local.get $6 + i32.add + local.tee $11 i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $10 + local.get $11 + local.get $10 + i32.gt_s + select + else + local.get $6 + local.tee $10 + local.get $8 + local.tee $11 + local.get $10 + local.get $11 + i32.lt_s + select end - local.get $1 - i32.const 3232 - call $~lib/typedarray/Uint8Array#some - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if + local.set $10 + local.get $5 + i32.const 0 + i32.lt_s + if (result i32) + local.get $8 + local.get $5 + i32.add + local.tee $11 i32.const 0 - i32.const 336 - i32.const 417 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $12 + local.get $11 + local.get $12 + i32.gt_s + select + else + local.get $5 + local.tee $12 + local.get $8 + local.tee $11 + local.get $12 + local.get $11 + i32.lt_s + select end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and + local.set $12 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $8 + local.get $4 + i32.add + local.tee $11 + i32.const 0 + local.tee $13 + local.get $11 + local.get $13 + i32.gt_s + select + else + local.get $4 + local.tee $13 + local.get $8 + local.tee $11 + local.get $13 + local.get $11 + i32.lt_s + select + end + local.set $13 + local.get $13 + local.get $12 + i32.sub + local.tee $11 + local.get $8 + local.get $10 + i32.sub + local.tee $14 + local.get $11 + local.get $14 + i32.lt_s + select + local.set $11 + local.get $9 + local.get $10 i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.shl + i32.add + local.get $9 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.const 2 + i32.shl + call $~lib/memory/memory.copy + local.get $7 + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 ) - (func $~lib/typedarray/Uint8ClampedArray#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int8Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3264 - call $~lib/typedarray/Uint8ClampedArray#some + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1872 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#reduce + local.set $1 local.get $1 - i32.const 3296 - call $~lib/typedarray/Uint8ClampedArray#some - local.set $3 - local.get $3 - i32.eqz + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3328 - call $~lib/typedarray/Int16Array#some + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1904 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint8Array#reduce + local.set $1 local.get $1 - i32.const 3360 - call $~lib/typedarray/Int16Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 255 + i32.and + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> + (func $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3392 - call $~lib/typedarray/Uint16Array#some + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1936 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint8ClampedArray#reduce + local.set $1 local.get $1 - i32.const 3424 - call $~lib/typedarray/Uint16Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 255 + i32.and + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int16Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3456 - call $~lib/typedarray/Int32Array#some + call $~lib/typedarray/Int16Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1968 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int16Array#reduce + local.set $1 local.get $1 - i32.const 3488 - call $~lib/typedarray/Int32Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint16Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint16Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3520 - call $~lib/typedarray/Uint32Array#some + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2000 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint16Array#reduce + local.set $1 local.get $1 - i32.const 3552 - call $~lib/typedarray/Uint32Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 65535 + i32.and + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + local.tee $4 + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 0 - i64.eq local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 + end + end + local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3584 - call $~lib/typedarray/Int64Array#some + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2032 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int32Array#reduce + local.set $1 local.get $1 - i32.const 3616 - call $~lib/typedarray/Int64Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint32Array#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 $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 0 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 3648 - call $~lib/typedarray/Uint64Array#some + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2064 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint32Array#reduce + local.set $1 local.get $1 - i32.const 3680 - call $~lib/typedarray/Uint64Array#some - local.set $3 - local.get $3 - i32.eqz + i32.const 6 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 0 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3712 - call $~lib/typedarray/Float32Array#some + i32.store + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2096 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#reduce + local.set $1 local.get $1 - i32.const 3744 - call $~lib/typedarray/Float32Array#some - local.set $3 - local.get $3 - i32.eqz + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Uint64Array#reduce (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Uint64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - i32.const 1 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const 0 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 0 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 3776 - call $~lib/typedarray/Float64Array#some + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 415 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2128 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#reduce + local.set $1 local.get $1 - i32.const 3808 - call $~lib/typedarray/Float64Array#some - local.set $3 - local.get $3 - i32.eqz + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 417 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Float32Array#reduce (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Float32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $f32_f32_i32_i32_=>_f32) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> + (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (local $0 i32) - (local $1 i32) + (local $1 f32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3840 - call $~lib/typedarray/Int8Array#findIndex + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2160 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#reduce + local.set $1 local.get $1 - i32.const 3872 - call $~lib/typedarray/Int8Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq + f32.const 6 + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Float64Array#reduce (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + i32.const 0 + local.set $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=8 + local.get $10 + call $~lib/typedarray/Float64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=12 + local.get $10 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $f64_f64_i32_i32_=>_f64) + local.set $3 + local.get $7 + i32.const 1 + i32.add + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (local $0 i32) - (local $1 i32) + (local $1 f64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3904 - call $~lib/typedarray/Uint8Array#findIndex + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2192 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#reduce + local.set $1 local.get $1 - i32.const 3936 - call $~lib/typedarray/Uint8Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq + f64.const 6 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 323 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3968 - call $~lib/typedarray/Uint8ClampedArray#findIndex + call $~lib/typedarray/Int8Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2224 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#reduceRight + local.set $1 local.get $1 - i32.const 4000 - call $~lib/typedarray/Uint8ClampedArray#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4032 - call $~lib/typedarray/Int16Array#findIndex + call $~lib/typedarray/Uint8Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2256 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#reduceRight + local.set $1 local.get $1 - i32.const 4064 - call $~lib/typedarray/Int16Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 255 + i32.and + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint8ClampedArray#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint16Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4096 - call $~lib/typedarray/Uint16Array#findIndex + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2288 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#reduceRight + local.set $1 local.get $1 - i32.const 4128 - call $~lib/typedarray/Uint16Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 255 + i32.and + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int16Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4160 - call $~lib/typedarray/Int32Array#findIndex + call $~lib/typedarray/Int16Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2320 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#reduceRight + local.set $1 local.get $1 - i32.const 4192 - call $~lib/typedarray/Int32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint16Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 4 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4224 - call $~lib/typedarray/Uint32Array#findIndex + call $~lib/typedarray/Uint16Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2352 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#reduceRight + local.set $1 local.get $1 - i32.const 4256 - call $~lib/typedarray/Uint32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 65535 + i32.and + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int32Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 4 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 4288 - call $~lib/typedarray/Int64Array#findIndex + call $~lib/typedarray/Int32Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2384 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#reduceRight + local.set $1 local.get $1 - i32.const 4320 - call $~lib/typedarray/Int64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Uint32Array#reduceRight (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 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 + local.get $6 + local.get $7 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i32_i32_i32_i32_=>_i32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 4 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 4352 - call $~lib/typedarray/Uint64Array#findIndex + call $~lib/typedarray/Uint32Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2416 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#reduceRight + local.set $1 local.get $1 - i32.const 4384 - call $~lib/typedarray/Uint64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Int64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 4 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 4416 - call $~lib/typedarray/Float32Array#findIndex + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2448 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Int64Array#reduceRight + local.set $1 local.get $1 - i32.const 4448 - call $~lib/typedarray/Float32Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Uint64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 i64) (result i64) + (local $3 i64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - local.get $5 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + i64.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $i64_i64_i32_i32_=>_i64) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const -1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 4 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (local $0 i32) - (local $1 i32) + (local $1 i64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4480 - call $~lib/typedarray/Float64Array#findIndex + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 438 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2480 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i64.const 0 + call $~lib/typedarray/Uint64Array#reduceRight + local.set $1 local.get $1 - i32.const 4512 - call $~lib/typedarray/Float64Array#findIndex - local.set $3 - local.get $3 - i32.const -1 - i32.eq + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 440 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.rem_s - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Float32Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f32) (result f32) + (local $3 f32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 f32) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 2 + i32.shl + i32.add + f32.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $f32_f32_i32_i32_=>_f32) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> + (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (local $0 i32) - (local $1 i32) + (local $1 f32) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4544 - call $~lib/typedarray/Int8Array#every + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 + local.get $2 + i32.const 2512 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f32.const 0 + call $~lib/typedarray/Float32Array#reduceRight + local.set $1 local.get $1 - i32.const 4576 - call $~lib/typedarray/Int8Array#every - local.set $3 - local.get $3 - i32.eqz + f32.const 6 + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $~lib/typedarray/Float64Array#reduceRight (param $0 i32) (param $1 i32) (param $2 f64) (result f64) + (local $3 f64) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 f64) + 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 + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=8 + local.get $9 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 + i32.ge_s + local.set $8 + local.get $8 + if + local.get $3 local.get $6 - i32.lt_s - local.set $7 local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + i32.const 3 + i32.shl + i32.add + f64.load + local.get $7 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $9 + i32.const 4 + global.set $~argumentsLength + local.get $4 + i32.load + call_indirect (type $f64_f64_i32_i32_=>_f64) + local.set $3 + local.get $7 + i32.const 1 + i32.sub + local.set $7 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (local $0 i32) - (local $1 i32) + (local $1 f64) (local $2 i32) - (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4608 - call $~lib/typedarray/Uint8Array#every + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.ne + i32.store offset=4 + local.get $2 + i32.const 2544 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + f64.const 0 + call $~lib/typedarray/Float64Array#reduceRight + local.set $1 + local.get $1 + f64.const 6 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4640 - call $~lib/typedarray/Uint8Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 344 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int8Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -17863,171 +16733,246 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $for-loop|0 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int8Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 0 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 255 - i32.and - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint8ClampedArray#__set + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2576 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 4672 - call $~lib/typedarray/Uint8ClampedArray#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Int8Array#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4704 - call $~lib/typedarray/Uint8ClampedArray#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.rem_s - i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 9 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18035,339 +16980,246 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length local.set $4 - local.get $1 - call $~lib/rt/pure/__release + local.get $3 + i32.load offset=4 + local.set $5 local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 16 + i32.const 0 i32.shl - i32.const 16 - i32.shr_s - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $5 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4736 - call $~lib/typedarray/Int16Array#every + call $~lib/typedarray/Uint8Array#__set + local.get $0 local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 461 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 4768 - call $~lib/typedarray/Int16Array#every - local.set $3 - local.get $3 - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 463 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 65535 - i32.and i32.const 2 - i32.rem_u - i32.const 0 - i32.eq - local.set $3 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Uint16Array#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 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__retain + i32.const 2608 local.set $2 - local.get $0 - i32.const 65535 - i32.and - i32.const 2 - i32.eq - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint16Array#__set + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 4800 - call $~lib/typedarray/Uint16Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Uint8Array#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4832 - call $~lib/typedarray/Uint16Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.rem_s - i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 9 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18375,165 +17227,246 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $for-loop|0 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 0 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 0 + i32.shl + i32.add local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int32Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Int32Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2640 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 4864 - call $~lib/typedarray/Int32Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4896 - call $~lib/typedarray/Int32Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - local.get $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - i32.rem_u - i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 9 i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int16Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18541,165 +17474,246 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i32.const 2 - i32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $5 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 i32.const 1 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i32.const 6 - call $~lib/typedarray/Uint32Array#__set + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2672 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int16Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 4928 - call $~lib/typedarray/Uint32Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Int16Array#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 4960 - call $~lib/typedarray/Uint32Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - local.get $0 - i64.const 2 - i64.rem_s - i64.const 0 - i64.eq - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint16Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18707,165 +17721,246 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $for-loop|0 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 1 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 1 + i32.shl + i32.add local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 1 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i64.const 6 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2704 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint16Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 4992 - call $~lib/typedarray/Int64Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Uint16Array#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5024 - call $~lib/typedarray/Int64Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - local.get $0 - i64.const 2 - i64.rem_u - i64.const 0 - i64.eq - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int32Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -18873,416 +17968,493 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $for-loop|0 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 2 + i32.shl + i32.add local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $i64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>~anonymous|1 (param $0 i64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - i64.const 2 - i64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 1 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 i32.const 2 - i64.const 6 - call $~lib/typedarray/Uint64Array#__set + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2736 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int32Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 5056 - call $~lib/typedarray/Uint64Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5088 - call $~lib/typedarray/Uint64Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + 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/math/NativeMathf.mod (param $0 f32) (param $1 f32) (result f32) + (func $~lib/typedarray/Uint32Array#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 $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - local.get $1 - f32.abs - f32.const 1 - f32.eq - if - local.get $0 - local.get $0 - f32.trunc - f32.sub - local.get $0 - f32.copysign - return - end + 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 local.get $0 - i32.reinterpret_f32 - local.set $2 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.reinterpret_f32 - local.set $3 - local.get $2 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length local.set $4 local.get $3 - i32.const 23 - i32.shr_u - i32.const 255 - i32.and + i32.load offset=4 local.set $5 - local.get $2 - i32.const -2147483648 - i32.and - local.set $6 - local.get $3 - i32.const 1 + local.get $4 + i32.const 2 i32.shl - local.set $7 - local.get $7 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $4 - i32.const 255 - i32.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f32.ne - end - if - local.get $0 - local.get $1 - f32.mul - local.set $8 - local.get $8 - local.get $8 - f32.div - return - end - local.get $2 - i32.const 1 - i32.shl local.set $9 - local.get $9 - local.get $7 - i32.le_u - if - local.get $0 + loop $for-loop|0 local.get $9 - local.get $7 - i32.ne - f32.convert_i32_u - f32.mul - return - end - local.get $4 - i32.eqz - if - local.get $4 - local.get $2 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $4 - local.get $2 - i32.const 1 - local.get $4 - i32.sub - i32.shl - local.set $2 - else - local.get $2 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $2 - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $2 - end - local.get $5 - i32.eqz - if - local.get $5 - local.get $3 - i32.const 9 - i32.shl - i32.clz - i32.sub - local.set $5 - local.get $3 - i32.const 1 - local.get $5 - i32.sub - i32.shl - local.set $3 - else - local.get $3 - i32.const -1 - i32.const 9 - i32.shr_u - i32.and - local.set $3 - local.get $3 - i32.const 1 - i32.const 23 - i32.shl - i32.or - local.set $3 - end - loop $while-continue|0 local.get $4 - local.get $5 - i32.gt_s + i32.lt_s local.set $10 local.get $10 if - local.get $2 + local.get $8 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return - end - local.get $2 - local.get $3 - i32.sub - local.set $2 - end + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + i32.store + local.get $9 i32.const 1 - i32.shl - local.set $2 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i32.ge_u - if - local.get $2 - local.get $3 - i32.eq - if - f32.const 0 - local.get $0 - f32.mul - return + i32.add + local.set $9 + br $for-loop|0 end - local.get $2 - local.get $3 - i32.sub - local.set $2 end - local.get $2 - i32.const 8 - i32.shl - i32.clz + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 local.set $11 - local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $11 + ) + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - local.get $2 - local.get $11 - i32.shl + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 local.set $2 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.gt_s - if - local.get $2 - i32.const 1 - i32.const 23 - i32.shl - i32.sub - local.set $2 - local.get $2 - local.get $4 - i32.const 23 - i32.shl - i32.or - local.set $2 - else - local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2768 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint32Array#map + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 - local.get $4 - i32.sub - i32.const 1 - i32.add - i32.shr_u - local.set $2 + i32.const 544 + i32.const 365 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - local.get $6 - i32.or - f32.reinterpret_i32 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__retain + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 366 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 local.set $2 - local.get $0 - f32.const 2 - call $~lib/math/NativeMathf.mod - f32.const 0 - f32.eq - local.set $3 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Int64Array#map (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -19290,2680 +18462,3555 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $4 + local.get $3 + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 3 + i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + local.set $10 + local.get $10 + if + local.get $8 + local.get $9 + i32.const 3 + i32.shl + i32.add local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i64) + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|1 (param $0 f32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f32.const 2 - f32.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - f32.const 6 - call $~lib/typedarray/Float32Array#__set + i64.const 3 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2800 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 5120 - call $~lib/typedarray/Float32Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Int64Array#__get + i64.const 1 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5152 - call $~lib/typedarray/Float32Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/math/NativeMath.mod (param $0 f64) (param $1 f64) (result f64) - (local $2 i64) - (local $3 i64) - (local $4 i64) - (local $5 i64) - (local $6 i64) - (local $7 i64) - (local $8 f64) - (local $9 i64) - (local $10 i32) - (local $11 i64) local.get $1 - f64.abs - f64.const 1 - f64.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 9 + i64.eq + i32.eqz if - local.get $0 - local.get $0 - f64.trunc - f64.sub - local.get $0 - f64.copysign - return + i32.const 0 + i32.const 544 + i32.const 367 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#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) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - i64.reinterpret_f64 - local.set $2 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i64.reinterpret_f64 - local.set $3 - local.get $2 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length local.set $4 local.get $3 - i64.const 52 - i64.shr_u - i64.const 2047 - i64.and + i32.load offset=4 local.set $5 - local.get $2 - i64.const 63 - i64.shr_u + local.get $4 + i32.const 3 + i32.shl local.set $6 - local.get $3 - i64.const 1 - i64.shl - local.set $7 - local.get $7 - i64.const 0 - i64.eq - if (result i32) - i32.const 1 - else - local.get $4 - i64.const 2047 - i64.eq - end - if (result i32) - i32.const 1 - else - local.get $1 - local.get $1 - f64.ne - end - if - local.get $0 - local.get $1 - f64.mul - local.set $8 - local.get $8 - local.get $8 - f64.div - return - end - local.get $2 - i64.const 1 - i64.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 local.set $9 - local.get $9 - local.get $7 - i64.le_u - if - local.get $0 + loop $for-loop|0 local.get $9 - local.get $7 - i64.ne - f64.convert_i32_u - f64.mul - return - end - local.get $4 - i64.const 0 - i64.ne - i32.eqz - if - local.get $4 - local.get $2 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $4 - local.get $2 - i64.const 1 local.get $4 - i64.sub - i64.shl - local.set $2 - else - local.get $2 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $2 - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $2 - end - local.get $5 - i64.const 0 - i64.ne - i32.eqz - if - local.get $5 - local.get $3 - i64.const 12 - i64.shl - i64.clz - i64.sub - local.set $5 - local.get $3 - i64.const 1 - local.get $5 - i64.sub - i64.shl - local.set $3 - else - local.get $3 - i64.const -1 - i64.const 12 - i64.shr_u - i64.and - local.set $3 - local.get $3 - i64.const 1 - i64.const 52 - i64.shl - i64.or - local.set $3 - end - loop $while-continue|0 - local.get $4 - local.get $5 - i64.gt_s + i32.lt_s local.set $10 local.get $10 if - local.get $2 + local.get $8 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $9 local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return - end - local.get $2 - local.get $3 - i64.sub - local.set $2 - end + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 + i32.const 3 + global.set $~argumentsLength local.get $2 - i64.const 1 - i64.shl - local.set $2 - local.get $4 - i64.const 1 - i64.sub - local.set $4 - br $while-continue|0 - end - end - local.get $2 - local.get $3 - i64.ge_u - if - local.get $2 - local.get $3 - i64.eq - if - f64.const 0 - local.get $0 - f64.mul - return + i32.load + call_indirect (type $i64_i32_i32_=>_i64) + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 end - local.get $2 - local.get $3 - i64.sub - local.set $2 end - local.get $2 - i64.const 11 - i64.shl - i64.clz + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 local.set $11 - local.get $4 - local.get $11 - i64.sub - local.set $4 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer local.get $11 - i64.shl - local.set $2 - local.get $4 - i64.const 0 - i64.gt_s - if - local.get $2 - i64.const 1 - i64.const 52 - i64.shl - i64.sub - local.set $2 - local.get $2 - local.get $4 - i64.const 52 - i64.shl - i64.or - local.set $2 - else - local.get $2 - i64.const 0 - local.get $4 - i64.sub - i64.const 1 - i64.add - i64.shr_u - local.set $2 - end - local.get $2 - local.get $6 - i64.const 63 - i64.shl - i64.or - f64.reinterpret_i64 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - call $~lib/math/NativeMath.mod - f64.const 0 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $~lib/typedarray/Float64Array#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 - call $~lib/rt/pure/__retain - local.set $1 - block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain - local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - block $for-continue|0 - local.get $4 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f64_i32_i32_=>_i32) - if - br $for-continue|0 - end - i32.const 0 - local.set $8 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end - i32.const 1 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - end - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|1 (param $0 f64) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $0 - f64.const 2 - f64.eq - local.set $3 - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - ) - (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Uint64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - f64.const 6 - call $~lib/typedarray/Float64Array#__set + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2832 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint64Array#map + local.tee $1 + i32.store offset=12 local.get $1 - i32.const 5184 - call $~lib/typedarray/Float64Array#every local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 i32.const 0 - i32.ne + call $~lib/typedarray/Uint64Array#__get + i64.const 1 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 461 + i32.const 544 + i32.const 365 i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - i32.const 5216 - call $~lib/typedarray/Float64Array#every - local.set $3 - local.get $3 - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 463 + i32.const 544 + i32.const 366 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - global.get $std/typedarray/forEachSelf + global.get $~lib/memory/__stack_pointer local.get $2 - i32.eq + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 9 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 367 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float32Array#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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length local.set $4 - i32.const 0 - local.set $5 local.get $3 - call $~lib/typedarray/Int8Array#get:length + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 2 + i32.shl local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 0 + local.get $8 + local.get $9 + i32.const 2 i32.shl i32.add - i32.load8_s local.get $5 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $9 local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $f32_i32_i32_=>_f32) + f32.store + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> + (func $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> (local $0 i32) (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Int8Array#constructor + call $~lib/typedarray/Float32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 5328 - call $~lib/typedarray/Int8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + f32.const 3 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $2 + i32.const 2864 local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#map + local.tee $1 + i32.store offset=12 local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 1 + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 365 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 366 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.eq + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 9 + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 367 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Float64Array#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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length local.set $4 - i32.const 0 - local.set $5 local.get $3 - call $~lib/typedarray/Uint8Array#get:length + i32.load offset=4 + local.set $5 + local.get $4 + i32.const 3 + i32.shl local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=16 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 0 + local.get $8 + local.get $9 + i32.const 3 i32.shl i32.add - i32.load8_u local.get $5 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $9 local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=20 + local.get $11 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $f64_i32_i32_=>_f64) + f64.store + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $8 + i32.store offset=4 + local.get $7 + local.get $6 + i32.store offset=8 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 - call $~lib/typedarray/Uint8Array#constructor + call $~lib/typedarray/Float64Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 5360 - call $~lib/typedarray/Uint8Array#forEach - global.get $std/typedarray/forEachCallCount - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + f64.const 3 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__retain + i32.const 2896 local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float64Array#map + local.tee $1 + i32.store offset=12 local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 255 - i32.and - local.get $3 - i32.const 255 - i32.and - i32.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 1 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 365 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount - i32.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 366 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.eq + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 9 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 367 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Int8Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 0 - local.set $5 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 + local.get $7 + local.get $9 i32.const 0 i32.shl i32.add - i32.load8_u - local.get $5 + i32.load8_s + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor + i32.const 6 + call $~lib/typedarray/Int8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues - i32.const 0 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 5392 - call $~lib/typedarray/Uint8ClampedArray#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2928 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int8Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Int8Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Uint8Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 0 - local.set $5 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 1 + local.get $7 + local.get $9 + i32.const 0 i32.shl i32.add - i32.load16_s - local.get $5 + i32.load8_u + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor + i32.const 6 + call $~lib/typedarray/Uint8Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 5424 - call $~lib/typedarray/Int16Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2960 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - i32.const 65535 - i32.and - local.get $3 - i32.const 65535 - i32.and + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Uint8ClampedArray#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 0 - local.set $5 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 1 + local.get $7 + local.get $9 + i32.const 0 i32.shl i32.add - i32.load16_u - local.get $5 + i32.load8_u + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.store8 + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 0 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint16Array#constructor + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 5456 - call $~lib/typedarray/Uint16Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2992 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Int16Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl i32.const 0 - local.set $5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 2 + local.get $7 + local.get $9 + i32.const 1 i32.shl i32.add - i32.load - local.get $5 + i32.load16_s + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 1 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int32Array#constructor + i32.const 6 + call $~lib/typedarray/Int16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 5488 - call $~lib/typedarray/Int32Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3024 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int16Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int16Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Uint16Array#get:length local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 1 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 + local.get $3 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 2 + local.get $7 + local.get $9 + i32.const 1 i32.shl i32.add - i32.load - local.get $5 + i32.load16_u + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i32_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 1 + i32.shl + i32.add + local.get $11 + i32.store16 + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 1 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint32Array#constructor + i32.const 6 + call $~lib/typedarray/Uint16Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 5520 - call $~lib/typedarray/Uint32Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3056 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint16Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i64.extend_i32_s - i64.eq + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint16Array#__get + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Int32Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl i32.const 0 - local.set $5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 3 + local.get $7 + local.get $9 + i32.const 2 i32.shl i32.add - i64.load - local.get $5 + i32.load + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor + i32.const 6 + call $~lib/typedarray/Int32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 5552 - call $~lib/typedarray/Int64Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3088 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int32Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - i64.extend_i32_s - i64.eq + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 + i32.const 544 + i32.const 391 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 392 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__release + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint32Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (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 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Uint32Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl i32.const 0 - local.set $5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 - i32.const 3 + local.get $7 + local.get $9 + i32.const 2 i32.shl i32.add - i64.load - local.get $5 + i32.load + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $i64_i32_i32_=>_none) - local.get $5 + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + i32.store + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint64Array#constructor + i32.const 6 + call $~lib/typedarray/Uint32Array#constructor local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 1 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 2 - global.get $std/typedarray/forEachValues + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 5584 - call $~lib/typedarray/Uint64Array#forEach - global.get $std/typedarray/forEachCallCount i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 495 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint32Array#__set local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) - (local $3 i32) + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $2 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i32.const 5 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer local.get $0 - local.get $3 - f32.convert_i32_s - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3120 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint32Array#filter + local.tee $1 + i32.store offset=12 local.get $1 - global.get $std/typedarray/forEachCallCount + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 390 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + call $~lib/typedarray/Uint32Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 391 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 - i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#forEach (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 $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $3 - local.get $1 - call $~lib/rt/pure/__retain local.set $2 - local.get $3 - i32.load offset=4 - local.set $4 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $for-loop|0 - local.get $5 - local.get $6 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $4 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $5 - local.get $3 - i32.const 3 - global.set $~argumentsLength - local.get $2 - i32.load - call_indirect (type $f32_i32_i32_=>_none) - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|0 - end - end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 - i32.const 0 - global.get $std/typedarray/forEachValues i32.const 0 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues - i32.const 1 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues - i32.const 2 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 5616 - call $~lib/typedarray/Float32Array#forEach - global.get $std/typedarray/forEachCallCount + call $~lib/typedarray/Uint32Array#__get i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 (param $0 f64) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - call $~lib/rt/pure/__retain local.set $2 - global.get $std/typedarray/forEachValues - local.get $1 - call $~lib/array/Array#__get - local.set $3 - local.get $0 - local.get $3 - f64.convert_i32_s - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 490 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $1 - global.get $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 4 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 491 - i32.const 5 + i32.const 544 + i32.const 393 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachSelf + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 492 - i32.const 5 + i32.const 544 + i32.const 394 + i32.const 3 call $~lib/builtins/abort unreachable end - global.get $std/typedarray/forEachCallCount - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.add - global.set $std/typedarray/forEachCallCount - local.get $2 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#forEach (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int64Array#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 $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $3 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $2 + local.tee $2 + i32.store offset=4 local.get $3 - i32.load offset=4 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Int64Array#get:length local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl i32.const 0 - local.set $5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 + i32.load offset=4 + local.set $7 + i32.const 0 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $5 - local.get $6 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $4 - local.get $5 + local.get $7 + local.get $9 i32.const 3 i32.shl i32.add - f64.load - local.get $5 + i64.load + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 i32.const 3 global.set $~argumentsLength local.get $2 i32.load - call_indirect (type $f64_i32_i32_=>_none) - local.get $5 + call_indirect (type $i64_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store + end + local.get $9 i32.const 1 i32.add - local.set $5 + local.set $9 br $for-loop|0 end end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $std/typedarray/forEachCallCount - i32.const 0 + local.get $8 i32.const 3 - call $~lib/typedarray/Float64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - global.set $std/typedarray/forEachSelf - local.get $1 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 i32.const 0 - global.get $std/typedarray/forEachValues + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - global.get $std/typedarray/forEachValues + i32.const 6 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 1 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - global.get $std/typedarray/forEachValues + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 2 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 5648 - call $~lib/typedarray/Float64Array#forEach - global.get $std/typedarray/forEachCallCount + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3152 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Int64Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 495 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 local.get $1 - i32.load offset=4 local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $for-loop|0 - local.get $3 - local.get $4 - i32.lt_u - local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load8_s - local.set $8 - local.get $6 - local.get $7 - i32.load8_s - i32.store8 - local.get $7 - local.get $8 - i32.store8 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 - end - end - local.get $1 - ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int8Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int8Array#subarray - local.tee $6 - call $~lib/typedarray/Int8Array#reverse - local.set $8 - local.get $8 - i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int64Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 529 + i32.const 544 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int8Array#__get - i32.const 7 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Int64Array#__get + i64.const 3 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 530 + i32.const 544 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 2 - call $~lib/typedarray/Int8Array#__get - i32.const 6 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 4 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int8Array#__get - i32.const 5 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 394 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#filter (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -21971,349 +22018,320 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i64) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Uint64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 + local.get $3 i32.load offset=4 - local.set $2 + local.set $7 i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $3 + local.get $9 local.get $4 - i32.lt_u - local.set $5 - local.get $5 + i32.lt_s + local.set $10 + local.get $10 if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 + local.get $7 + local.get $9 + i32.const 3 i32.shl i32.add - local.set $7 - local.get $6 - i32.load8_u - local.set $8 - local.get $6 - local.get $7 - i32.load8_u - i32.store8 - local.get $7 - local.get $8 - i32.store8 + i64.load + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + i64.store + end + local.get $9 i32.const 1 i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 + local.set $9 br $for-loop|0 end end - local.get $1 - ) - (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + local.get $8 + i32.const 3 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - local.get $4 + local.get $10 + i32.store + local.get $5 + local.get $10 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 4 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 + call $~lib/rt/itcms/__link local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 + local.get $9 + i32.store offset=8 local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add + local.get $10 i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub - i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.const 6 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3184 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Uint64Array#filter + local.tee $1 + i32.store offset=12 local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint8Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint8Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint8Array#subarray - local.tee $6 - call $~lib/typedarray/Uint8Array#reverse - local.set $8 - local.get $8 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - call $~lib/typedarray/Uint8Array#__get - i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 529 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8Array#__get - i32.const 7 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 530 + i32.const 544 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8Array#__get - i32.const 6 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Uint64Array#__get + i64.const 3 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint8Array#__get - i32.const 5 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 4 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#filter (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22321,171 +22339,320 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 f32) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/rt/pure/__retain - local.set $1 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Float32Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 2 + i32.shl + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 + local.get $3 i32.load offset=4 - local.set $2 + local.set $7 i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $3 + local.get $9 local.get $4 - i32.lt_u - local.set $5 - local.get $5 + i32.lt_s + local.set $10 + local.get $10 if - local.get $2 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 0 + local.get $7 + local.get $9 + i32.const 2 i32.shl i32.add - local.set $7 - local.get $6 - i32.load8_u - local.set $8 - local.get $6 - local.get $7 - i32.load8_u - i32.store8 - local.get $7 - local.get $8 - i32.store8 + f32.load + local.set $11 + local.get $11 + local.get $9 local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + if + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $11 + f32.store + end + local.get $9 i32.const 1 i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 + local.set $9 br $for-loop|0 end end - local.get $1 + local.get $8 + i32.const 2 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 ) - (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 - local.set $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - local.get $4 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 - local.get $3 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3216 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float32Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.eq + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 390 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $3 - local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 5 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 0 - i32.shl - i32.add + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store offset=4 - local.get $7 - local.get $3 - local.get $4 - i32.sub + local.get $2 + call $~lib/typedarray/Float32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 391 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.const 0 - i32.shl - i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + call $~lib/typedarray/Float32Array#__get + f32.const 3 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 392 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 4 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 393 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#filter (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22493,177 +22660,320 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 + (local $9 i32) + (local $10 i32) + (local $11 f64) + (local $12 i32) + (local $13 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=4 + local.get $3 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $~lib/typedarray/Float64Array#get:length + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.const 3 + i32.shl i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=16 + local.get $3 + i32.load offset=4 + local.set $7 i32.const 0 - local.set $6 + local.set $8 + i32.const 0 + local.set $9 loop $for-loop|0 - local.get $6 - local.get $1 + local.get $9 + local.get $4 i32.lt_s - local.set $7 - local.get $7 + local.set $10 + local.get $10 if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $6 - i32.const 1 + local.get $7 + local.get $9 + i32.const 3 + i32.shl i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if + f64.load + local.set $11 + local.get $11 + local.get $9 local.get $3 - local.get $6 - call $~lib/typedarray/Uint8ClampedArray#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 255 - i32.and - i32.eq - i32.eqz + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=20 + local.get $13 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $8 + local.tee $12 + i32.const 1 + i32.add + local.set $8 + local.get $12 + i32.const 3 + i32.shl + i32.add + local.get $11 + f64.store end - local.get $6 + local.get $9 i32.const 1 i32.add - local.set $6 - br $for-loop|1 + local.set $9 + br $for-loop|0 end end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.tee $6 - call $~lib/typedarray/Uint8ClampedArray#reverse - local.set $8 local.get $8 + i32.const 3 + i32.shl + local.set $9 + local.get $6 + local.get $9 + call $~lib/rt/itcms/__renew + local.set $10 + local.get $5 + local.get $10 + i32.store + local.get $5 + local.get $10 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $5 + local.get $9 + i32.store offset=8 + local.get $5 + local.get $10 + i32.store offset=4 + local.get $5 + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + ) + (func $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 6 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 5 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 3248 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/typedarray/Float64Array#filter + local.tee $1 + i32.store offset=12 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 529 + i32.const 544 + i32.const 390 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 7 + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float64Array#get:length + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 530 + i32.const 544 + i32.const 391 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 6 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 3 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 392 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 5 - i32.eq + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 393 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $2 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 394 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22671,171 +22981,190 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load16_s - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.load16_s - i32.store16 - local.get $7 - local.get $8 - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3280 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#some + local.set $1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.ne + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl + i32.const 3312 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Int8Array#some + local.set $2 + local.get $2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + 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 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -22843,183 +23172,190 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int16Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if + local.get $4 + local.get $5 i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const 0 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int16Array#subarray - local.tee $6 - call $~lib/typedarray/Int16Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.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/typedarray/Int16Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Int16Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Int16Array#__get i32.const 6 - i32.eq + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3344 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#some + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int16Array#__get - i32.const 5 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3376 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23027,171 +23363,190 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load16_u - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.load16_u - i32.store16 - local.get $7 - local.get $8 - i32.store16 - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3408 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.ne + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 1 - i32.shl - i32.add i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub - i32.const 1 - i32.shl + i32.const 3440 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#some + local.set $2 + local.get $2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + 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 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23199,177 +23554,190 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint16Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint16Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.const 65535 - i32.and - i32.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const 0 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint16Array#subarray - local.tee $6 - call $~lib/typedarray/Uint16Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Uint16Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint16Array#__get - i32.const 7 - i32.eq + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3472 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#some + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 530 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 2 - call $~lib/typedarray/Uint16Array#__get - i32.const 6 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3504 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint16Array#__get - i32.const 5 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 532 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23377,236 +23745,381 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - call $~lib/typedarray/Int32Array#reverse - call $~lib/rt/pure/__release i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 4 - i32.const 8 - call $~lib/typedarray/Int32Array#subarray - local.tee $6 - call $~lib/typedarray/Int32Array#reverse - local.set $8 - local.get $8 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3536 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#some + local.set $1 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 8 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 529 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 7 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3568 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 530 + i32.const 544 + 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 + ) + (func $~lib/typedarray/Int32Array#some (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 0 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Int32Array#__get i32.const 6 - i32.eq + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3600 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#some + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int32Array#__get - i32.const 5 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3632 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint32Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23614,171 +24127,190 @@ (local $6 i32) (local $7 i32) (local $8 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - i32.load - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.load - i32.store - local.get $7 - local.get $8 - i32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3664 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $3 + call $~lib/typedarray/Uint32Array#some + local.set $1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.ne + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 2 - i32.shl - i32.add i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub - i32.const 2 - i32.shl + i32.const 3696 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Uint32Array#some + local.set $2 + local.get $2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + 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 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int64Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -23786,343 +24318,381 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i32.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const 0 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint32Array#subarray - local.tee $6 - call $~lib/typedarray/Uint32Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Uint32Array#__get - i32.const 8 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint32Array#__get - i32.const 7 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Uint32Array#__get - i32.const 6 - i32.eq + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3728 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#some + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint32Array#__get - i32.const 5 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3760 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint64Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - i64.load - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i64.load - i64.store - local.get $7 - local.get $8 - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3792 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#some + local.set $1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.ne + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl + i32.const 3824 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Uint64Array#some + local.set $2 + local.get $2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + 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 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24130,346 +24700,381 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Int64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Int64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const 0 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Int64Array#subarray - local.tee $6 - call $~lib/typedarray/Int64Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Int64Array#__get - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Int64Array#__get - i64.const 7 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 2 - call $~lib/typedarray/Int64Array#__get - i64.const 6 - i64.eq + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3856 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#some + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 415 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Int64Array#__get - i64.const 5 - i64.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3888 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#some + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 417 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Float64Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - i64.load - local.set $8 - local.get $6 - local.get $7 - i64.load - i64.store + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 local.get $7 - local.get $8 - i64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + if + i32.const 1 + br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const 0 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - local.get $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3920 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $3 + call $~lib/typedarray/Float64Array#some + local.set $1 + local.get $1 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 + i32.ne + i32.eqz + if i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select + i32.const 544 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 - i32.const 3 - i32.shl - i32.add i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub - i32.const 3 - i32.shl + i32.const 3952 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Float64Array#some + local.set $2 + local.get $2 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 544 + 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 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Int8Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24477,346 +25082,383 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Uint64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Uint64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - i64.extend_i32_s - i64.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if + local.get $4 + local.get $5 i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const -1 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Uint64Array#subarray - local.tee $6 - call $~lib/typedarray/Uint64Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/typedarray/Uint64Array#__get - i64.const 8 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 i32.const 1 - call $~lib/typedarray/Uint64Array#__get - i64.const 7 - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 2 - call $~lib/typedarray/Uint64Array#__get - i64.const 6 - i64.eq + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3984 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Uint64Array#__get - i64.const 5 - i64.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4016 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Uint8Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.set $7 - local.get $6 - f32.load - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - f32.load - f32.store - local.get $7 - local.get $8 - f32.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const -1 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 local.set $3 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - local.get $4 - i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $4 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $4 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.const 0 - i32.lt_s - if (result i32) - local.get $6 - local.get $3 - i32.add - local.tee $7 - i32.const 0 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - else - local.get $3 - local.tee $8 - local.get $6 - local.tee $7 - local.get $8 - local.get $7 - i32.lt_s - select - end + i32.const 1 + call $~lib/typedarray/Uint8Array#__set + local.get $0 local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.tee $7 - local.get $4 - local.tee $8 - local.get $7 - local.get $8 - i32.gt_s - select - local.set $3 - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $5 - i32.load - call $~lib/rt/pure/__retain - i32.store - local.get $7 - local.get $5 - i32.load offset=4 - local.get $4 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 2 - i32.shl - i32.add + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=4 - local.get $7 local.get $3 - local.get $4 - i32.sub i32.const 2 - i32.shl + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4048 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 + local.get $3 + call $~lib/typedarray/Uint8Array#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4080 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Uint8ClampedArray#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -24824,5444 +25466,6716 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 - i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 + 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 local.get $5 local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end - local.get $3 - call $~lib/typedarray/Float32Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Float32Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - f32.convert_i32_s - f32.eq - i32.eqz + i32.lt_s + local.set $7 + local.get $7 if + local.get $4 + local.get $5 i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 end + i32.const -1 end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float32Array#subarray - local.tee $6 - call $~lib/typedarray/Float32Array#reverse local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer local.get $8 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/typedarray/Float32Array#__get - f32.const 8 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 i32.const 1 - call $~lib/typedarray/Float32Array#__get - f32.const 7 - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 2 - call $~lib/typedarray/Float32Array#__get - f32.const 6 - f32.eq + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4112 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Float32Array#__get - f32.const 5 - f32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4144 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) - local.get $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.load offset=4 - local.set $2 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - local.set $4 - loop $for-loop|0 + 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - local.get $4 - i32.lt_u + i32.load offset=4 + local.set $4 + i32.const 0 local.set $5 - local.get $5 - if - local.get $2 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $2 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.set $7 - local.get $6 - f64.load - local.set $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - f64.load - f64.store - local.get $7 - local.get $8 - f64.store - local.get $3 - i32.const 1 - i32.add - local.set $3 - local.get $4 - i32.const 1 - i32.sub - local.set $4 - br $for-loop|0 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end + i32.const -1 end - local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayFindIndex<~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 $std/typedarray/testArrayReverseValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $4 - call $~lib/rt/pure/__retain - local.set $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $6 - loop $for-loop|0 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $5 - local.get $6 - local.get $0 - local.get $6 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - call $~lib/typedarray/Float64Array#reverse - call $~lib/rt/pure/__release - i32.const 0 - local.set $6 - loop $for-loop|1 - local.get $6 - local.get $1 - i32.lt_s - local.set $7 - local.get $7 - if - local.get $3 - local.get $6 - call $~lib/typedarray/Float64Array#__get - local.get $0 - local.get $1 - i32.const 1 - i32.sub - local.get $6 - i32.sub - call $~lib/array/Array#__get - f64.convert_i32_s - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 524 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $for-loop|1 - end - end - local.get $5 - i32.const 4 - i32.const 8 - call $~lib/typedarray/Float64Array#subarray - local.tee $6 - call $~lib/typedarray/Float64Array#reverse - local.set $8 - local.get $8 i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 8 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 529 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 530 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4176 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 531 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4208 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 532 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint16Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 + loop $for-loop|0 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 local.get $6 - local.get $7 i32.lt_s - local.set $9 - local.get $9 + local.set $7 + local.get $7 if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_s local.get $4 - i32.const 24 + local.get $5 + i32.const 1 i32.shl - i32.const 24 - i32.shr_s - i32.eq + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - local.get $6 - local.set $10 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 end - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $while-continue|0 + local.set $5 + br $for-loop|0 end end i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4240 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4272 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 + loop $for-loop|0 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_s local.get $4 - i32.const 24 + local.get $5 + i32.const 2 i32.shl - i32.const 24 - i32.shr_s - i32.eq + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) if - local.get $6 - local.set $10 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 end - local.get $6 + local.get $5 i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 + i32.add + local.set $5 + br $for-loop|0 end end i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int8Array#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 - call $~lib/typedarray/Int8Array#get:length - local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int8Array#lastIndexOf + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 + i32.const 4304 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findIndex + local.set $1 + local.get $1 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 563 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int8Array#indexOf + i32.store offset=4 + local.get $3 + i32.const 4336 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#findIndex + local.set $2 + local.get $2 i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int8Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const -1 end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.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/typedarray/Int8Array#lastIndexOf@varargs + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.const -1 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 i32.const 3 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4368 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findIndex + local.set $1 + local.get $1 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs - i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 4400 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#findIndex + local.set $2 + local.get $2 i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 573 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const -1 end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.const 1 - i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4432 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 local.get $3 + call $~lib/typedarray/Int64Array#findIndex + local.set $1 + local.get $1 i32.const 1 - i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf - i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 576 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int8Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + i32.store offset=4 + local.get $3 + i32.const 4464 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#findIndex + local.set $2 + local.get $2 i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 4 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - i32.eq - i32.eqz - if + 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + local.get $5 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const -1 end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const 5 - i32.const 4 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 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 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 + i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4496 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findIndex + local.set $1 + local.get $1 i32.const 1 - call $~lib/typedarray/Int8Array#indexOf - i32.const 5 - i32.const 4 - i32.sub i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 586 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4528 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#findIndex + local.set $2 + local.get $2 i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 587 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float32Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 + loop $for-loop|0 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 local.get $6 - local.get $7 i32.lt_s - local.set $9 - local.get $9 + local.set $7 + local.get $7 if - local.get $8 - local.get $6 - i32.const 0 + local.get $4 + local.get $5 + i32.const 2 i32.shl i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq + f32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) if - local.get $6 - local.set $10 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 end - local.get $6 + local.get $5 i32.const 1 i32.add - local.set $6 - br $while-continue|0 + local.set $5 + br $for-loop|0 end end i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Uint8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4560 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findIndex + local.set $1 + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 438 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4592 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#findIndex + local.set $2 + local.get $2 + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 440 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#findIndex (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result 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 + block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float64Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 + loop $for-loop|0 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 if - local.get $8 - local.get $6 - i32.const 0 + local.get $4 + local.get $5 + i32.const 3 i32.shl i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq + f64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) if - local.get $6 - local.set $10 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $6 + local.get $5 i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 + i32.add + local.set $5 + br $for-loop|0 end end i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8Array#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 - call $~lib/typedarray/Uint8Array#get:length - local.set $2 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8Array#lastIndexOf + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4624 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findIndex + local.set $1 + local.get $1 + i32.const 1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 557 + i32.const 544 + i32.const 438 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf + i32.store offset=4 + local.get $3 + i32.const 4656 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#findIndex + local.set $2 + local.get $2 i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 558 + i32.const 544 + i32.const 440 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#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) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $3 - i32.const 3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 + i32.store offset=4 + local.get $3 + i32.const 0 i32.const 2 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 3 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4688 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#every + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 4720 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int8Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 563 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 4 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4752 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#every + local.set $1 + local.get $1 i32.const 0 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const -1 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 4784 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 568 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#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) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - global.set $~argumentsLength + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4816 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $1 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint8Array#lastIndexOf@varargs - i32.const 3 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 3 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 4848 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 571 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8Array#lastIndexOf + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 - i32.eq + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4880 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#every + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 572 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const -1 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 4912 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int16Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 573 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint8Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint8Array#subarray - local.set $6 - local.get $6 - i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4944 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#every + local.set $1 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4976 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint16Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 5 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - i32.eq - i32.eqz - if + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $6 - i32.const 9 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint8Array#indexOf - i32.const 5 i32.const 4 - i32.sub - i32.eq + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5008 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#every + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 586 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint8Array#indexOf - i32.const -1 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5040 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int32Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 587 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint32Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 + loop $for-loop|0 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 local.get $6 - local.get $7 i32.lt_s - local.set $9 - local.get $9 + local.set $7 + local.get $7 if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 + block $for-continue|0 + local.get $4 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $4 - i32.const 255 - i32.and - i32.eq - if - local.get $6 - local.set $10 + i32.const 2 + i32.shl + i32.add + i32.load local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + local.get $5 i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.add + local.set $5 + br $for-loop|0 end - unreachable end - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $2 + i32.const 1 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 11 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.const 3 i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 6 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq + i32.const 5072 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#every + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 563 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 5104 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint32Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 1 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#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) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 1 - global.set $~argumentsLength + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 local.get $3 - i32.const 11 i32.const 1 - global.set $~argumentsLength + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5136 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#every + local.set $1 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const -1 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 568 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const -1 - i32.eq + i32.store offset=4 + local.get $3 + i32.const 5168 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Int64Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 569 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint8ClampedArray#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $6 - local.get $6 - i32.const 3 + i32.store offset=4 + local.get $3 + i32.const 2 + i64.const 6 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5200 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#every + local.set $1 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5232 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Uint64Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 5 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 i32.sub - i32.eq - i32.eqz - if + 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + block $for-continue|0 + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + i32.const 1 end - local.get $6 - i32.const 9 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + f32.const 6 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5264 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#every + local.set $1 + local.get $1 + i32.const 0 + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 586 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#indexOf - i32.const -1 - i32.eq + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 5296 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float32Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 587 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float64Array#every (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result 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 + block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 - local.get $2 - local.set $3 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float64Array#get:length local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else + loop $for-loop|0 + local.get $5 local.get $6 + i32.lt_s + local.set $7 local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 + block $for-continue|0 + local.get $4 local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int16Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.eq - if - local.get $6 - local.set $10 + i32.const 3 + i32.shl + i32.add + f64.load local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_i32_i32_=>_i32) + if + br $for-continue|0 + end + i32.const 0 + br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $1of1 - block $0of1 - block $outOfRange - global.get $~argumentsLength + local.get $5 i32.const 1 - i32.sub - br_table $0of1 $1of1 $outOfRange + i32.add + local.set $5 + br $for-loop|0 end - unreachable end - local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.set $2 + i32.const 1 end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int16Array#lastIndexOf + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - local.get $1 - call $~lib/typedarray/Int16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 11 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const -1 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 2 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 5328 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int16Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=8 local.get $3 + call $~lib/typedarray/Float64Array#every + local.set $1 + local.get $1 i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 0 - i32.eq + i32.ne i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 + i32.const 544 + i32.const 461 i32.const 3 call $~lib/builtins/abort unreachable end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.store offset=4 local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const -1 - i32.eq + i32.const 5360 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/typedarray/Float64Array#every + local.set $2 + local.get $2 + i32.eqz i32.eqz if i32.const 0 - i32.const 336 - i32.const 569 + i32.const 544 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (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 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs - i32.const 3 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + local.get $3 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 3 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 1 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5472 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 574 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 255 + i32.and local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const 1 + i32.const 255 + i32.and i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int16Array#subarray - local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 4 - i32.const 4 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5504 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 255 + i32.and + local.get $3 + i32.const 255 + i32.and i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 + global.get $std/typedarray/forEachCallCount i32.const 1 - call $~lib/typedarray/Int16Array#indexOf - i32.const 5 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#forEach (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint16Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $4 - i32.const 65535 - i32.and - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint16Array#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 - call $~lib/typedarray/Uint16Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint16Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + 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 local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Uint16Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set local.get $4 + local.get $5 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|0 end end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint16Array#indexOf + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5536 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const 0 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 11 + global.get $std/typedarray/forEachCallCount i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $4 i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 - i32.const 1 - global.set $~argumentsLength + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5568 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int16Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + i32.const 65535 + i32.and local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 3 + i32.const 65535 + i32.and i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const 1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint16Array#lastIndexOf + global.get $std/typedarray/forEachCallCount i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint16Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint16Array#subarray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint16Array#get:length local.set $6 - local.get $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 4 - i32.const 4 - i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5600 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint16Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 + global.get $std/typedarray/forEachCallCount i32.const 1 - call $~lib/typedarray/Uint16Array#indexOf - i32.const 5 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Uint16Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#forEach (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 + local.get $3 + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end local.get $6 - i32.const 0 i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int32Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int32Array#get:length local.set $7 local.get $7 - i32.const 0 - i32.eq if - i32.const -1 - local.set $8 + local.get $4 local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 + i32.const 2 + i32.shl i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int32Array#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 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if + i32.load + local.get $5 local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|0 end end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#indexOf + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5632 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int32Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Int32Array#indexOf - i32.const 1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const 0 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 11 + global.get $std/typedarray/forEachCallCount i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $4 i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 - i32.const 1 - global.set $~argumentsLength + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#lastIndexOf@varargs + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5664 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint32Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 3 - i32.eq + i64.extend_i32_s + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const 1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Int32Array#lastIndexOf + global.get $std/typedarray/forEachCallCount i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Int32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Int32Array#subarray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Int64Array#get:length local.set $6 - local.get $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 4 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 4 - i32.const 4 - i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5696 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Int64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64>~anonymous|0 (param $0 i64) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 + local.get $3 + i64.extend_i32_s + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 10 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 11 - i32.const 0 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $6 - i32.const 5 + global.get $std/typedarray/forEachCallCount i32.const 1 - call $~lib/typedarray/Int32Array#indexOf - i32.const 5 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 - i32.const 2 - call $~lib/typedarray/Int32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint64Array#forEach (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) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint32Array#lastIndexOf (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) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $4 - i32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Uint32Array#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 - call $~lib/typedarray/Uint32Array#get:length - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint32Array#lastIndexOf - ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + 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 local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/typedarray/Uint32Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 + i32.store offset=4 + local.get $3 + i32.load offset=4 local.set $4 + i32.const 0 + local.set $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $i64_i32_i32_=>_none) + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|0 end end - local.get $3 - i32.const 0 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 11 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const -1 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 559 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 i32.const 3 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 560 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#indexOf + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5728 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Uint64Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 (param $0 f32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 local.get $3 - i32.const 1 - i32.const 10 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq + f32.convert_i32_s + f32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -100 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const 0 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 11 + global.get $std/typedarray/forEachCallCount i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const -1 - i32.const 1 - global.set $~argumentsLength + i32.load offset=4 + local.set $4 i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $5 local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f32_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 3 - i32.const 1 - global.set $~argumentsLength + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5760 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float32Array#forEach + global.get $std/typedarray/forEachCallCount i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 570 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + 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) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - 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 + i32.const 0 + i32.store + global.get $std/typedarray/forEachValues + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $1 + call $~lib/array/Array#__get + local.set $3 + local.get $0 local.get $3 - i32.const 3 - i32.const 3 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 3 - i32.eq + f64.convert_i32_s + f64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 + i32.const 544 + i32.const 490 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 - i32.const 2 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 + local.get $1 + global.get $std/typedarray/forEachCallCount i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 + i32.const 544 + i32.const 491 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const 100 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const 1 + global.get $std/typedarray/forEachSelf + local.get $2 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 + i32.const 544 + i32.const 492 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 1 - i32.const -10 - call $~lib/typedarray/Uint32Array#lastIndexOf + global.get $std/typedarray/forEachCallCount i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#forEach (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $2 + i32.store offset=4 local.get $3 - i32.const 1 - i32.const -11 - call $~lib/typedarray/Uint32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.load offset=4 + local.set $4 + i32.const 0 + local.set $5 local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint32Array#subarray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $~lib/typedarray/Float64Array#get:length local.set $6 - local.get $6 - i32.const 3 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + local.set $7 + local.get $7 + if + local.get $4 + local.get $5 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $5 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=12 + local.get $8 + i32.const 3 + global.set $~argumentsLength + local.get $2 + i32.load + call_indirect (type $f64_i32_i32_=>_none) + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end end - local.get $6 - i32.const 4 - i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 4 - i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + 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/typedarray/Uint32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 9 + i32.store offset=8 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 10 + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 11 + i32.const 3 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + global.set $std/typedarray/forEachSelf + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - call $~lib/typedarray/Uint32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i32.const 5 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 - call $~lib/typedarray/Uint32Array#indexOf - i32.const -1 + global.get $std/typedarray/forEachValues + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 5792 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/typedarray/Float64Array#forEach + global.get $std/typedarray/forEachCallCount + i32.const 3 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 587 + i32.const 544 + i32.const 495 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int8Array#reverse (param $0 i32) (result 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) (local $8 i32) (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 local.get $3 - local.set $6 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s if - local.get $7 - local.get $6 - i32.add - local.tee $8 + local.get $2 + local.get $3 i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select + i32.shl + i32.add local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $7 local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 + i32.load8_s local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else local.get $6 local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (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 + i32.load8_s + i32.store8 + local.get $7 + local.get $8 + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.set $2 end - local.get $0 local.get $1 - local.get $2 - call $~lib/typedarray/Int64Array#lastIndexOf + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -30269,18 +32183,45 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - call $~lib/typedarray/Int64Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|0 @@ -30290,13 +32231,46 @@ local.set $5 local.get $5 if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 local.get $4 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Int64Array#__set + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set local.get $4 i32.const 1 i32.add @@ -30304,648 +32278,854 @@ br $for-loop|0 end end - local.get $3 - i64.const 0 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int8Array#reverse + drop i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Int8Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 - i64.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int8Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int8Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + call $~lib/typedarray/Int8Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 559 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int8Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 560 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 561 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#indexOf + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 3 + call $~lib/typedarray/Int8Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Int64Array#indexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 565 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer i64.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 11 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const -1 - i32.const 1 - global.set $~argumentsLength + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load8_u + local.set $8 + local.get $6 + local.get $7 + i32.load8_u + i32.store8 + local.get $7 + local.get $8 + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end + end + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/typedarray/Uint8Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $4 local.get $3 - i64.const 3 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 local.get $3 - i64.const 3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.const 4 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 local.get $3 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - local.get $3 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Int64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8Array#reverse + drop + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Uint8Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 i32.const 4 - i32.const 9 - call $~lib/typedarray/Int64Array#subarray - local.set $6 + i32.const 8 + call $~lib/typedarray/Uint8Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8Array#reverse + local.tee $6 + i32.store offset=20 local.get $6 - i64.const 3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + call $~lib/typedarray/Uint8Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 582 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint8Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 583 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i64.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length i32.const 1 - call $~lib/typedarray/Int64Array#indexOf - i32.const 5 - i32.const 4 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Int64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (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 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + local.set $4 + loop $for-loop|0 local.get $3 - local.set $6 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s if - local.get $7 - local.get $6 - i32.add - local.tee $8 + local.get $2 + local.get $3 i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select + i32.shl + i32.add local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 + local.get $2 + local.get $4 + i32.const 0 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load8_u + local.set $8 local.get $6 local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end + i32.load8_u + i32.store8 + local.get $7 + local.get $8 + i32.store8 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 end + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8ClampedArray#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $4 - i64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 + select end - ) - (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (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 - call $~lib/typedarray/Uint64Array#get:length - local.set $2 + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint64Array#lastIndexOf + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 0 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 0 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -30953,18 +33133,45 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - call $~lib/typedarray/Uint64Array#constructor + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|0 @@ -30974,13 +33181,42 @@ local.set $5 local.get $5 if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 local.get $4 call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set local.get $4 i32.const 1 i32.add @@ -30988,648 +33224,1197 @@ br $for-loop|0 end end - local.get $3 - i64.const 0 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#reverse + drop i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Uint8ClampedArray#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.const 255 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 557 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 558 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const -1 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 559 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 560 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 561 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load16_s + local.set $8 + local.get $6 + local.get $7 + i32.load16_s + i32.store16 + local.get $7 + local.get $8 + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 3 - i32.eq - i32.eqz - if + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/typedarray/Int16Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $4 local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 local.get $3 - i64.const 1 - i32.const 10 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 1 + i32.shl + i32.add + i32.store offset=4 + local.get $7 local.get $3 - i64.const 1 - i32.const -100 - call $~lib/typedarray/Uint64Array#indexOf + local.get $4 + i32.sub i32.const 1 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayReverse<~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) + 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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int16Array#reverse + drop + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Int16Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int16Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int16Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 565 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 0 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 0 + call $~lib/typedarray/Int16Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 567 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 11 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Int16Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 568 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const -1 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const -1 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Int16Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 569 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i64.const 3 - i32.const 1 - global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 i32.const 0 - call $~lib/typedarray/Uint64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i64.const 3 - i32.const 4 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.set $7 + local.get $6 + i32.load16_u + local.set $8 + local.get $6 + local.get $7 + i32.load16_u + i32.store16 + local.get $7 + local.get $8 + i32.store16 + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - local.get $3 - i64.const 3 - i32.const 3 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/typedarray/Uint16Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $4 local.get $3 - i64.const 3 - i32.const 2 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 local.get $3 - i64.const 1 - i32.const 100 - call $~lib/typedarray/Uint64Array#lastIndexOf + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 + local.get $7 local.get $3 - i64.const 1 - i32.const -10 - call $~lib/typedarray/Uint64Array#lastIndexOf + local.get $4 + i32.sub i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + 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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - local.get $3 - i64.const 1 - i32.const -11 - call $~lib/typedarray/Uint64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint16Array#reverse + drop + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Uint16Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 i32.const 4 - i32.const 9 - call $~lib/typedarray/Uint64Array#subarray - local.set $6 + i32.const 8 + call $~lib/typedarray/Uint16Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint16Array#reverse + local.tee $6 + i32.store offset=20 local.get $6 - i64.const 3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 + call $~lib/typedarray/Uint16Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 4 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint16Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 581 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 5 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint16Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 582 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - i64.const 9 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint16Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 583 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - i64.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 11 - i32.const 0 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int32Array#get:length i32.const 1 - call $~lib/typedarray/Uint64Array#indexOf - i32.const 5 - i32.const 4 i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - i64.const 5 - i32.const 2 - call $~lib/typedarray/Uint64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + local.set $4 + loop $for-loop|0 local.get $3 - local.set $6 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s if - local.get $7 - local.get $6 + local.get $2 + local.get $3 + i32.const 2 + i32.shl i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.set $7 local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $4 - f32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float32Array#lastIndexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 + i32.load local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else local.get $6 local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $4 - f32.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - end - ) - (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (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 + i32.load + i32.store + local.get $7 + local.get $8 + i32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.set $2 end - local.get $0 local.get $1 - local.get $2 - call $~lib/typedarray/Float32Array#lastIndexOf + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -31637,18 +34422,45 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - call $~lib/typedarray/Float32Array#constructor + call $~lib/typedarray/Int32Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|0 @@ -31658,13 +34470,38 @@ local.set $5 local.get $5 if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 local.get $4 call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set + call $~lib/typedarray/Int32Array#__set local.get $4 i32.const 1 i32.add @@ -31672,648 +34509,844 @@ br $for-loop|0 end end - local.get $3 - f32.const 0 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 11 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int32Array#reverse + drop i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Int32Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 - f32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + 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=4 + local.get $7 + call $~lib/typedarray/Int32Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 + call $~lib/typedarray/Int32Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 559 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 560 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 3 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 561 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#indexOf + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 3 + call $~lib/typedarray/Int32Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 1 - i32.const 10 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 564 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 1 - i32.const -100 - call $~lib/typedarray/Float32Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $4 + 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 $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - local.get $3 - f32.const 0 - i32.const 1 - global.set $~argumentsLength + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/typedarray/Uint32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + local.get $4 i32.const 0 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $4 local.get $3 - f32.const 11 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 local.get $3 - f32.const -1 - i32.const 1 - global.set $~argumentsLength + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 local.get $3 - f32.const 3 - i32.const 1 - global.set $~argumentsLength + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + 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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Float32Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 4 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f32.const 3 - i32.const 3 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - local.get $3 - f32.const 3 - i32.const 2 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint32Array#reverse + drop + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Uint32Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 - f32.const 1 - i32.const 100 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const 1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint32Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Uint32Array#__get + i32.const 8 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 574 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 1 - i32.const -10 - call $~lib/typedarray/Float32Array#lastIndexOf + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 1 + call $~lib/typedarray/Uint32Array#__get + i32.const 7 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 575 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f32.const 1 - i32.const -11 - call $~lib/typedarray/Float32Array#lastIndexOf - i32.const -1 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint32Array#__get + i32.const 6 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 576 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float32Array#subarray - local.set $6 local.get $6 - f32.const 3 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint32Array#__get + i32.const 5 i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 580 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $6 - f32.const 4 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 9 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 10 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 584 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 11 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 585 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 1 - call $~lib/typedarray/Float32Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 586 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f32.const 5 - i32.const 2 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 587 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#reverse (param $0 i32) (result 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) - (local $8 i32) + (local $8 i64) (local $9 i32) - (local $10 i32) - block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 local.get $3 - local.set $6 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s if - local.get $7 - local.get $6 + local.get $2 + local.get $3 + i32.const 3 + i32.shl i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $6 + i64.load + local.set $8 local.get $6 local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $4 - f64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end + i64.load + i64.store + local.get $7 + local.get $8 + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 end + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Int64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if - i32.const -1 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.set $6 - else - local.get $6 - local.get $7 - i32.ge_s - if - local.get $7 - i32.const 1 - i32.sub - local.set $6 - end - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - i32.const 0 - i32.ge_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $4 - f64.eq - if - local.get $6 - local.set $10 - local.get $5 - call $~lib/rt/pure/__release - local.get $10 - br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.sub - local.set $6 - br $while-continue|0 - end - end - i32.const -1 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 + select end - ) - (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (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 - call $~lib/typedarray/Float64Array#get:length - local.set $2 + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 + i32.const 0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array#lastIndexOf + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 3 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 3 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -32321,18 +35354,45 @@ (local $4 i32) (local $5 i32) (local $6 i32) - global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues - call $~lib/rt/pure/__retain - local.set $0 + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Int64Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store offset=12 i32.const 0 local.set $4 loop $for-loop|0 @@ -32342,13 +35402,40 @@ local.set $5 local.get $5 if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $4 local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 local.get $4 call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set local.get $4 i32.const 1 i32.add @@ -32356,2512 +35443,2334 @@ br $for-loop|0 end end - local.get $3 - f64.const 0 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 557 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 11 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int64Array#reverse + drop i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 558 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Int64Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 - f64.const -1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Int64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Int64Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 8 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 559 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f64.const 3 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.eq + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Int64Array#__get + i64.const 7 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 560 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f64.const 3 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const 3 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 561 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#indexOf + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 562 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 563 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const 10 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq + call $~lib/typedarray/Int64Array#__get + i64.const 5 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 564 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - f64.const 1 - i32.const -100 - call $~lib/typedarray/Float64Array#indexOf + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i64) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 565 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 + if + local.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $2 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.set $7 + local.get $6 + i64.load + local.set $8 + local.get $6 + local.get $7 + i64.load + i64.store + local.get $7 + local.get $8 + i64.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 + end end - local.get $3 - f64.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $~lib/typedarray/Uint64Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 567 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 11 - i32.const 1 - global.set $~argumentsLength + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + local.get $4 i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 568 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $4 local.get $3 - f64.const -1 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const -1 - i32.eq - i32.eqz - if + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - i32.const 336 - i32.const 569 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 local.get $3 - f64.const 3 - i32.const 1 - global.set $~argumentsLength + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 i32.const 0 - call $~lib/typedarray/Float64Array#lastIndexOf@varargs - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 570 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 4 - call $~lib/typedarray/Float64Array#lastIndexOf + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 571 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.shl + i32.add + i32.store offset=4 + local.get $7 local.get $3 - f64.const 3 - i32.const 3 - call $~lib/typedarray/Float64Array#lastIndexOf + local.get $4 + i32.sub i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 572 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 3 - i32.const 2 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 573 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const 100 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 574 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const -10 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 575 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - f64.const 1 - i32.const -11 - call $~lib/typedarray/Float64Array#lastIndexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 576 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 4 - i32.const 9 - call $~lib/typedarray/Float64Array#subarray - local.set $6 - local.get $6 - f64.const 3 + i32.shl + i32.store offset=8 + local.get $7 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + 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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 580 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 4 + local.get $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 4 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 581 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $6 - f64.const 5 + local.get $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store offset=12 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 582 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end end - local.get $6 - f64.const 9 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint64Array#reverse + drop i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 583 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Uint64Array#__get + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + i64.extend_i32_s + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + 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 $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Uint64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Uint64Array#reverse + local.tee $6 + i32.store offset=20 local.get $6 - f64.const 10 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq + call $~lib/typedarray/Uint64Array#__get + i64.const 8 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 584 + i32.const 544 + i32.const 529 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - f64.const 11 - i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Uint64Array#__get + i64.const 7 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 585 + i32.const 544 + i32.const 530 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - f64.const 5 - i32.const 1 - call $~lib/typedarray/Float64Array#indexOf - i32.const 5 - i32.const 4 - i32.sub - i32.eq + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Uint64Array#__get + i64.const 6 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 586 + i32.const 544 + i32.const 531 i32.const 3 call $~lib/builtins/abort unreachable end local.get $6 - f64.const 5 - i32.const 2 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Uint64Array#__get + i64.const 5 + i64.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 587 + i32.const 544 + i32.const 532 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#reverse (param $0 i32) (result 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) - (local $8 i32) + (local $8 f32) (local $9 i32) - (local $10 f64) - (local $11 i32) - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 1 - drop + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 local.get $3 - local.set $6 + local.get $4 + i32.lt_u + local.set $5 local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const 0 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 0 - i32.lt_s if - local.get $7 - local.get $6 + local.get $2 + local.get $3 + i32.const 2 + i32.shl i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 + local.get $2 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.set $7 + local.get $6 + f32.load + local.set $8 local.get $6 local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $10 - local.get $10 - local.get $4 - f64.eq - if (result i32) - i32.const 1 - else - local.get $10 - local.get $10 - f64.ne - local.get $4 - local.get $4 - f64.ne - i32.and - end - if - i32.const 1 - local.set $11 - local.get $5 - call $~lib/rt/pure/__release - local.get $11 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end + f32.load + f32.store + local.get $7 + local.get $8 + f32.store + local.get $3 + i32.const 1 + i32.add + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|0 end - i32.const 0 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/typedarray/Float32Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (func $~lib/typedarray/Float32Array#subarray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) - (local $11 i32) - block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - i32.const 1 - drop - local.get $3 - local.set $6 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $7 - local.get $7 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - else - local.get $6 - local.get $7 - i32.ge_s - end - if - i32.const 0 - local.set $8 - local.get $5 - call $~lib/rt/pure/__release - local.get $8 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + local.get $4 + i32.const 0 + i32.lt_s + if (result i32) local.get $6 + local.get $4 + i32.add + local.tee $7 i32.const 0 - i32.lt_s - if - local.get $7 - local.get $6 - i32.add - local.tee $8 - i32.const 0 - local.tee $9 - local.get $8 - local.get $9 - i32.gt_s - select - local.set $6 - end - local.get $5 - i32.load offset=4 - local.set $8 - loop $while-continue|0 - local.get $6 - local.get $7 - i32.lt_s - local.set $9 - local.get $9 - if - local.get $8 - local.get $6 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $10 - local.get $4 - f32.eq - if (result i32) - i32.const 1 - else - local.get $10 - local.get $10 - f32.ne - local.get $4 - local.get $4 - f32.ne - i32.and - end - if - i32.const 1 - local.set $11 - local.get $5 - call $~lib/rt/pure/__release - local.get $11 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 - end - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $while-continue|0 - end - end + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $4 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select + end + local.set $4 + local.get $3 + i32.const 0 + i32.lt_s + if (result i32) + local.get $6 + local.get $3 + i32.add + local.tee $7 i32.const 0 - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + else + local.get $3 + local.tee $8 + local.get $6 + local.tee $7 + local.get $8 + local.get $7 + i32.lt_s + select end + local.set $3 + local.get $3 + local.tee $7 + local.get $4 + local.tee $8 + local.get $7 + local.get $8 + i32.gt_s + select + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=8 + local.get $5 + i32.load + local.set $8 + local.get $7 + local.get $8 + i32.store + local.get $7 + local.get $8 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $7 + local.get $5 + i32.load offset=4 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.store offset=4 + local.get $7 + local.get $3 + local.get $4 + i32.sub + i32.const 2 + i32.shl + i32.store offset=8 + local.get $7 + 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/number/decimalCount32 (param $0 i32) (result i32) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + 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/typedarray/testArrayReverseValues + local.tee $0 + i32.store local.get $0 - i32.const 100000 - i32.lt_u - if - local.get $0 - i32.const 100 - i32.lt_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 if - i32.const 1 - local.get $0 - i32.const 10 - i32.ge_u - i32.add - return - else - i32.const 3 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 local.get $0 - i32.const 10000 - i32.ge_u - i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 local.get $0 - i32.const 1000 - i32.ge_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set + local.get $4 + i32.const 1 i32.add - return + local.set $4 + br $for-loop|0 end - unreachable - else - local.get $0 - i32.const 10000000 - i32.lt_u + end + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float32Array#reverse + drop + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 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 $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Float32Array#__get local.get $0 - i32.const 100000000 - i32.ge_u + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $1 + i32.const 1 + i32.sub + local.get $4 + i32.sub + call $~lib/array/Array#__get + f32.convert_i32_s + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 1 i32.add - return + local.set $4 + br $for-loop|1 end + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float32Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float32Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float32Array#__get + f32.const 8 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 529 + i32.const 3 + call $~lib/builtins/abort unreachable end - unreachable + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float32Array#__get + f32.const 7 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 530 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float32Array#__get + f32.const 6 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 531 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Float32Array#__get + f32.const 5 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 532 + 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/number/utoa32_dec_lut (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array#reverse (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i64) - (local $10 i32) - (local $11 i32) - loop $while-continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - local.set $3 + (local $8 f64) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.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 + local.get $0 + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + local.set $2 + i32.const 0 + local.set $3 + local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 local.get $3 + local.get $4 + i32.lt_u + local.set $5 + local.get $5 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.get $2 + local.get $3 + i32.const 3 + i32.shl + i32.add local.set $6 - local.get $5 - i32.const 100 - i32.rem_u - local.set $7 - i32.const 6140 - local.get $6 - i32.const 2 + local.get $2 + local.get $4 + i32.const 3 i32.shl i32.add - i64.load32_u + local.set $7 + local.get $6 + f64.load local.set $8 - i32.const 6140 + local.get $6 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 + f64.load + f64.store + local.get $7 + local.get $8 + f64.store + local.get $3 i32.const 1 - i32.shl i32.add - local.get $8 - local.get $9 - i64.const 32 - i64.shl - i64.or - i64.store - br $while-continue|0 + local.set $3 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $for-loop|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 6140 - 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 6140 - 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 6560 - 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 6560 - local.get $1 - i32.wrap_i64 - i32.const 6 - i32.shl - i32.add - i32.load16_u - i32.store16 - end + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/util/number/ulog_base (param $0 i64) (param $1 i32) (result i32) + (func $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i64) - (local $4 i64) + (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/typedarray/testArrayReverseValues + local.tee $0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 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 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - i64.extend_i32_s - local.set $3 - local.get $3 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=12 + i32.const 0 local.set $4 - i32.const 1 - local.set $5 - loop $while-continue|0 - local.get $0 + loop $for-loop|0 local.get $4 - i64.ge_u - local.set $2 - local.get $2 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 if - local.get $0 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $4 - i64.div_u - local.set $0 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 local.get $4 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + local.get $4 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $4 i32.const 1 i32.add - local.set $5 - br $while-continue|1 + local.set $4 + br $for-loop|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 $7 i32) - local.get $3 - i64.extend_i32_s - local.set $4 - local.get $3 - local.get $3 - i32.const 1 - i32.sub - i32.and + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float64Array#reverse + drop i32.const 0 - i32.eq - if - local.get $3 - i32.ctz - i32.const 7 - i32.and - i64.extend_i32_s - local.set $5 + local.set $4 + loop $for-loop|1 local.get $4 - i64.const 1 - i64.sub - local.set $6 - loop $do-continue|0 + local.get $1 + i32.lt_s + local.set $5 + local.get $5 + if local.get $2 - i32.const 1 - i32.sub - local.set $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $4 + call $~lib/typedarray/Float64Array#__get local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - i32.const 7616 - 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 local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - br_if $do-continue|0 - end - else - loop $do-continue|1 - local.get $2 + i32.store offset=4 + local.get $7 + local.get $1 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 7616 - local.get $1 - local.get $6 + i32.sub + call $~lib/array/Array#__get + f64.convert_i32_s + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 524 + i32.const 5 + call $~lib/builtins/abort + unreachable + end 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 - local.set $7 - local.get $7 - br_if $do-continue|1 + local.set $4 + br $for-loop|1 end end - ) - (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.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 + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=16 + local.get $7 + i32.const 4 + i32.const 8 + call $~lib/typedarray/Float64Array#subarray + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/typedarray/Float64Array#reverse + local.tee $6 + i32.store offset=20 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 8 + f64.eq + i32.eqz if - i32.const 5936 - i32.const 6064 - i32.const 373 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 529 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq i32.eqz if - i32.const 6128 - return + i32.const 0 + i32.const 544 + i32.const 530 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 31 - i32.shr_u - local.set $2 - local.get $2 + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + i32.eqz if i32.const 0 - local.get $0 - i32.sub - local.set $0 + i32.const 544 + i32.const 531 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $3 - local.get $1 - i32.const 10 - i32.eq + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + i32.eqz if + i32.const 0 + i32.const 544 + i32.const 532 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int8Array#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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add + local.tee $5 + i32.store + local.get $1 local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new + local.get $2 local.set $3 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 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int8Array#get:length + local.set $7 + local.get $7 + i32.const 0 i32.eq - if - i32.const 31 - local.get $0 - i32.clz - i32.sub - i32.const 2 - i32.shr_s + if (result i32) i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 i32.add - local.get $2 - i32.add - local.set $4 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.set $7 - local.get $0 - local.set $6 - local.get $4 - local.set $5 + local.tee $8 i32.const 0 - i32.const 1 - i32.ge_s - drop - local.get $7 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 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 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $4 - i64.extend_i32_u local.get $7 - local.get $1 - call $~lib/util/number/utoa64_any_core + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - local.get $2 - if - local.get $3 - i32.const 45 - i32.store16 - end - local.get $3 - call $~lib/rt/pure/__retain - ) - (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 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result 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 24 - i32.shl - i32.const 24 - i32.shr_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 $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 45 - i32.store16 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int8Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $4 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $~lib/typedarray/Int8Array#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.le_u - drop - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 10 - i32.lt_u - if + 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 local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $2 end + local.get $0 + local.get $1 local.get $2 + call $~lib/typedarray/Int8Array#lastIndexOf local.set $3 - i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.le_u - drop - local.get $3 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/util/number/decimalCount32 i32.add - local.set $3 - local.get $0 - local.set $6 - local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_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 + 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) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 - call $~lib/string/String#get:length - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - local.tee $4 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 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.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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end local.get $2 - 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.set $6 + global.get $~lib/memory/__stack_pointer 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 + i32.store offset=4 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 - local.set $10 - local.get $10 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 0 + i32.eq i32.eqz if - i32.const 5904 - call $~lib/rt/pure/__retain - 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 544 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $0 - call $~lib/rt/pure/__retain - return + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $10 - i32.const 1 - call $~lib/rt/pure/__new - local.set $11 - local.get $11 - local.get $0 - local.get $8 - i32.add - local.get $10 - call $~lib/memory/memory.copy - local.get $11 - call $~lib/rt/pure/__retain - ) - (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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.eq 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - 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 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - 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 $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s - if - local.get $9 i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int8Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (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 $10 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 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 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - block $do-break|0 - loop $do-continue|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 - local.set $7 - local.get $7 - br_if $do-continue|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 - local.set $10 - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $10 - 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 + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/pure/__release local.get $2 - call $~lib/rt/pure/__release - local.get $7 - ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 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 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#indexOf + i32.const 3 i32.eq + i32.eqz if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i32.const 0 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 i32.eq - if (result i32) - i32.const 1 - else - local.get $1 + i32.eqz + if i32.const 0 - i32.eq + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int8Array#indexOf + i32.const 1 + i32.eq + i32.eqz if i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - return + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - local.get $1 + i32.const 1 + global.set $~argumentsLength i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 0 + i32.eq i32.eqz - local.set $2 - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - ) - (func $~lib/typedarray/Int8Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Int8Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set + global.set $~argumentsLength i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Int8Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Int8Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 569 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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.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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz if - i32.const 5936 - i32.const 6064 - i32.const 350 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.eq i32.eqz if - i32.const 6128 - return - end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 - i32.eq - if - local.get $0 - call $~lib/util/number/decimalCount32 - local.set $3 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 - local.get $3 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__retain - ) - (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz if - local.get $0 - local.get $1 - i32.const 255 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - 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 0 - i32.shl - i32.add - i32.load8_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - 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 $11 - local.get $10 - local.get $9 - local.get $10 + i32.const 100 + call $~lib/typedarray/Int8Array#lastIndexOf i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s + i32.eq + i32.eqz if - local.get $9 i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint8Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release local.get $2 - ) - (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Uint8Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint8Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - call $~lib/typedarray/Uint8Array#__set - local.get $1 + i32.const -10 + call $~lib/typedarray/Int8Array#lastIndexOf i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Uint8Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Uint8Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int8Array#lastIndexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 576 + i32.const 3 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Uint8ClampedArray#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Uint8ClampedArray#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 9 + call $~lib/typedarray/Int8Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Uint8ClampedArray#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 581 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 16 - i32.shl - i32.const 16 - i32.shr_s + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 i32.const 0 - i32.lt_s - local.set $2 - local.get $2 + call $~lib/typedarray/Int8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz if i32.const 0 - local.get $1 - i32.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 i32.const 0 - i32.const 1 - i32.le_s - drop - i32.const 1 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.lt_u + i32.const 0 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 48 - i32.or - i32.store16 - i32.const 1 - local.get $2 - i32.add - return + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/util/number/decimalCount32 - i32.add - local.set $3 - local.get $0 + local.get $5 local.set $6 - local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.set $5 - local.get $3 - local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 i32.const 0 - i32.const 1 - i32.ge_s - drop + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -34870,4029 +37779,3576 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load16_s - local.set $4 - i32.const 1 - drop - i32.const 2 - i32.const 4 - i32.le_u - drop - local.get $4 - i32.const 10 - call $~lib/util/number/itoa32 local.tee $5 - local.set $6 + i32.store + local.get $1 + local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + local.set $3 local.get $3 - i32.lt_s - local.set $5 + local.set $6 local.get $5 - if - local.get $0 - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint8Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) i32.const 1 - i32.shl + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 i32.add - i32.load16_s - local.set $11 - local.get $10 + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 local.get $7 + i32.lt_s + local.set $9 + local.get $9 if - local.get $9 - local.get $10 - i32.const 1 + local.get $8 + local.get $6 + i32.const 0 i32.shl i32.add - local.get $2 - local.get $7 + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $6 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 i32.add - local.set $10 + local.set $6 + br $while-continue|0 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + i32.const -1 end - local.get $0 - local.get $3 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add local.set $10 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint8Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int16Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 + (func $~lib/typedarray/Uint8Array#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 + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $2 + end local.get $0 - call $~lib/typedarray/Int16Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 local.get $1 - call $~lib/rt/pure/__release local.get $2 + call $~lib/typedarray/Uint8Array#lastIndexOf + 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/typedarray/Int16Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Int16Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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.const 5 - call $~lib/typedarray/Int16Array#constructor + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues local.tee $0 - call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - drop local.get $1 - i32.const 7712 - call $~lib/typedarray/Int16Array#join + call $~lib/typedarray/Uint8Array#constructor local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + i32.store offset=8 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Int16Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 i32.const 0 - drop - local.get $1 - i32.const 65535 - i32.and - i32.const 10 - i32.lt_u + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $0 - local.get $1 - i32.const 65535 - i32.and - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - i32.const 1 - i32.ge_s - drop + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (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.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 - i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - 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.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + i32.const 10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $11 - local.get $10 - local.get $9 - local.get $10 + i32.const -100 + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s + i32.eq + i32.eqz if - local.get $9 i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Uint16Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Uint16Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release local.get $2 - ) - (func $~lib/typedarray/Uint16Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Uint16Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Uint16Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 i32.const 1 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint16Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint16Array#__set + global.set $~argumentsLength i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Uint16Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 567 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Uint16Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 i32.const 1 - drop - local.get $1 + global.set $~argumentsLength i32.const 0 - i32.lt_s - local.set $2 - local.get $2 + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz 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 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + 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 + global.get $~lib/memory/__stack_pointer local.get $6 - local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 1 - i32.sub - local.set $3 - local.get $3 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 11 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 11 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - 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 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $9 i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release local.get $2 - ) - (func $~lib/typedarray/Int32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Int32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $1 + i32.const 100 + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Int32Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Int32Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const 1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 575 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.le_s - drop - i32.const 0 - drop - local.get $1 - i32.const 10 - i32.lt_u + i32.const -11 + call $~lib/typedarray/Uint8Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $0 - local.get $1 - i32.const 48 - i32.or - i32.store16 - i32.const 1 - return + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 - i32.const 4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 + i32.const 9 + call $~lib/typedarray/Uint8Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - local.get $4 - call $~lib/util/number/utoa32_dec_lut - local.get $3 - ) - (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 $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 4 + i32.const 4 i32.sub - local.set $3 - local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + 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.tee $5 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 10 - local.get $7 - i32.add - local.get $3 - i32.mul + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 i32.const 0 - local.set $10 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 local.get $3 - i32.lt_s - local.set $5 + local.set $6 local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end if - local.get $0 - local.get $4 - i32.const 2 - i32.shl + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 i32.add - i32.load - local.set $11 - local.get $10 + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 local.get $7 + i32.lt_s + local.set $9 + local.get $9 if - local.get $9 - local.get $10 - i32.const 1 + local.get $8 + local.get $6 + i32.const 0 i32.shl i32.add - local.get $2 - local.get $7 + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $6 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 i32.add - local.set $10 + local.set $6 + br $while-continue|0 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + i32.const -1 end - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add local.set $10 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring + ) + (func $~lib/typedarray/Uint8ClampedArray#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $4 + i32.const 255 + i32.and + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Uint32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 + (func $~lib/typedarray/Uint8ClampedArray#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 + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $2 + end local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 local.get $1 - call $~lib/rt/pure/__release local.get $2 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + 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/typedarray/Uint32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Uint32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.const 5 - call $~lib/typedarray/Uint32Array#constructor + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues local.tee $0 - call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $1 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Uint32Array#__set - local.get $1 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - drop local.get $1 - i32.const 7712 - call $~lib/typedarray/Uint32Array#join + call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + i32.store offset=8 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Uint32Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/util/number/decimalCount64High (param $0 i64) (result i32) - local.get $0 - i64.const 1000000000000000 - i64.lt_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz 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 + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort 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 6140 - local.get $10 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 6140 - 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 6140 - local.get $8 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.set $12 - i32.const 6140 - 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 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.wrap_i64 local.get $2 - call $~lib/util/number/utoa32_dec_lut - ) - (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.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 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/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 5936 - i32.const 6064 - i32.const 431 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 0 - i64.ne + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 3 + i32.eq i32.eqz if - i32.const 6128 - return + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - i64.const 63 - i64.shr_u - i32.wrap_i64 - local.set $2 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz if - i64.const 0 - local.get $0 - i64.sub - local.set $0 + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $3 - local.get $1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 i32.eq + 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 $4 - local.get $4 - call $~lib/util/number/decimalCount32 - local.get $2 - i32.add - local.set $5 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - 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 - local.get $5 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $3 - local.get $3 - local.get $0 - local.get $5 - local.get $1 - call $~lib/util/number/utoa64_any_core - end + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 1 + i32.eq + i32.eqz if - local.get $3 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - call $~lib/rt/pure/__retain - ) - (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) + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz if - i64.const 0 - local.get $1 - i64.sub - local.set $1 - local.get $0 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - i32.const 1 - i32.le_s - drop + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $1 - i64.const 10 - i64.lt_u + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.get $1 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - local.get $2 - i32.add - return + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz 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 + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - ) - (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 1 - i32.sub - local.set $3 - local.get $3 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 3 + i32.eq i32.eqz if - local.get $0 - i64.load - local.set $5 - i32.const 1 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.wrap_i64 - i64.extend_i32_s - i32.const 10 - call $~lib/util/number/itoa64 - local.tee $4 - local.set $6 - local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 21 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 21 - i32.add - local.set $8 - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.shl + i32.const 100 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $3 - i32.lt_s - local.set $6 - local.get $6 - if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $7 - if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $7 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 - i32.add - local.set $10 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 574 + 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 $11 - local.get $10 - local.get $9 - local.get $10 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add - local.set $10 - local.get $8 - local.get $10 - i32.gt_s + i32.const -10 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const 1 + i32.eq + i32.eqz if - local.get $9 i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $9 - local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Int64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Int64Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint8ClampedArray#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $2 - ) - (func $~lib/typedarray/Int64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Int64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint8ClampedArray#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - i32.const 5 - call $~lib/typedarray/Int64Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 i32.const 0 - i64.const 1 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 2 - i64.const 3 - call $~lib/typedarray/Int64Array#__set - local.get $1 - i32.const 3 - i64.const 4 - call $~lib/typedarray/Int64Array#__set - local.get $1 + call $~lib/typedarray/Uint8ClampedArray#indexOf i32.const 4 - i64.const 5 - call $~lib/typedarray/Int64Array#__set + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Int64Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 582 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Int64Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 583 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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.get $1 - i32.const 2 - i32.lt_s - if (result i32) - i32.const 1 - else - local.get $1 - i32.const 36 - i32.gt_s + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 5936 - i32.const 6064 - i32.const 401 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $0 - i64.const 0 - i64.ne + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq i32.eqz if - i32.const 6128 - return + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 0 - local.set $2 - local.get $1 - i32.const 10 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#indexOf + i32.const -1 i32.eq + 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 - local.get $4 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - 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 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__retain + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i64) (result i32) - (local $2 i32) + (func $~lib/typedarray/Int16Array#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) - (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 - i64.const 48 - i64.or - i64.store16 - i32.const 1 - return - end - local.get $2 - local.set $3 + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer 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 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store local.get $1 - i32.wrap_i64 local.set $4 - local.get $3 - local.get $4 - call $~lib/util/number/decimalCount32 - i32.add + local.get $2 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 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int16Array#get:length + local.set $7 + local.get $7 i32.const 0 - i32.const 1 - i32.ge_s - drop + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + end local.get $6 - local.get $8 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end local.get $5 - call $~lib/util/number/utoa64_dec_lut + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - local.get $3 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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) + (func $~lib/typedarray/Int16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - (local $5 i64) + (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - i64.load - local.set $5 - i32.const 0 - drop - i32.const 8 - i32.const 4 - i32.le_u - drop - local.get $5 - i32.const 10 - call $~lib/util/number/utoa64 - local.tee $4 - local.set $6 + local.tee $5 + i32.store + local.get $1 + local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $6 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $7 - i32.const 20 - local.get $7 - i32.add - local.get $3 - i32.mul - i32.const 20 - i32.add - local.set $8 - local.get $8 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 - local.set $10 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + local.set $3 local.get $3 - i32.lt_s local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int16Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + end local.get $6 + i32.const 0 + i32.lt_s if - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered + local.get $7 + local.get $6 i32.add - local.set $10 + local.set $6 + else + local.get $6 local.get $7 + i32.ge_s if - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $2 local.get $7 i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 1 i32.shl - call $~lib/memory/memory.copy - local.get $10 - local.get $7 i32.add - local.set $10 + i32.load16_s + local.get $4 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + i32.const -1 end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - local.get $10 - local.get $9 - local.get $10 - i32.const 1 - i32.shl - i32.add - local.get $11 - call $~lib/util/number/itoa_buffered - i32.add local.set $10 - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $10 - i32.gt_s - if - local.get $9 - i32.const 0 - local.get $10 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $9 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 ) - (func $~lib/typedarray/Uint64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 + (func $~lib/typedarray/Int16Array#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 + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + end local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.get $1 - call $~lib/util/string/joinIntegerArray - local.set $2 local.get $1 - call $~lib/rt/pure/__release local.get $2 + call $~lib/typedarray/Int16Array#lastIndexOf + 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/typedarray/Uint64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Uint64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 5 - call $~lib/typedarray/Uint64Array#constructor + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues local.tee $0 - call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 1 - call $~lib/typedarray/Uint64Array#__set - local.get $1 - i32.const 1 - i64.const 2 - call $~lib/typedarray/Uint64Array#__set local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 2 - i64.const 3 - call $~lib/typedarray/Uint64Array#__set - local.get $1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 - i64.const 4 - call $~lib/typedarray/Uint64Array#__set - local.get $1 i32.const 4 - i64.const 5 - call $~lib/typedarray/Uint64Array#__set + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int16Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Uint64Array#join - local.tee $2 - i32.const 7744 - call $~lib/string/String.__eq + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 629 - i32.const 5 + i32.const 544 + i32.const 567 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Uint64Array#toString - local.tee $3 - i32.const 7744 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 630 - i32.const 5 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (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 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) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength 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 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - local.set $14 - loop $while-continue|0 - local.get $13 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if 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.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -10 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int16Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint16Array#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) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint16Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 1 i32.shl i32.add - i32.const 48 - local.get $16 + i32.load16_u + local.get $4 i32.const 65535 i32.and + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $6 + i32.const 1 i32.add - i32.store16 + local.set $6 + br $while-continue|0 end - local.get $13 - i32.const 1 - i32.sub - local.set $13 - local.get $11 - i64.extend_i32_u + end + i32.const -1 + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint16Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if 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 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s 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 8864 - 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 + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 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 + local.get $4 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 8864 - 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.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + end + local.get $6 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 + local.set $6 + br $while-continue|0 end - br $while-continue|4 end + i32.const -1 end - unreachable + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/util/number/prettify (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (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 + global.get $~lib/memory/__stack_pointer + i32.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 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 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 i32.store - local.get $1 - i32.const 2 - i32.add - return + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $2 end + local.get $0 local.get $1 local.get $2 - i32.add + call $~lib/typedarray/Uint16Array#lastIndexOf local.set $3 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - i32.le_s - if (result i32) + ) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $1 + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 + loop $for-loop|0 local.get $3 - i32.const 21 - i32.le_s - else - i32.const 0 - end - if local.get $1 + i32.lt_s 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 + local.get $4 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__set 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 + local.set $3 + br $for-loop|0 end + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $1 - f64.neg - local.set $1 - local.get $0 - i32.const 45 - i32.store16 + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable 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 + global.get $~lib/memory/__stack_pointer local.get $6 - i64.const 9218868437227405312 - i64.and - i64.const 52 - i64.shr_u - i32.wrap_i64 - local.set $7 + i32.store offset=4 local.get $6 - i64.const 4503599627370495 - i64.and - local.set $8 - local.get $7 + i32.const -1 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 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 10 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 -100 + call $~lib/typedarray/Uint16Array#indexOf 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.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 - i32.shr_s i32.const 1 - i32.add - local.set $14 - i32.const 348 - local.get $14 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs i32.const 3 - i32.shl - i32.sub - global.set $~lib/util/number/_K - i32.const 7992 - local.get $14 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 - i32.shl - i32.add - i64.load - global.set $~lib/util/number/_frc_pow - i32.const 8688 - local.get $14 + i32.const 4 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 100 + call $~lib/typedarray/Uint16Array#lastIndexOf 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 (param $0 f64) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - f64.const 0 - f64.eq - if - i32.const 7792 - return - end - local.get $0 - local.get $0 - f64.sub - f64.const 0 - f64.eq + i32.eq i32.eqz if - local.get $0 - local.get $0 - f64.ne - if - i32.const 7824 - return - end - i32.const 7856 - i32.const 7904 - local.get $0 - f64.const 0 - f64.lt - select - call $~lib/rt/pure/__retain - return + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 7936 - local.get $0 - call $~lib/util/number/dtoa_core + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.shl - local.set $1 - local.get $1 + i32.const -10 + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const 1 - call $~lib/rt/pure/__new - local.set $2 - local.get $2 - i32.const 7936 - local.get $1 - call $~lib/memory/memory.copy - local.get $2 - call $~lib/rt/pure/__retain - ) - (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 + i32.eq + i32.eqz if - local.get $0 - i32.const 48 - i32.store16 - local.get $0 - i32.const 46 - i32.store16 offset=2 - local.get $0 - i32.const 48 - i32.store16 offset=4 + i32.const 0 + i32.const 544 + i32.const 575 i32.const 3 - return + call $~lib/builtins/abort + unreachable end - local.get $1 - local.get $1 - f64.sub - f64.const 0 - f64.eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint16Array#lastIndexOf + i32.const -1 + i32.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 + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort unreachable end - local.get $0 - local.get $1 - call $~lib/util/number/dtoa_core - ) - (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 i32) - (local $9 i32) - (local $10 f32) + global.get $~lib/memory/__stack_pointer local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint16Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 4 + i32.const 4 i32.sub - local.set $3 - local.get $3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint16Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq i32.eqz if - local.get $0 - f32.load - f64.promote_f32 - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/string/String#get:length + local.get $5 local.set $6 - i32.const 28 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $8 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - local.set $9 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 i32.const 0 - 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 2 - i32.shl - i32.add - f32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $6 - if - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $2 - local.get $6 - i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 - i32.add - local.set $9 - 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 - f32.load - local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - f64.promote_f32 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $8 i32.const 0 - local.get $9 - call $~lib/string/String#substring - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - ) - (func $~lib/typedarray/Float32Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.get $1 - call $~lib/util/string/joinFloatArray - local.set $2 - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - ) - (func $~lib/typedarray/Float32Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Float32Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 0 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 5 - call $~lib/typedarray/Float32Array#constructor - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 - i32.const 0 - f32.const 1 - call $~lib/typedarray/Float32Array#__set - local.get $1 i32.const 1 - f32.const 2 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 2 - f32.const 3 - call $~lib/typedarray/Float32Array#__set - local.get $1 - i32.const 3 - f32.const 4 - call $~lib/typedarray/Float32Array#__set - local.get $1 + call $~lib/typedarray/Uint16Array#indexOf + i32.const 5 i32.const 4 - f32.const 5 - call $~lib/typedarray/Float32Array#__set - i32.const 1 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Float32Array#join - local.tee $2 - i32.const 8928 - call $~lib/string/String.__eq + i32.sub + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 626 - i32.const 5 + i32.const 544 + i32.const 586 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Float32Array#toString - local.tee $3 - i32.const 8928 - call $~lib/string/String.__eq + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint16Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 627 - i32.const 5 + i32.const 544 + i32.const 587 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/string/joinFloatArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Int32Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -38900,1116 +41356,990 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $1 - i32.const 1 + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.sub - local.set $3 - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 5904 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 - return - end - local.get $3 - i32.eqz - if + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer local.get $0 - f64.load - call $~lib/util/number/dtoa - local.tee $4 - local.set $5 + local.tee $5 + i32.store + local.get $1 + local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $5 - return - end - local.get $2 - call $~lib/string/String#get:length - local.set $6 - i32.const 28 - local.get $6 - i32.add - local.get $3 - i32.mul - i32.const 28 - i32.add - local.set $7 - local.get $7 - i32.const 1 - i32.shl - i32.const 1 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $8 - i32.const 0 - local.set $9 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + local.set $3 local.get $3 - i32.lt_s - local.set $5 + local.set $6 local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end if - local.get $0 - local.get $4 - i32.const 3 - i32.shl + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 i32.add - f64.load - local.set $10 - local.get $9 + local.tee $8 + i32.const 0 + local.tee $9 local.get $8 local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 if local.get $8 - local.get $9 - i32.const 1 + local.get $6 + i32.const 2 i32.shl i32.add - local.get $2 + i32.load + local.get $4 + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + end local.get $6 i32.const 1 - i32.shl - call $~lib/memory/memory.copy - local.get $9 - local.get $6 i32.add - local.set $9 + local.set $6 + br $while-continue|0 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 end + i32.const -1 end - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - f64.load local.set $10 - local.get $9 - local.get $8 - local.get $9 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add + global.set $~lib/memory/__stack_pointer local.get $10 - call $~lib/util/number/dtoa_buffered - i32.add - local.set $9 - local.get $7 - local.get $9 - i32.gt_s - if - local.get $8 - i32.const 0 - local.get $9 - call $~lib/string/String#substring + ) + (func $~lib/typedarray/Int32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 local.set $4 local.get $2 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $4 - return + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int32Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - local.get $8 - local.set $4 - local.get $2 - call $~lib/rt/pure/__release - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Float64Array#join (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - i32.load offset=4 + (func $~lib/typedarray/Int32Array#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 + i32.const 0 + i32.store + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + end local.get $0 - call $~lib/typedarray/Float64Array#get:length - local.get $1 - call $~lib/util/string/joinFloatArray - local.set $2 local.get $1 - call $~lib/rt/pure/__release local.get $2 + call $~lib/typedarray/Int32Array#lastIndexOf + 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/typedarray/Float64Array#toString (param $0 i32) (result i32) - local.get $0 - i32.const 7712 - call $~lib/typedarray/Float64Array#join - ) - (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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.const 5 - call $~lib/typedarray/Float64Array#constructor + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues local.tee $0 - call $~lib/rt/pure/__retain + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 2 - f64.const 3 - call $~lib/typedarray/Float64Array#__set local.get $1 - i32.const 3 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $1 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - i32.const 1 - drop - local.get $1 - i32.const 7712 - call $~lib/typedarray/Float64Array#join + call $~lib/typedarray/Int32Array#constructor local.tee $2 - i32.const 8928 - call $~lib/string/String.__eq + i32.store offset=8 + 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $3 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 0 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 626 - i32.const 5 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/typedarray/Float64Array#toString - local.tee $3 - i32.const 8928 - call $~lib/string/String.__eq + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 627 - i32.const 5 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - i32.const 1073741820 - i32.gt_u + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 32 - i32.const 80 - i32.const 49 - i32.const 43 + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 0 - call $~lib/rt/pure/__new - local.set $2 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - local.get $1 - call $~lib/memory/memory.fill - local.get $2 - call $~lib/rt/pure/__retain - local.set $3 - local.get $0 - call $~lib/rt/pure/__release - 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/typedarray/Uint8Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 0 - i32.and - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.lt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 4 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i32.const 1 + i32.const 10 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Uint8Array.wrap - ) - (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - local.get $0 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - 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.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Int32Array#indexOf + i32.const 1 + 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 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.set $1 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.lt_s - if (result i32) - local.get $3 - local.get $2 - i32.add - local.tee $4 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 0 + 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 544 + i32.const 567 + 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 $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 0 - call $~lib/rt/pure/__new - local.set $7 - local.get $7 - local.get $0 - local.get $1 - i32.add + i32.store offset=4 local.get $6 - call $~lib/memory/memory.copy - local.get $7 - call $~lib/rt/pure/__retain - ) - (func $~lib/typedarray/Int8Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 + i32.const 11 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.and - i32.or + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 3 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int8Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i32.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Int8Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - call $~lib/typedarray/Int8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 - i32.const 0 - local.set $7 - i32.const 1 - drop + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int8Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int8Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int8Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - drop + i32.const 100 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 - i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint8Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint8Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + i32.const -10 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Int32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int32Array#subarray + local.tee $5 + i32.store offset=16 local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - i32.and - i32.or + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 0 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 i32.const 0 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 5 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - local.get $4 - i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 + local.get $6 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint8ClampedArray.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Uint8ClampedArray.wrap + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Int32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Int32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint32Array#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 $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store local.get $1 - i32.lt_s - local.set $5 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 255 - i32.and - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint32Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + else + local.get $6 + local.get $7 + i32.ge_s end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $6 + i32.const 0 i32.lt_s - local.set $4 - local.get $4 if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#__get local.get $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.eq - i32.eqz + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + i32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 end + i32.const -1 end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int16Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/typedarray/Uint32Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -40017,135 +42347,139 @@ (local $7 i32) (local $8 i32) (local $9 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 1 - i32.and - i32.or - if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.lt_s - if + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 local.get $3 - i32.const -1 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint32Array#get:length + local.set $7 + local.get $7 + i32.const 0 i32.eq + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s if local.get $7 - i32.const 1 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub + local.get $6 + i32.add local.set $6 else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end end - else - local.get $3 - i32.const 1 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $4 + i32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - i32.const 12 - i32.const 6 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + (func $~lib/typedarray/Uint32Array#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 + 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 - i32.const 0 - local.set $1 + unreachable end - i32.const -1 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint32Array#get:length local.set $2 end local.get $0 local.get $1 local.get $2 - call $~lib/typedarray/Int16Array.wrap + call $~lib/typedarray/Uint32Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) (local $2 i32) @@ -40153,1033 +42487,886 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 - call $~lib/typedarray/Int16Array#constructor + call $~lib/typedarray/Uint32Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 i32.const 0 - local.set $4 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $1 i32.lt_s - local.set $5 - local.get $5 + local.set $4 + local.get $4 if + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $3 - local.get $4 local.get $0 - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - call $~lib/typedarray/Int16Array#__set - local.get $4 + call $~lib/typedarray/Uint32Array#__set + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 i32.const 0 - i32.const 1 - global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int16Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 + call $~lib/typedarray/Uint32Array#indexOf i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int16Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int16Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 1 - i32.and - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 1 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 1 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 7 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint16Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Uint16Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint16Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i32.const 65535 - i32.and - call $~lib/typedarray/Uint16Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - drop + i32.const 10 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -100 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 i32.const 0 i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint16Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint16Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint16Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 3 - i32.and - i32.or + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const -1 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 8 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Int32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 - end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Int32Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Int32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Int32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 - i32.const 0 + i32.const 3 i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Int32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int32Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + call $~lib/typedarray/Uint32Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 i32.const 3 - i32.and - i32.or + i32.const 4 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.lt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 3 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 9 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i32.const 3 + i32.const 2 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Uint32Array.wrap - ) - (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 $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - call $~lib/typedarray/Uint32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice local.set $6 - i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - drop + i32.const 100 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 - i32.const 0 i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint32Array#__get - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + i32.const -10 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const -11 + call $~lib/typedarray/Uint32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint32Array#subarray + local.tee $5 + i32.store offset=16 local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 i32.const 0 - i32.lt_s - if - local.get $3 - i32.const -1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 9 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 11 + i32.const 0 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 1 + call $~lib/typedarray/Uint32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 5 + i32.const 2 + call $~lib/typedarray/Uint32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int64Array#get:length + local.set $7 + local.get $7 + i32.const 0 i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s if local.get $7 - i32.const 7 - i32.and + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $4 + i64.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable end - else + i32.const -1 + end + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (func $~lib/typedarray/Int64Array#lastIndexOf (param $0 i32) (param $1 i64) (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 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 local.get $3 - i32.const 3 - i32.shl local.set $6 - local.get $4 - local.get $6 - i32.add + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Int64Array#get:length + local.set $7 local.get $7 - i32.gt_s + i32.const 0 + i32.eq if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $4 + i64.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - i32.const 12 - i32.const 10 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 - local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable + (func $~lib/typedarray/Int64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 - i32.const 0 - local.set $1 + unreachable end - i32.const -1 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Int64Array#get:length local.set $2 end local.get $0 local.get $1 local.get $2 - call $~lib/typedarray/Int64Array.wrap + call $~lib/typedarray/Int64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> (local $0 i32) (local $1 i32) (local $2 i32) @@ -41187,1140 +43374,952 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:length local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 local.get $1 call $~lib/typedarray/Int64Array#constructor local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 + i32.store offset=8 i32.const 0 - local.set $4 + local.set $3 loop $for-loop|0 - local.get $4 + local.get $3 local.get $1 i32.lt_s - local.set $5 - local.get $5 + local.set $4 + local.get $4 if + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $3 - local.get $4 local.get $0 - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + local.get $3 call $~lib/array/Array#__get i64.extend_i32_s call $~lib/typedarray/Int64Array#__set - local.get $4 + local.get $3 i32.const 1 i32.add - local.set $4 + local.set $3 br $for-loop|0 end end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 0 i32.const 0 - local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop + call $~lib/typedarray/Int64Array#indexOf i32.const 0 - drop + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 11 i32.const 0 - drop + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const -1 i32.const 0 - drop - i32.const 1 - drop + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 + i64.const 3 i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Int64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Int64Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Int64Array#__get - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.lt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 7 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 + i32.const 0 + i32.const 544 + i32.const 563 i32.const 3 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 11 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Uint64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Uint64Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Uint64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - i64.extend_i32_s - call $~lib/typedarray/Uint64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Int64Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 0 + i32.const 1 + global.set $~argumentsLength i32.const 0 - local.set $7 - 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 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs i32.const 0 - drop - i32.const 1 - drop + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 0 + i32.store offset=4 + local.get $6 + i64.const 11 i32.const 1 global.set $~argumentsLength i32.const 0 - call $~lib/typedarray/Uint64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Uint64Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Uint64Array#__get - i64.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 + call $~lib/builtins/abort + unreachable end local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 + i32.store offset=4 + local.get $6 + i64.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $2 - local.set $3 - local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array#lastIndexOf@varargs i32.const 3 - i32.and - i32.or + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 0 - i32.lt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 3 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 - i32.const 2 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 12 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 - local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 - local.get $5 - local.get $4 - i32.add i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float32Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.get $6 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 local.get $2 - call $~lib/typedarray/Float32Array.wrap - ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float32Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 - local.get $1 - i32.lt_s - local.set $5 - local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f32.convert_i32_s - call $~lib/typedarray/Float32Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice + local.get $2 local.set $6 - i32.const 0 - local.set $7 - 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 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Int64Array#lastIndexOf i32.const 1 - drop + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.const 0 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Int64Array#lastIndexOf i32.const 1 - global.set $~argumentsLength + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Int64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Int64Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 i32.const 0 - call $~lib/typedarray/Float32Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - local.set $7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 4 i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $3 - local.get $5 - call $~lib/typedarray/Float32Array#__get - local.get $7 - local.get $5 - call $~lib/typedarray/Float32Array#__get - f32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 - end + call $~lib/typedarray/Int64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array.wrap (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.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $6 + i64.const 5 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - call $~lib/arraybuffer/ArrayBuffer#get:byteLength - local.set $7 - local.get $4 - local.get $7 - i32.gt_u - local.get $4 - i32.const 7 - i32.and - i32.or + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 9 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1741 - i32.const 5 + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 10 i32.const 0 - i32.lt_s + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - local.get $3 - i32.const -1 - i32.eq - if - local.get $7 - i32.const 7 - i32.and - if - i32.const 32 - i32.const 464 - i32.const 1746 - i32.const 9 - call $~lib/builtins/abort - unreachable - end - local.get $7 - local.get $4 - i32.sub - local.set $6 - else - i32.const 32 - i32.const 464 - i32.const 1750 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - else - local.get $3 + i32.const 0 + i32.const 544 + i32.const 584 i32.const 3 - i32.shl - local.set $6 - local.get $4 - local.get $6 - i32.add - local.get $7 - i32.gt_s - if - i32.const 32 - i32.const 464 - i32.const 1755 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + call $~lib/builtins/abort + unreachable end - i32.const 12 - i32.const 13 - call $~lib/rt/pure/__new - local.set $8 - local.get $8 local.get $5 - call $~lib/rt/pure/__retain - i32.store - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.store offset=8 - local.get $8 + i32.store offset=4 + local.get $6 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - local.get $4 - i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 i32.store offset=4 - local.get $8 - call $~lib/rt/pure/__retain - local.set $9 + local.get $6 + i64.const 5 + i32.const 1 + call $~lib/typedarray/Int64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end local.get $5 - call $~lib/rt/pure/__release - local.get $9 - local.set $8 - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - ) - (func $~lib/typedarray/Float64Array.wrap@varargs (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - block $2of2 - block $1of2 - block $0of2 - block $outOfRange - global.get $~argumentsLength - i32.const 1 - i32.sub - br_table $0of2 $1of2 $2of2 $outOfRange - end - unreachable - end - i32.const 0 - local.set $1 - end - i32.const -1 - local.set $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Int64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - local.get $2 - call $~lib/typedarray/Float64Array.wrap + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint64Array#indexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) - global.get $std/typedarray/testArrayWrapValues - call $~lib/rt/pure/__retain - local.set $0 - local.get $0 - call $~lib/array/Array#get:length - local.set $1 - i32.const 0 - local.get $1 - call $~lib/typedarray/Float64Array#constructor - local.tee $2 - call $~lib/rt/pure/__retain - local.set $3 - i32.const 0 - local.set $4 - loop $for-loop|0 - local.get $4 + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store local.get $1 - i32.lt_s - local.set $5 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 local.get $5 - if - local.get $3 - local.get $4 - local.get $0 - local.get $4 - call $~lib/array/Array#__get - f64.convert_i32_s - call $~lib/typedarray/Float64Array#__set - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|0 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint64Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s end - end - local.get $3 - i32.load - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $3 - i32.load offset=8 - i32.add - call $~lib/arraybuffer/ArrayBuffer#slice - local.set $6 - i32.const 0 - local.set $7 - 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 - local.get $6 - i32.const 0 - i32.const 1 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array.wrap@varargs - local.set $5 - local.get $7 - call $~lib/rt/pure/__release - local.get $5 - local.set $7 - i32.const 0 - local.set $5 - loop $for-loop|1 - local.get $5 - local.get $1 + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $6 + i32.const 0 i32.lt_s - local.set $4 - local.get $4 if - local.get $3 - local.get $5 - call $~lib/typedarray/Float64Array#__get local.get $7 - local.get $5 - call $~lib/typedarray/Float64Array#__get - f64.eq - i32.eqz + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 if - i32.const 0 - i32.const 336 - i32.const 684 - i32.const 5 - call $~lib/builtins/abort - unreachable + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $4 + i64.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $for-loop|1 end + i32.const -1 end - local.get $2 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) + (local $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Uint64Array#get:length + local.set $7 + local.get $7 i32.const 0 - i32.const 2 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 end - i32.eqz - else + local.get $6 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 i32.lt_s - local.set $10 - local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $7 local.get $6 - local.get $9 - i32.const 0 - i32.shl i32.add + local.set $6 + else + local.get $6 local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $9 - i32.const 1 - i32.add + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s local.set $9 - br $for-loop|0 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $4 + i64.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Int8Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Uint64Array#lastIndexOf@varargs (param $0 i32) (param $1 i64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $2 + end local.get $0 - i32.load offset=4 local.get $1 + local.get $2 + call $~lib/typedarray/Uint64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_s + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 - local.get $3 - call $~lib/typedarray/Int8Array#__uget - local.set $5 - local.get $1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $3 - call $~lib/array/Array#__uget + local.get $0 local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.ne - if - i32.const 9472 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set local.get $3 i32.const 1 i32.add @@ -42328,1133 +44327,887 @@ br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 0 i32.const 0 - drop - local.get $3 + call $~lib/typedarray/Uint64Array#indexOf i32.const 0 - i32.lt_s + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const -1 i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 563 i32.const 3 - i32.eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const 10 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -100 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 0 + i32.const 1 + global.set $~argumentsLength i32.const 0 - drop - local.get $3 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs i32.const 0 - i32.lt_s + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 11 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const -1 i32.const 1 + global.set $~argumentsLength i32.const 0 + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const -1 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 569 i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint64Array#lastIndexOf@varargs + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 570 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 4 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 3 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 3 i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 2 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const 100 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -10 + call $~lib/typedarray/Uint64Array#lastIndexOf i32.const 1 i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 1 + i32.const -11 + call $~lib/typedarray/Uint64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Uint64Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 3 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop local.get $5 - i32.load offset=4 - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 4 i32.const 0 - i32.shl - i32.add + call $~lib/typedarray/Uint64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 5 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Uint64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 9 i32.const 0 - drop - local.get $3 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 10 i32.const 0 - i32.lt_s + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.gt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 11 + i32.const 0 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 5 i32.const 1 - i32.const 1 + call $~lib/typedarray/Uint64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub i32.eq - if (result i32) - i32.const 0 + i32.eqz + if i32.const 0 - i32.eq - else + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i64.const 5 + i32.const 2 + call $~lib/typedarray/Uint64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#indexOf (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Float32Array#get:length + local.set $7 + local.get $7 i32.const 0 + i32.eq if (result i32) i32.const 1 else - i32.const 0 + local.get $6 + local.get $7 + i32.ge_s end - i32.eqz - else + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $6 i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $4 + f32.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Float32Array#lastIndexOf (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 $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9440 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9520 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9552 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 0 - i32.const 15 - i32.const 9616 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - local.get $5 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Float32Array#get:length + local.set $7 + local.get $7 i32.const 0 - i32.const 2 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 end - i32.eqz - else + local.get $6 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 i32.lt_s - local.set $10 - local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $7 local.get $6 - local.get $9 - i32.const 0 - i32.shl i32.add + local.set $6 + else + local.get $6 local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - i32.store8 - local.get $9 - i32.const 1 - i32.add + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s local.set $9 - br $for-loop|0 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $4 + f32.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint8Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - i32.load8_u + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float32Array#lastIndexOf@varargs (param $0 i32) (param $1 f32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $2 + end local.get $0 - i32.load offset=4 local.get $1 - i32.const 0 - i32.shl + local.get $2 + call $~lib/typedarray/Float32Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_u + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $0 - call $~lib/typedarray/Uint8Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint8Array#__uget - local.set $5 - local.get $1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $3 - call $~lib/array/Array#__uget + local.get $0 local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.ne - if - i32.const 9680 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $3 i32.const 1 i32.add @@ -43462,1120 +45215,887 @@ br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 0 i32.const 0 - drop - local.get $3 + call $~lib/typedarray/Float32Array#indexOf i32.const 0 - i32.lt_s + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const -1 i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.eq - if (result i32) - i32.const 0 - i32.const 2 - i32.eq - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#indexOf + i32.const 3 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 1 + i32.const 10 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 564 i32.const 3 - i32.eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 1 + i32.const -100 + call $~lib/typedarray/Float32Array#indexOf + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 0 + i32.const 1 + global.set $~argumentsLength i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 11 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 i32.const 1 + global.set $~argumentsLength i32.const 0 + call $~lib/typedarray/Float32Array#lastIndexOf@varargs + i32.const 3 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 570 i32.const 3 - i32.eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 4 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 3 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 + i32.const 2 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 1 + i32.const 100 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 1 + i32.const -10 + call $~lib/typedarray/Float32Array#lastIndexOf i32.const 1 i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 1 + i32.const -11 + call $~lib/typedarray/Float32Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float32Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 3 i32.const 0 - i32.lt_s + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 4 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 5 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 9 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 10 i32.const 0 - i32.lt_s + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.gt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 11 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 5 i32.const 1 - i32.const 1 + call $~lib/typedarray/Float32Array#indexOf + i32.const 5 + i32.const 4 + i32.sub i32.eq - if (result i32) - i32.const 0 + i32.eqz + if i32.const 0 - i32.eq - else + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f32.const 5 + i32.const 2 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#indexOf (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Float64Array#get:length + local.set $7 + local.get $7 i32.const 0 + i32.eq if (result i32) i32.const 1 else - i32.const 0 + local.get $6 + local.get $7 + i32.ge_s end - i32.eqz - else + if + i32.const -1 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $6 i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $4 + f64.eq + if + local.get $6 + br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end + end + i32.const -1 end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Float64Array#lastIndexOf (param $0 i32) (param $1 f64) (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 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9648 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9728 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9760 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9792 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9824 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - local.get $5 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $3 + local.set $6 + local.get $5 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $~lib/typedarray/Float64Array#get:length + local.set $7 + local.get $7 i32.const 0 - i32.const 2 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 + if + i32.const -1 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 end - i32.eqz - else + local.get $6 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 i32.lt_s - local.set $10 - local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 - local.get $9 - i32.const 2 - i32.shl + local.get $6 i32.add - i32.load - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop + local.set $6 + else + local.get $6 + local.get $7 + i32.ge_s + if + local.get $7 + i32.const 1 + i32.sub + local.set $6 + end + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 local.get $6 - local.get $9 i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add + i32.ge_s local.set $9 - br $for-loop|0 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $4 + f64.eq + if + local.get $6 + br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|0 + end end + i32.const -1 end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 ) - (func $~lib/typedarray/Uint8ClampedArray#__uget (param $0 i32) (param $1 i32) (result i32) + (func $~lib/typedarray/Float64Array#lastIndexOf@varargs (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $2 + end local.get $0 - i32.load offset=4 local.get $1 + local.get $2 + call $~lib/typedarray/Float64Array#lastIndexOf + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 i32.add - i32.load8_u + global.set $~lib/memory/__stack_pointer + local.get $3 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + 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/testArrayIndexOfAndLastIndexOfValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length local.set $1 - local.get $0 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#__uget - local.set $5 - local.get $1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $3 - call $~lib/array/Array#__uget + local.get $0 local.set $6 - local.get $5 + global.get $~lib/memory/__stack_pointer local.get $6 - i32.ne - if - i32.const 9888 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end + i32.store offset=12 + local.get $6 + local.get $3 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set local.get $3 i32.const 1 i32.add @@ -44583,976 +46103,958 @@ br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 0 i32.const 0 - drop - local.get $3 + call $~lib/typedarray/Float64Array#indexOf i32.const 0 - i32.lt_s + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 557 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 558 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const -1 i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 i32.eq - if (result i32) + i32.eqz + if i32.const 0 - i32.const 2 - i32.eq - else + i32.const 544 + i32.const 559 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 560 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 561 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 1 - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $11 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#indexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 563 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 1 + i32.const 10 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 564 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 1 + i32.const -100 + call $~lib/typedarray/Float64Array#indexOf i32.const 1 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 565 i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 0 + i32.const 1 + global.set $~argumentsLength i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.wrap_i64 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i64.extend_i32_s - i32.const 255 - local.get $11 - i32.wrap_i64 - i32.sub - i32.const 31 - i32.shr_s - i64.extend_i32_s - local.get $11 - i64.or - i64.and - i64.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 567 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 11 + i32.const 1 + global.set $~argumentsLength i32.const 0 - i32.lt_s + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 568 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const -1 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 569 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 i32.const 1 + global.set $~argumentsLength i32.const 0 + call $~lib/typedarray/Float64Array#lastIndexOf@varargs + i32.const 3 i32.eq - if (result i32) + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 570 i32.const 3 - i32.eq - else - i32.const 0 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 4 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 571 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add + local.get $2 local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 1 - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - f64.const 0 - f64.const 255 - local.get $11 - f64.min - f64.max - i32.trunc_f64_u - else - i32.const 0 - end - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 3 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 572 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 + i32.const 2 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 573 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 1 + i32.const 100 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const 1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 574 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 1 + i32.const -10 + call $~lib/typedarray/Float64Array#lastIndexOf i32.const 1 i32.eq - if (result i32) - i32.const 0 - i32.const 0 - i32.eq - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 575 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) - i32.const 1 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 1 + i32.const -11 + call $~lib/typedarray/Float64Array#lastIndexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 576 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 4 + i32.const 9 + call $~lib/typedarray/Float64Array#subarray + local.tee $5 + i32.store offset=16 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 3 i32.const 0 - i32.lt_s + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 580 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 4 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 4 + i32.const 4 + i32.sub + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 581 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 5 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub i32.eq - if (result i32) - i32.const 0 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 1 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 582 + i32.const 3 + call $~lib/builtins/abort + unreachable end - drop local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 9 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 1 - drop - i32.const 0 - drop - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop - local.get $6 - local.get $9 - i32.const 0 - i32.shl - i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 583 + i32.const 3 + call $~lib/builtins/abort + unreachable end - local.get $4 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 10 i32.const 0 - i32.lt_s + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 584 + i32.const 3 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.gt_s + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 11 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 585 + i32.const 3 call $~lib/builtins/abort unreachable end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 5 i32.const 1 - i32.const 1 + call $~lib/typedarray/Float64Array#indexOf + i32.const 5 + i32.const 4 + i32.sub i32.eq - if (result i32) - i32.const 0 + i32.eqz + if i32.const 0 - i32.eq - else + i32.const 544 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + f64.const 5 + i32.const 2 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable end - if (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#includes (param $0 i32) (param $1 f64) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 f64) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 i32.const 1 + drop + local.get $3 + local.set $6 + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq if (result i32) i32.const 1 else + local.get $6 + local.get $7 + i32.ge_s + end + if i32.const 0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end - i32.eqz - else + local.get $6 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 0 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 i32.lt_s - local.set $10 - local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop local.get $6 - local.get $9 - i32.const 0 - i32.shl i32.add - local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s - local.get $11 - i32.or - i32.and - i32.store8 + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 local.get $9 - i32.const 1 - i32.add + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s local.set $9 - br $for-loop|0 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $10 + local.get $10 + local.get $4 + f64.eq + if (result i32) + i32.const 1 + else + local.get $10 + local.get $10 + f64.ne + local.get $4 + local.get $4 + f64.ne + i32.and + end + if + i32.const 1 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end end + i32.const 0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Float32Array#includes (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) + (local $4 f32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9856 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9952 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $4 + (local $10 f32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + local.get $1 + local.set $4 + local.get $2 + local.set $3 + i32.const 1 + drop + local.get $3 + local.set $6 + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + local.set $7 + local.get $7 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $6 + local.get $7 + i32.ge_s + end + if + i32.const 0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $6 + i32.const 0 + i32.lt_s + if + local.get $7 + local.get $6 + i32.add + local.tee $8 + i32.const 0 + local.tee $9 + local.get $8 + local.get $9 + i32.gt_s + select + local.set $6 + end + local.get $5 + i32.load offset=4 + local.set $8 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if + local.get $8 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $10 + local.get $10 + local.get $4 + f32.eq + if (result i32) + i32.const 1 + else + local.get $10 + local.get $10 + f32.ne + local.get $4 + local.get $4 + f32.ne + i32.and + end + if + i32.const 1 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|0 + end + end + i32.const 0 + br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 + end + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (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 8 + 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.const 6 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 9984 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 10016 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + call $~lib/string/String#get:length + local.set $3 local.get $1 + local.tee $4 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.tee $5 local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - i32.const 1 - drop + local.get $5 + i32.gt_s + select + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 local.get $4 - i32.const 10 + i32.lt_s + select + local.set $6 + local.get $2 + local.tee $4 i32.const 0 - i32.const 63 - i32.const 10048 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + local.get $4 local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + i32.gt_s + select + local.tee $5 local.get $3 - call $~lib/rt/pure/__release + 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 - call $~lib/rt/pure/__release + local.get $5 + i32.lt_s + select + i32.const 1 + i32.shl + local.set $8 local.get $6 - call $~lib/rt/pure/__release + local.tee $5 local.get $7 - call $~lib/rt/pure/__release + 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 + local.set $10 + local.get $10 + i32.eqz + if + i32.const 6048 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + end + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $11 + i32.store offset=4 + local.get $11 + local.get $0 local.get $8 - call $~lib/rt/pure/__release + i32.add + local.get $10 + call $~lib/memory/memory.copy + local.get $11 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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) @@ -45561,380 +47063,473 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + local.get $0 + i32.load8_s + local.set $4 i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 11 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 11 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + 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 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 i32.shl i32.add + i32.load8_s + local.set $9 + local.get $8 local.get $7 - local.get $9 - i32.const 2 + local.get $8 + i32.const 1 i32.shl i32.add - i32.load - i32.store16 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 $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int16Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 - i32.const 1 + local.get $3 + i32.const 0 i32.shl i32.add - i32.load16_s - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 + i32.load8_s + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - i32.load16_s + 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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int8Array#join (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 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.load offset=4 local.get $0 - call $~lib/typedarray/Int16Array#get:length local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + call $~lib/typedarray/Int8Array#get:length local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 local.set $3 - loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $3 - local.get $2 - i32.lt_s - local.set $4 - local.get $4 - if - local.get $0 - local.get $3 - call $~lib/typedarray/Int16Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10128 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end + return end local.get $0 - call $~lib/rt/pure/__release + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $2 + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/typedarray/Int8Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (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 f32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set i32.const 0 drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Int8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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) @@ -45943,797 +47538,578 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/typedarray/Int64Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 10 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + 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 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 i32.shl i32.add + i32.load8_u + local.set $9 + local.get $8 local.get $7 - local.get $9 - i32.const 3 + local.get $8 + i32.const 1 i32.shl i32.add - i64.load - i64.store16 local.get $9 - i32.const 1 + call $~lib/util/number/itoa_buffered i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (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 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 + 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 - i32.store16 - local.get $9 + local.get $4 i32.const 1 i32.add - local.set $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 + i32.shl i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length + 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 - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Uint8Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load offset=4 - local.set $7 - local.get $4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/typedarray/Uint8Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 - call $~lib/rt/pure/__retain + i32.const 7856 local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> + (local $0 i32) + (local $1 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 - drop - local.get $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + i32.const 2 + call $~lib/typedarray/Uint8Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (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) + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint8Array#__set + local.get $0 local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint8Array#__set local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8Array#__set i32.const 0 drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint8Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint8Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint8ClampedArray#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + 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.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set + i32.store offset=4 local.get $1 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Int16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10080 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource2 i32.const 3 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10176 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $4 + call $~lib/typedarray/Uint8ClampedArray#__set local.get $0 - i32.const 6 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10224 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 + i32.store offset=4 + local.get $1 + i32.const 3 i32.const 4 - call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int16Array#set<~lib/array/Array> + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#__set i32.const 0 drop - local.get $4 - i32.const 10 - i32.const 1 - i32.const 64 - i32.const 10320 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - local.get $5 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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) @@ -46742,380 +48118,378 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + local.get $0 + i32.load16_s + local.set $4 i32.const 1 + drop i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 11 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 11 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $4 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 + local.get $0 + local.get $4 i32.const 1 i32.shl i32.add + i32.load16_s + local.set $9 + local.get $8 local.get $7 - local.get $9 - i32.const 2 + local.get $8 + i32.const 1 i32.shl i32.add - i32.load - i32.store16 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 $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint16Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 - local.get $1 + local.get $3 i32.const 1 i32.shl i32.add - i32.load16_u - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 - local.get $1 + i32.load16_s + local.set $9 + local.get $8 + local.get $7 + local.get $8 i32.const 1 i32.shl i32.add - i32.load16_u - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + 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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Int16Array#join (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 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + i32.load offset=4 local.get $0 - call $~lib/typedarray/Uint16Array#get:length local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 local.get $2 + call $~lib/typedarray/Int16Array#get:length local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - 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 - local.get $0 - local.get $3 - call $~lib/typedarray/Uint16Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10416 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Int16Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 - call $~lib/rt/pure/__release + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (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 f32) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int16Array#__set + local.get $0 local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int16Array#__set local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int16Array#__set i32.const 0 drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Int16Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $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) @@ -47124,275 +48498,378 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/typedarray/Int64Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 10 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $4 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 + 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 $9 - i32.const 3 + local.get $8 + i32.const 1 i32.shl i32.add - i64.load - i64.store16 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 $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (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 f64) + 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 + if + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Uint16Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint16Array#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint16Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store local.get $1 - call $~lib/rt/pure/__retain + i32.const 7856 local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint16Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 i32.const 0 - drop - local.get $3 + i32.const 1 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Uint16Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Uint16Array#__set i32.const 0 - i32.lt_s + drop + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint16Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint16Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 1 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 1 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store16 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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) @@ -47401,217 +48878,378 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) + local.get $0 + i32.load + local.set $4 i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 11 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 11 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $4 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 + 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 $9 - i32.const 0 + local.get $8 + i32.const 1 i32.shl i32.add - i32.load8_u - i32.store16 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 $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length local.get $3 + i32.const 2 + i32.shl i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length + 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 - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 1 - i32.shl + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Int32Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Int32Array#get:length local.get $1 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + i32.const 0 + drop + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Int32Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/util/string/joinIntegerArray (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -47620,1287 +49258,1261 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 1 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end - drop + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $5 + i32.const 10 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 1 - i32.shl + i32.mul + i32.const 10 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $4 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $4 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 1 + 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 $9 - i32.const 0 + local.get $8 + i32.const 1 i32.shl i32.add - i32.load8_s - i32.store16 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 $9 + local.set $4 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + 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.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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Uint32Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint32Array#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint32Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set + i32.const 5 + call $~lib/typedarray/Uint32Array#constructor + local.tee $0 + i32.store local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set + i32.store offset=4 local.get $1 i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 + i32.const 2 i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 + call $~lib/typedarray/Uint32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint16Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10368 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10464 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $4 + i32.const 4 + call $~lib/typedarray/Uint32Array#__set local.get $0 - i32.const 6 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10512 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10560 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - i32.const 0 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 i32.const 4 - call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + i32.const 5 + call $~lib/typedarray/Uint32Array#__set i32.const 0 drop - local.get $4 - i32.const 10 - i32.const 1 - i32.const 65 - i32.const 10608 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - local.get $5 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.store offset=12 local.get $1 - call $~lib/rt/pure/__retain + i32.const 7856 local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#__uget (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + i32.store offset=12 local.get $1 - call $~lib/rt/pure/__retain + call $~lib/typedarray/Uint32Array#toString local.set $1 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#get:length - i32.eq + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable 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 - local.get $0 - local.get $3 - call $~lib/typedarray/Int32Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 10720 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_s - local.get $6 - f64.convert_i32_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) - (local $11 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + (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 $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - drop + local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + call $~lib/string/String#get:length + local.set $5 + i32.const 21 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 2 - i32.shl + i32.mul + i32.const 21 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $10 loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 local.get $10 + local.get $3 + i32.lt_s + local.set $11 + local.get $11 if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + 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 $9 - i32.const 2 + local.get $8 + i32.const 1 i32.shl i32.add - f32.load - local.set $11 - local.get $6 local.get $9 - i32.const 2 - i32.shl + call $~lib/util/number/itoa_buffered i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_s - else - i32.const 0 + 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 - i32.store - local.get $9 + local.get $10 i32.const 1 i32.add - local.set $9 + local.set $10 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length local.get $3 + i32.const 3 + i32.shl i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length + 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 - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.add - local.set $6 - local.get $4 + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (func $~lib/typedarray/Int64Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 i32.load offset=4 - local.set $7 - local.get $4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (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 f64) + (func $~lib/typedarray/Int64Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i64.const 1 + call $~lib/typedarray/Int64Array#__set local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Int64Array#__set i32.const 0 drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Int64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Int64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_s - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $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 $4 i64) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) + (local $9 i64) (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else + 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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return end - drop + local.get $2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + call $~lib/string/String#get:length + local.set $5 + i32.const 20 local.get $5 - i32.load offset=4 + i32.add local.get $3 - i32.const 2 - i32.shl + i32.mul + i32.const 20 i32.add local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length + 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 offset=4 + i32.const 0 local.set $8 i32.const 0 - local.set $9 + local.set $10 loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 local.get $10 + local.get $3 + i32.lt_s + local.set $11 + local.get $11 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 + 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 $9 - i32.const 0 + local.get $8 + i32.const 1 i32.shl i32.add - i32.load8_u - i32.store 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 $9 + local.set $10 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (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.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 + if + local.get $7 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store + local.get $12 + i32.const 0 + local.get $8 + call $~lib/string/String#substring + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.add + global.set $~lib/memory/__stack_pointer + local.get $12 + ) + (func $~lib/typedarray/Uint64Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Uint64Array#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinIntegerArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Uint64Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain + call $~lib/typedarray/Uint64Array#join local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Uint64Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 i32.const 0 - drop - local.get $3 + i64.const 1 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + i64.const 2 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + i64.const 3 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i64.const 4 + call $~lib/typedarray/Uint64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i64.const 5 + call $~lib/typedarray/Uint64Array#__set i32.const 0 - i32.lt_s + drop + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Uint64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 629 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Uint64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 7888 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 630 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 i32) + (local $8 f32) (local $9 i32) (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $3 + i32.eqz + if + local.get $0 + f32.load + f64.promote_f32 + call $~lib/util/number/dtoa + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $4 + i32.const 28 local.get $4 - call $~lib/array/Array#get:length + i32.add local.get $3 + i32.mul + i32.const 28 i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + i32.const 0 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 i32.const 0 local.set $9 loop $for-loop|0 local.get $9 - local.get $8 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 + local.get $0 local.get $9 i32.const 2 i32.shl i32.add + f32.load + local.set $8 local.get $7 - local.get $9 - i32.const 0 + local.get $6 + local.get $7 + i32.const 1 i32.shl i32.add - i32.load8_s - i32.store + local.get $8 + f64.promote_f32 + 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 @@ -48908,646 +50520,625 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $8 + local.get $7 + local.get $6 + local.get $7 + i32.const 1 + i32.shl + i32.add + local.get $8 + f64.promote_f32 + call $~lib/util/number/dtoa_buffered + i32.add + local.set $7 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $7 + i32.gt_s + if + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $7 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - (local $0 i32) - (local $1 i32) + (func $~lib/typedarray/Float32Array#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) - (local $8 i32) - (local $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + i32.load offset=4 local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float32Array#get:length local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor local.set $2 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set + i32.store local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + call $~lib/util/string/joinFloatArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set + ) + (func $~lib/typedarray/Float32Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 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.const 10 - call $~lib/typedarray/Int32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10656 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10768 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $4 + i32.const 5 + call $~lib/typedarray/Float32Array#constructor + local.tee $0 + i32.store local.get $0 - i32.const 6 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10832 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + f32.const 1 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 + f32.const 2 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 i32.const 2 - i32.const 16 - i32.const 10896 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 + f32.const 3 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f32.const 4 + call $~lib/typedarray/Float32Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - i32.const 0 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 i32.const 4 - call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 0 + f32.const 5 + call $~lib/typedarray/Float32Array#__set + i32.const 1 drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 16 - i32.const 10960 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - local.get $5 - call $~lib/rt/pure/__release local.get $0 - call $~lib/rt/pure/__release + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + i32.store offset=12 local.get $1 - call $~lib/rt/pure/__retain + i32.const 7856 local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Float32Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9072 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint32Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i32) - local.get $0 - i32.load offset=4 + i32.store offset=12 local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - ) - (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) - (local $6 i32) - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 + call $~lib/typedarray/Float32Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain + i32.const 9072 local.set $1 - local.get $0 - call $~lib/typedarray/Uint32Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#get:length - i32.eq + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 + i32.const 544 + i32.const 627 + i32.const 5 call $~lib/builtins/abort unreachable 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 - local.get $0 - local.get $3 - call $~lib/typedarray/Uint32Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i32.ne - if - i32.const 11088 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i32_u - local.get $6 - f64.convert_i32_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $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 i32) + (local $8 f64) (local $9 i32) (local $10 i32) - (local $11 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + i32.const 1 + i32.sub local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable + i32.const 6048 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $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 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return end + local.get $2 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + call $~lib/string/String#get:length + local.set $4 + i32.const 28 local.get $4 - call $~lib/array/Array#get:length + i32.add local.get $3 + i32.mul + i32.const 28 i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $6 + i32.store offset=4 + i32.const 0 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 i32.const 0 local.set $9 loop $for-loop|0 local.get $9 - local.get $8 + local.get $3 i32.lt_s local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 + local.get $0 local.get $9 - i32.const 2 + i32.const 3 i32.shl i32.add - f32.load - local.set $11 + f64.load + local.set $8 + local.get $7 local.get $6 - local.get $9 - i32.const 2 + local.get $7 + i32.const 1 i32.shl i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - local.get $11 - i32.trunc_f32_u - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 + local.get $8 + call $~lib/util/number/dtoa_buffered i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> (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.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 + 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 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + local.get $7 + call $~lib/string/String#substring + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + end + local.get $6 + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + ) + (func $~lib/typedarray/Float64Array#join (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + i32.load offset=4 + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/typedarray/Float64Array#get:length + local.get $1 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/util/string/joinFloatArray + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/typedarray/Float64Array#toString (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain + call $~lib/typedarray/Float64Array#join local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 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 + i32.const 0 + i32.const 5 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + i32.const 1 drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 7856 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + call $~lib/typedarray/Float64Array#join + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9072 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 0 + i32.const 544 + i32.const 626 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s + local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + call $~lib/typedarray/Float64Array#toString + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 9072 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $~lib/string/String.__eq + i32.eqz if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 0 + i32.const 544 + i32.const 627 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 20 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - i64.store32 - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -49555,276 +51146,232 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 + i32.lt_s + if + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) + if + local.get $7 i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else + local.get $3 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i32) - local.get $11 - i32.trunc_f64_u - else - i32.const 0 - end - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable end end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 + local.get $4 + i32.add + i32.store offset=4 + local.get $8 + 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/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/arraybuffer/ArrayBuffer#slice (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + 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 - call $~lib/rt/pure/__retain - local.set $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $3 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 i32.const 0 i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq if (result i32) - i32.const 2 + local.get $3 + local.get $1 + i32.add + local.tee $4 i32.const 0 - i32.eq + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select else - i32.const 0 + 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 $3 + local.get $2 + i32.add + local.tee $4 i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz + local.tee $5 + local.get $4 + local.get $5 + i32.gt_s + select else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + local.get $2 + local.tee $5 + local.get $3 + local.tee $4 + local.get $5 + local.get $4 i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end + 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 - call $~lib/rt/pure/__release local.get $5 - call $~lib/rt/pure/__release + i32.gt_s + select + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $7 + i32.store offset=4 + local.get $7 + local.get $0 local.get $1 - call $~lib/rt/pure/__release + i32.add + local.get $6 + call $~lib/memory/memory.copy + local.get $7 + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 ) - (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -49832,271 +51379,296 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 1 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else + if + local.get $7 i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 + else + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else + local.get $3 i32.const 0 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 3 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 local.get $4 - i32.load offset=4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Int8Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 1 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i32.const 24 i32.shl - i32.add - i32.load16_s - i32.store - local.get $9 + i32.const 24 + i32.shr_s + call $~lib/typedarray/Int8Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + i32.load offset=8 i32.add - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $5 + i32.store offset=16 i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int8Array.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int8Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int8Array#__get + i32.eq + i32.eqz + if i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store - local.get $9 + local.get $3 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) (local $2 i32) @@ -50105,406 +51677,166 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.set $1 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 + call $~lib/typedarray/Uint8Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + local.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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8Array#__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.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11024 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11136 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11200 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - i32.const 1 - drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11264 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> - local.get $4 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $2 - i32.const 4 - call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 66 - i32.const 11328 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - local.get $5 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.get $2 - local.set $3 + i32.load offset=8 + i32.add + call $~lib/arraybuffer/ArrayBuffer#slice + local.tee $5 + i32.store offset=16 i32.const 0 drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Int64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i64) - (local $6 i64) - 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 - call $~lib/typedarray/Int64Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $6 + i32.store offset=20 i32.const 0 local.set $3 - loop $for-loop|0 + loop $for-loop|1 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 - local.get $3 - call $~lib/typedarray/Int64Array#__uget - local.set $5 - local.get $1 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 + call $~lib/typedarray/Uint8Array#__get local.get $6 - i64.ne + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint8Array#__get + i32.eq + i32.eqz if - i32.const 11504 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i64_s - local.get $6 - f64.convert_i64_s - f64.const 0 - f64.const 0 - call $~lib/builtins/trace i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable end local.get $3 i32.const 1 i32.add local.set $3 - br $for-loop|0 + br $for-loop|1 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8ClampedArray.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -50512,364 +51844,298 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) + if + local.get $7 i32.const 0 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else + local.get $3 i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $11 - i64.trunc_f32_s - else - i64.const 0 - end - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable end end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $2 + i32.store offset=8 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i32.const 255 + i32.and + call $~lib/typedarray/Uint8ClampedArray#__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=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + drop i32.const 1 - i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#__get local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_s - else - i64.const 0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable end - i64.store - local.get $9 + local.get $3 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int16Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -50877,271 +52143,302 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 1 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 + if + local.get $7 + i32.const 1 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 + local.get $3 + i32.const 1 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 local.get $4 - i32.load offset=4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 0 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i32.const 16 i32.shl - i32.add - i64.load8_u - i64.store - local.get $9 + i32.const 16 + i32.shr_s + call $~lib/typedarray/Int16Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 + drop + i32.const 0 + drop i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int16Array.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int16Array#__get local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int16Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint16Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -51149,135 +52446,128 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 1 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) + if + local.get $7 i32.const 1 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 + local.get $3 + i32.const 1 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable end end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 + local.get $4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) (local $2 i32) @@ -51286,165 +52576,172 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 + 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.set $1 - local.get $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + call $~lib/typedarray/Uint16Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + call $~lib/typedarray/Uint16Array#__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.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 - i32.const 10 - call $~lib/typedarray/Int64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 + drop i32.const 0 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11392 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11552 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11664 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - i32.const 1 drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11776 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 i32.const 0 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Int64Array#set<~lib/array/Array> + drop i32.const 0 drop - local.get $4 - i32.const 10 - i32.const 3 - i32.const 67 - i32.const 11888 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint16Array.wrap@varargs + local.tee $6 + i32.store offset=20 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint16Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint16Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int32Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -51452,227 +52749,193 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 3 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/array/Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 + if + local.get $7 + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 + local.get $3 + i32.const 2 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i64.load32_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable end end - local.get $4 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/array/Array#get:length (param $0 i32) (result i32) - local.get $0 - i32.load offset=12 - ) - (func $~lib/typedarray/Uint64Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 + local.get $4 i32.add - i64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result i64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i64.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 i64) - (local $6 i64) + (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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.set $1 - local.get $0 - call $~lib/typedarray/Uint64Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $3 - call $~lib/typedarray/Uint64Array#__uget - local.set $5 - local.get $1 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - i64.ne - if - i32.const 12112 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.convert_i64_u - local.get $6 - f64.convert_i64_u - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end + call $~lib/array/Array#__get + call $~lib/typedarray/Int32Array#__set local.get $3 i32.const 1 i32.add @@ -51680,12 +52943,108 @@ br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + 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=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int32Array.wrap@varargs + local.tee $6 + i32.store offset=20 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int32Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int32Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint32Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -51693,223 +53052,304 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 3 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $3 i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 2 + i32.lt_s + if + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 + if + local.get $7 + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 + local.get $3 + i32.const 2 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 local.get $4 - i32.load offset=4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Uint32Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i64) - local.get $11 - i64.trunc_f32_u - else - i64.const 0 - end - i64.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + call $~lib/typedarray/Uint32Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + 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 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint32Array.wrap@varargs + local.tee $6 + i32.store offset=20 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint32Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint32Array#__get + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 1 - else - i32.const 0 + i32.add + local.set $3 + br $for-loop|1 end - i32.eqz - else - i32.const 0 end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 24 i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int64Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -51917,276 +53357,307 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 f64) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 7 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 + local.get $3 i32.const 0 - i32.eq - if (result i32) - i32.const 3 - i32.const 3 + i32.lt_s + if + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 + if + local.get $7 + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 + local.get $3 + i32.const 3 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 local.get $4 - i32.load offset=4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (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 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $11 - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $11 - local.get $11 - f64.sub - f64.const 0 - f64.eq - if (result i64) - local.get $11 - i64.trunc_f64_u - else - i64.const 0 - end - i64.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Int64Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - 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 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Int64Array.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int64Array#__get local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_u - i64.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Int64Array#__get + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint64Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -52194,438 +53665,309 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s + local.get $5 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 7 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end - local.get $4 - call $~lib/typedarray/Int16Array#get:length local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s + i32.const 0 + i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 + if + local.get $7 + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 + local.get $3 + i32.const 3 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 + local.get $4 + i32.add + i32.store offset=4 + local.get $8 local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i64.load16_s - i64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + (local $0 i32) + (local $1 i32) + (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 0 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Uint64Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - i32.const 0 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i64.load8_s - i64.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + i64.extend_i32_s + call $~lib/typedarray/Uint64Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set + 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=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 - local.get $1 + drop i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set + drop i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 + drop i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set + drop i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint64Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 + drop i32.const 0 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12000 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12160 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12272 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - i32.const 1 drop - local.get $4 - global.get $std/typedarray/setSource3 - i32.const 2 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12384 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - local.get $9 - call $~lib/rt/pure/__release - local.get $4 - local.get $1 i32.const 0 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + drop i32.const 0 drop - local.get $4 - i32.const 10 - i32.const 3 - i32.const 68 - i32.const 12496 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint64Array.wrap@varargs + local.tee $6 + i32.store offset=20 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint64Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Uint64Array#__get + i64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float32Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -52633,224 +53975,194 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 3 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $3 i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 + i32.lt_s + if + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 + if + local.get $7 + i32.const 3 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 + local.get $3 + i32.const 2 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end end - drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - f32.convert_i32_s - f32.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + local.get $4 i32.add - f32.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f32) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 2 - i32.shl + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f32.load + global.set $~lib/memory/__stack_pointer + local.get $9 ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + (local $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) - (local $5 f32) - (local $6 f32) + (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/typedarray/testArrayWrapValues + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $1 - call $~lib/rt/pure/__retain + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length local.set $1 - local.get $0 - call $~lib/typedarray/Float32Array#get:length - local.set $2 - local.get $2 + global.get $~lib/memory/__stack_pointer + i32.const 0 local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call $~lib/typedarray/Float32Array#constructor + local.tee $2 + i32.store offset=8 i32.const 0 local.set $3 loop $for-loop|0 local.get $3 - local.get $2 + local.get $1 i32.lt_s local.set $4 local.get $4 if - local.get $0 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 local.get $3 - call $~lib/typedarray/Float32Array#__uget - local.set $5 - local.get $1 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - f32.ne - if - i32.const 12672 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - f64.promote_f32 - local.get $6 - f64.promote_f32 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end + call $~lib/array/Array#__get + f32.convert_i32_s + call $~lib/typedarray/Float32Array#__set local.get $3 i32.const 1 i32.add @@ -52858,232 +54170,116 @@ br $for-loop|0 end end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + global.get $~lib/memory/__stack_pointer local.get $2 - local.set $3 + i32.load + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + drop i32.const 0 + drop i32.const 0 - i32.eq - if (result i32) - i32.const 2 - i32.const 2 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.load offset=4 - local.get $4 - i32.load offset=8 - call $~lib/memory/memory.copy - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 i32.const 0 drop - local.get $3 i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end + drop + i32.const 0 + drop + i32.const 0 + drop i32.const 0 + drop i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 3 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end drop + global.get $~lib/memory/__stack_pointer local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 - local.get $4 - i32.load offset=4 local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float32Array.wrap@varargs + local.tee $6 + i32.store offset=20 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Float32Array#__get local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - f32.convert_i64_s - f32.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Float32Array#__get + f32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $3 i32.const 1 i32.add - local.set $9 - br $for-loop|0 + local.set $3 + br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Float64Array.wrap (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -53091,136 +54287,313 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store local.get $1 - call $~lib/rt/pure/__retain local.set $4 local.get $2 local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.get $3 - i32.add local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.gt_s + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $~lib/arraybuffer/ArrayBuffer#get:byteLength + local.set $7 + local.get $4 + local.get $7 + i32.gt_u + local.get $4 + i32.const 7 + i32.and + i32.or if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 + i32.const 336 + i32.const 608 + i32.const 1745 + i32.const 5 call $~lib/builtins/abort unreachable end + local.get $3 i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 2 - i32.const 0 + i32.lt_s + if + local.get $3 + i32.const -1 i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 0 + if + local.get $7 + i32.const 7 + i32.and + if + i32.const 32 + i32.const 608 + i32.const 1750 + i32.const 9 + call $~lib/builtins/abort + unreachable + end + local.get $7 + local.get $4 + i32.sub + local.set $6 else - i32.const 0 + i32.const 32 + i32.const 608 + i32.const 1754 + i32.const 7 + call $~lib/builtins/abort + unreachable end - i32.eqz else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.set $6 + local.get $3 + i32.const 3 + i32.shl + local.set $6 + local.get $4 + local.get $6 + i32.add + local.get $7 + i32.gt_s + if + i32.const 32 + i32.const 608 + i32.const 1759 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $8 + i32.store offset=8 + local.get $8 + local.get $5 + i32.store + local.get $8 + local.get $5 + i32.const 0 + call $~lib/rt/itcms/__link + local.get $8 + local.get $6 + i32.store offset=8 + local.get $8 + local.get $5 local.get $4 - i32.load offset=4 + i32.add + i32.store offset=4 + local.get $8 + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + ) + (func $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + 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/typedarray/testArrayWrapValues + local.tee $0 + i32.store + local.get $0 local.set $7 - local.get $4 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $~lib/array/Array#get:length + local.set $1 + global.get $~lib/memory/__stack_pointer i32.const 0 - local.set $9 + local.get $1 + call $~lib/typedarray/Float64Array#constructor + local.tee $2 + i32.store offset=8 + i32.const 0 + local.set $3 loop $for-loop|0 - local.get $9 - local.get $8 + local.get $3 + local.get $1 i32.lt_s - local.set $10 - local.get $10 + local.set $4 + local.get $4 if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 2 - i32.shl - i32.add + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_u - f32.convert_i32_u - f32.store - local.get $9 + i32.store offset=4 + local.get $7 + local.get $3 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + local.get $3 + call $~lib/array/Array#__get + f64.convert_i32_s + call $~lib/typedarray/Float64Array#__set + local.get $3 i32.const 1 i32.add - local.set $9 + local.set $3 br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release + 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=4 + local.get $7 + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $2 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=12 + local.get $7 + 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=16 + 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 + global.get $~lib/memory/__stack_pointer local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array.wrap@varargs + local.tee $6 + i32.store offset=20 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Float64Array#__get + local.get $6 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + local.get $3 + call $~lib/typedarray/Float64Array#__get + f64.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 684 + 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 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -53229,15 +54602,26 @@ (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -53246,34 +54630,44 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Int16Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float32Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 1 i32.eq if (result i32) + i32.const 0 i32.const 2 - i32.const 1 i32.eq else i32.const 0 @@ -53293,7 +54687,7 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 2 + i32.const 0 i32.shl i32.add local.set $6 @@ -53301,7 +54695,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/typedarray/Int16Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length local.set $8 i32.const 0 local.set $9 @@ -53316,13 +54715,13 @@ drop i32.const 0 if (result i32) - i32.const 1 + i32.const 0 i32.eqz else i32.const 0 end drop - i32.const 1 + i32.const 0 if (result i32) i32.const 0 i32.eqz @@ -53332,17 +54731,16 @@ drop local.get $6 local.get $9 - i32.const 2 + i32.const 0 i32.shl i32.add local.get $7 local.get $9 - i32.const 1 + i32.const 2 i32.shl i32.add - i32.load16_s - f32.convert_i32_s - f32.store + i32.load + i32.store8 local.get $9 i32.const 1 i32.add @@ -53350,14 +54748,123 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Int8Array#get:length + local.set $2 + local.get $2 local.get $1 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Int8Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 9616 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + local.get $6 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -53366,15 +54873,27 @@ (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -53383,34 +54902,44 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/array/Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float32Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 i32.const 1 + i32.const 0 i32.eq if (result i32) - i32.const 2 i32.const 0 + i32.const 2 i32.eq else i32.const 0 @@ -53418,7 +54947,7 @@ if (result i32) i32.const 0 if (result i32) - i32.const 1 + i32.const 0 else i32.const 0 end @@ -53430,7 +54959,7 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 2 + i32.const 0 i32.shl i32.add local.set $6 @@ -53438,7 +54967,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/array/Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.set $8 i32.const 0 local.set $9 @@ -53451,14 +54985,6 @@ if i32.const 0 drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop i32.const 1 if (result i32) i32.const 0 @@ -53467,19 +54993,30 @@ i32.const 0 end drop - local.get $6 + local.get $7 local.get $9 i32.const 2 i32.shl i32.add - local.get $7 + f32.load + local.set $11 + local.get $6 local.get $9 i32.const 0 i32.shl i32.add - i32.load8_s - f32.convert_i32_s - f32.store + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store8 local.get $9 i32.const 1 i32.add @@ -53487,17 +55024,12 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -53505,201 +55037,73 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 3 - call $~lib/typedarray/Int64Array#constructor - local.set $0 - local.get $0 - i32.const 0 - i64.const 7 - call $~lib/typedarray/Int64Array#__set - local.get $0 - i32.const 1 - i64.const 8 - call $~lib/typedarray/Int64Array#__set + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 2 - i64.const 9 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint8Array#constructor - local.set $1 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 0 - i32.const 100 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 1 - i32.const 101 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 2 - i32.const 102 - call $~lib/typedarray/Uint8Array#__set - local.get $1 - i32.const 3 - i32.const 103 - call $~lib/typedarray/Uint8Array#__set - i32.const 0 - i32.const 3 - call $~lib/typedarray/Int16Array#constructor - local.set $2 - local.get $2 - i32.const 0 - i32.const 1000 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 1 - i32.const 1001 - call $~lib/typedarray/Int16Array#__set - local.get $2 - i32.const 2 - i32.const 1002 - call $~lib/typedarray/Int16Array#__set - i32.const 0 - i32.const 10 - call $~lib/typedarray/Float32Array#constructor - local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 - global.get $std/typedarray/setSource1 - i32.const 0 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12608 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $4 - global.get $std/typedarray/setSource2 - i32.const 3 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12720 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $4 - local.get $0 - i32.const 6 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12784 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - drop - local.get $4 - local.get $1 - i32.const 0 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> - local.get $4 - local.get $2 - i32.const 4 - call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> - local.get $4 - global.get $std/typedarray/setSource7 - i32.const 7 - call $~lib/typedarray/Float32Array#set<~lib/array/Array> - i32.const 0 - drop - local.get $4 - i32.const 10 - i32.const 2 - i32.const 61 - i32.const 12848 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - local.get $9 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 drop local.get $3 i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/array/Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float64Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 1 i32.eq if (result i32) + i32.const 0 i32.const 3 - i32.const 2 i32.eq else i32.const 0 @@ -53719,7 +55123,7 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 3 + i32.const 0 i32.shl i32.add local.set $6 @@ -53727,7 +55131,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/array/Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length local.set $8 i32.const 0 local.set $9 @@ -53742,13 +55151,13 @@ drop i32.const 0 if (result i32) - i32.const 1 + i32.const 0 i32.eqz else i32.const 0 end drop - i32.const 1 + i32.const 0 if (result i32) i32.const 0 i32.eqz @@ -53758,17 +55167,16 @@ drop local.get $6 local.get $9 - i32.const 3 + i32.const 0 i32.shl i32.add local.get $7 local.get $9 - i32.const 2 + i32.const 3 i32.shl i32.add - i32.load - f64.convert_i32_s - f64.store + i64.load + i64.store8 local.get $9 i32.const 1 i32.add @@ -53776,113 +55184,12 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - ) - (func $~lib/array/Array#__uget (param $0 i32) (param $1 i32) (result f64) - local.get $0 - i32.load offset=4 - local.get $1 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f64.load - ) - (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 f64) - (local $6 f64) - 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 - call $~lib/typedarray/Float64Array#get:length - local.set $2 - local.get $2 - local.get $1 - call $~lib/array/Array#get:length - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 712 - i32.const 3 - call $~lib/builtins/abort - unreachable - 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 - local.get $0 - local.get $3 - call $~lib/typedarray/Float64Array#__uget - local.set $5 - local.get $1 - local.get $3 - call $~lib/array/Array#__uget - local.set $6 - local.get $5 - local.get $6 - f64.ne - if - i32.const 13024 - i32.const 3 - local.get $3 - f64.convert_i32_s - local.get $5 - local.get $6 - f64.const 0 - f64.const 0 - call $~lib/builtins/trace - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 718 - i32.const 7 - call $~lib/builtins/abort - unreachable - end - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - local.get $0 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -53891,15 +55198,27 @@ (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -53908,34 +55227,44 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/array/Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float64Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 0 i32.eq if (result i32) + i32.const 0 i32.const 3 - i32.const 2 i32.eq else i32.const 0 @@ -53955,7 +55284,7 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 3 + i32.const 0 i32.shl i32.add local.set $6 @@ -53963,7 +55292,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/array/Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.set $8 i32.const 0 local.set $9 @@ -53978,33 +55312,36 @@ drop i32.const 1 if (result i32) - i32.const 1 - i32.eqz - else i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 1 i32.eqz else i32.const 0 end drop - local.get $6 + local.get $7 local.get $9 i32.const 3 i32.shl i32.add - local.get $7 + f64.load + local.set $11 + local.get $6 local.get $9 - i32.const 2 + i32.const 0 i32.shl i32.add - f32.load - f64.promote_f32 - f64.store + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store8 local.get $9 i32.const 1 i32.add @@ -54012,31 +55349,35 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -54045,34 +55386,44 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Int64Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float64Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 1 i32.eq if (result i32) - i32.const 3 - i32.const 3 + i32.const 0 + i32.const 0 i32.eq else i32.const 0 @@ -54080,7 +55431,7 @@ if (result i32) i32.const 0 if (result i32) - i32.const 1 + i32.const 0 else i32.const 0 end @@ -54092,71 +55443,20 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 3 + i32.const 0 i32.shl i32.add - local.set $6 local.get $4 i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 3 - i32.shl - i32.add - i64.load - f64.convert_i64_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -54165,15 +55465,26 @@ (local $8 i32) (local $9 i32) (local $10 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -54182,34 +55493,44 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Uint8Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float64Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 1 i32.eq if (result i32) - i32.const 3 i32.const 0 + i32.const 1 i32.eq else i32.const 0 @@ -54217,7 +55538,7 @@ if (result i32) i32.const 0 if (result i32) - i32.const 0 + i32.const 1 else i32.const 0 end @@ -54229,7 +55550,7 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 3 + i32.const 0 i32.shl i32.add local.set $6 @@ -54237,7 +55558,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/typedarray/Uint8Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length local.set $8 i32.const 0 local.set $9 @@ -54252,13 +55578,13 @@ drop i32.const 0 if (result i32) - i32.const 1 + i32.const 0 i32.eqz else i32.const 0 end drop - i32.const 1 + i32.const 0 if (result i32) i32.const 0 i32.eqz @@ -54268,17 +55594,16 @@ drop local.get $6 local.get $9 - i32.const 3 + i32.const 0 i32.shl i32.add local.get $7 local.get $9 - i32.const 0 + i32.const 1 i32.shl i32.add - i32.load8_u - f64.convert_i32_u - f64.store + i32.load16_s + i32.store8 local.get $9 i32.const 1 i32.add @@ -54286,168 +55611,35 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - ) - (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__retain - local.set $5 - local.get $1 - call $~lib/rt/pure/__retain - local.set $4 - local.get $2 - local.set $3 - i32.const 0 - drop - local.get $3 - i32.const 0 - i32.lt_s - if - i32.const 400 - i32.const 464 - i32.const 1774 - i32.const 19 - call $~lib/builtins/abort - unreachable - end - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.get $3 - i32.add - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.gt_s - if - i32.const 400 - i32.const 464 - i32.const 1775 - i32.const 47 - call $~lib/builtins/abort - unreachable - end - i32.const 0 - i32.const 1 - i32.eq - if (result i32) - i32.const 3 - i32.const 1 - i32.eq - else - i32.const 0 - end - if (result i32) - i32.const 0 - if (result i32) - i32.const 1 - else - i32.const 0 - end - i32.eqz - else - i32.const 0 - end - drop - local.get $5 - i32.load offset=4 - local.get $3 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - local.set $6 - local.get $4 - i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 1 - i32.shl - i32.add - i32.load16_s - f64.convert_i32_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (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.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -54456,33 +55648,43 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Float64Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end - i32.const 0 + i32.const 1 i32.const 1 i32.eq if (result i32) - i32.const 3 + i32.const 0 i32.const 0 i32.eq else @@ -54503,71 +55705,20 @@ local.get $5 i32.load offset=4 local.get $3 - i32.const 3 + i32.const 0 i32.shl i32.add - local.set $6 local.get $4 i32.load offset=4 - local.set $7 - local.get $4 - call $~lib/array/Array#get:length - local.set $8 - i32.const 0 - local.set $9 - loop $for-loop|0 - local.get $9 - local.get $8 - i32.lt_s - local.set $10 - local.get $10 - if - i32.const 0 - drop - i32.const 0 - if (result i32) - i32.const 1 - i32.eqz - else - i32.const 0 - end - drop - i32.const 1 - if (result i32) - i32.const 0 - i32.eqz - else - i32.const 0 - end - drop - local.get $6 - local.get $9 - i32.const 3 - i32.shl - i32.add - local.get $7 - local.get $9 - i32.const 0 - i32.shl - i32.add - i32.load8_s - f64.convert_i32_s - f64.store - local.get $9 - i32.const 1 - i32.add - local.set $9 - br $for-loop|0 - end - end local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> (local $0 i32) (local $1 i32) (local $2 i32) @@ -54575,151 +55726,327 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + 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.const 3 call $~lib/typedarray/Int64Array#constructor - local.set $0 + local.tee $0 + i32.store local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 i64.const 7 call $~lib/typedarray/Int64Array#__set local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 i64.const 8 call $~lib/typedarray/Int64Array#__set local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 i64.const 9 call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 4 call $~lib/typedarray/Uint8Array#constructor - local.set $1 + local.tee $1 + i32.store offset=8 local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 i32.const 100 call $~lib/typedarray/Uint8Array#__set local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 i32.const 101 call $~lib/typedarray/Uint8Array#__set local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 i32.const 102 call $~lib/typedarray/Uint8Array#__set local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 i32.const 103 call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 call $~lib/typedarray/Int16Array#constructor - local.set $2 + local.tee $2 + i32.store offset=12 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 i32.const 1000 call $~lib/typedarray/Int16Array#__set local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 i32.const 1001 call $~lib/typedarray/Int16Array#__set local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 i32.const 1002 call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 10 - call $~lib/typedarray/Float64Array#constructor + call $~lib/typedarray/Int8Array#constructor local.tee $3 - call $~lib/rt/pure/__retain - local.set $4 - local.get $4 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> - local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.const 3 - i32.const 62 - i32.const 12912 + i32.const 0 + i32.const 15 + i32.const 9584 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 3 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> - local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.const 3 - i32.const 62 - i32.const 13072 + i32.const 0 + i32.const 15 + i32.const 9664 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 6 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> - local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.const 3 - i32.const 62 - i32.const 13184 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> i32.const 0 + i32.const 15 + i32.const 9696 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const 1 drop - local.get $4 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + i32.const 15 + i32.const 9728 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> - local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 4 - call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> - local.get $4 + call $~lib/typedarray/Int8Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 7 - call $~lib/typedarray/Float64Array#set<~lib/array/Array> + call $~lib/typedarray/Int8Array#set<~lib/array/Array> i32.const 0 drop - local.get $4 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 10 - i32.const 3 - i32.const 62 - i32.const 13296 + i32.const 0 + i32.const 15 + i32.const 9760 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - local.get $9 - call $~lib/rt/pure/__release - 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 - local.get $4 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer local.get $6 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -54728,16 +56055,26 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -54746,30 +56083,40 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Float32Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 0 + i32.const 1 i32.eq if (result i32) i32.const 0 @@ -54779,9 +56126,9 @@ i32.const 0 end if (result i32) - i32.const 1 + i32.const 0 if (result i32) - i32.const 0 + i32.const 1 else i32.const 0 end @@ -54801,7 +56148,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/typedarray/Float32Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length local.set $8 i32.const 0 local.set $9 @@ -54812,37 +56164,35 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 1 + i32.const 0 drop - local.get $7 + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 local.get $9 - i32.const 2 + i32.const 0 i32.shl i32.add - f32.load - local.set $11 - local.get $6 + local.get $7 local.get $9 - i32.const 0 + i32.const 2 i32.shl i32.add - local.get $11 - local.get $11 - f32.sub - f32.const 0 - f32.eq - if (result i32) - f32.const 0 - f32.const 255 - local.get $11 - f32.min - f32.max - i32.trunc_f32_u - else - i32.const 0 - end + i32.load i32.store8 local.get $9 i32.const 1 @@ -54851,14 +56201,123 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Uint8Array#get:length + local.set $2 + local.get $2 local.get $1 - call $~lib/rt/pure/__release + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Uint8Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 9824 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -54867,16 +56326,27 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + (local $11 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -54885,30 +56355,40 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Int32Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable end i32.const 1 - i32.const 1 + i32.const 0 i32.eq if (result i32) i32.const 0 @@ -54918,9 +56398,9 @@ i32.const 0 end if (result i32) - i32.const 1 + i32.const 0 if (result i32) - i32.const 1 + i32.const 0 else i32.const 0 end @@ -54940,7 +56420,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/typedarray/Int32Array#get:length + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.set $8 i32.const 0 local.set $9 @@ -54951,42 +56436,39 @@ local.set $10 local.get $10 if - i32.const 1 - drop i32.const 0 drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add - i32.load + f32.load local.set $11 - i32.const 1 - i32.eqz - drop - i32.const 1 - i32.const 4 - i32.le_u - drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add local.get $11 - i32.const 31 - i32.shr_s - i32.const -1 - i32.xor - i32.const 255 - local.get $11 - i32.sub - i32.const 31 - i32.shr_s local.get $11 - i32.or - i32.and + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_u + else + i32.const 0 + end i32.store8 local.get $9 i32.const 1 @@ -54995,14 +56477,12 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -55012,17 +56492,25 @@ (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i32) - (local $13 i32) - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__retain - local.set $5 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__retain - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.set $3 i32.const 0 @@ -55031,24 +56519,34 @@ i32.const 0 i32.lt_s if - i32.const 400 - i32.const 464 - i32.const 1774 + i32.const 336 + i32.const 608 + i32.const 1779 i32.const 19 call $~lib/builtins/abort unreachable end local.get $4 - call $~lib/typedarray/Uint32Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length local.get $3 i32.add local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length i32.gt_s if - i32.const 400 - i32.const 464 - i32.const 1775 + i32.const 336 + i32.const 608 + i32.const 1780 i32.const 47 call $~lib/builtins/abort unreachable @@ -55058,15 +56556,15 @@ i32.eq if (result i32) i32.const 0 - i32.const 2 + i32.const 3 i32.eq else i32.const 0 end if (result i32) - i32.const 1 + i32.const 0 if (result i32) - i32.const 0 + i32.const 1 else i32.const 0 end @@ -55086,7 +56584,12 @@ i32.load offset=4 local.set $7 local.get $4 - call $~lib/typedarray/Uint32Array#get:length + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length local.set $8 i32.const 0 local.set $9 @@ -55097,34 +56600,36 @@ local.set $10 local.get $10 if - i32.const 1 + i32.const 0 drop i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end drop - local.get $7 - local.get $9 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $11 i32.const 0 - i32.eqz + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - i32.const 255 - local.tee $12 - local.get $11 - local.tee $13 - local.get $12 - local.get $13 - i32.lt_u - select - i32.store8 + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store8 local.get $9 i32.const 1 i32.add @@ -55132,17 +56637,12 @@ br $for-loop|0 end end - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $start:std/typedarray - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -55151,3544 +56651,18890 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i32) + (local $11 f64) (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) - global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT - i32.const 1 - i32.eq - drop - global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT - i32.const 2 - i32.eq - drop - global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT - i32.const 4 - i32.eq - drop - global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT - i32.const 8 - i32.eq - drop - i32.const 0 - call $std/typedarray/testInstantiate - i32.const 5 - call $std/typedarray/testInstantiate + 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.const 3 - call $~lib/typedarray/Int32Array#constructor - local.set $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $0 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 95 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + drop + local.get $3 i32.const 0 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 96 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=8 - i32.const 3 - i32.const 4 - i32.mul - i32.eq - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 97 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get i32.const 1 + i32.const 0 i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 98 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if + i32.eq + else i32.const 0 - i32.const 336 - i32.const 99 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 2 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 100 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#subarray - local.set $1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.set $0 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 103 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 104 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=8 i32.const 1 - i32.const 4 - i32.mul + i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + i32.const 0 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 105 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 106 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - call $~lib/rt/pure/__release + drop + local.get $5 + i32.load offset=4 + local.get $3 i32.const 0 - i32.const 8 - call $~lib/typedarray/Float64Array#constructor - local.set $0 - local.get $0 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - f64.const 1 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 1 - f64.const 2 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - f64.const 7 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 3 - f64.const 6 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 4 - f64.const 5 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 5 - f64.const 4 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 6 - f64.const 3 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 7 - f64.const 8 - call $~lib/typedarray/Float64Array#__set - local.get $0 - i32.const 2 - i32.const 6 - call $~lib/typedarray/Float64Array#subarray - local.set $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - call $~lib/rt/pure/__release + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - local.set $0 - local.get $0 - call $~lib/typedarray/Float64Array#get:length - i32.const 4 - i32.eq - i32.eqz + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 122 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 - i32.const 8 - i32.mul - i32.eq - i32.eqz + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 123 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $0 - i32.load offset=8 - i32.const 4 - i32.const 8 - i32.mul + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 124 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 0 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Float64Array#sort@varargs - call $~lib/rt/pure/__release - local.get $0 - i32.const 0 - call $~lib/typedarray/Float64Array#__get - f64.const 4 - f64.eq if (result i32) - local.get $0 + i32.const 0 i32.const 1 - call $~lib/typedarray/Float64Array#__get - f64.const 5 - f64.eq + i32.eq else i32.const 0 end if (result i32) - local.get $0 - i32.const 2 - call $~lib/typedarray/Float64Array#__get - f64.const 6 - f64.eq - else i32.const 0 - end - if (result i32) - local.get $0 - i32.const 3 - call $~lib/typedarray/Float64Array#__get - f64.const 7 - f64.eq + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz else i32.const 0 end - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 126 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/__release + drop + local.get $5 + i32.load offset=4 + local.get $3 i32.const 0 - i32.const 3 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $0 - local.get $0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 i32.const 0 - i32.const -32 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__set - local.get $0 - i32.const 2 - i32.const 256 - call $~lib/typedarray/Uint8ClampedArray#__set + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#__get + drop + local.get $3 i32.const 0 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 135 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 2 - i32.eq - i32.eqz + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 136 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $0 - i32.const 2 - call $~lib/typedarray/Uint8ClampedArray#__get - i32.const 255 + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + i32.const 0 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 137 - i32.const 3 - call $~lib/builtins/abort - unreachable end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store local.get $0 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int8Array#constructor - local.set $0 - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int8Array#__set + i64.const 7 + call $~lib/typedarray/Int64Array#__set local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 - i32.const 2 - call $~lib/typedarray/Int8Array#__set + i64.const 8 + call $~lib/typedarray/Int64Array#__set local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 - i32.const 3 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int8Array#__set - local.get $0 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $0 - i32.const 1 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 15 - i32.const 560 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + i32.const 3 + call $~lib/typedarray/Int16Array#constructor local.tee $2 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 149 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 + i32.const 10 + call $~lib/typedarray/Uint8Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - i32.const 15 - i32.const 640 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 9792 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 152 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - i32.const -3 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release + i32.const 63 + i32.const 9872 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 - i32.const 5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - i32.const 15 - i32.const 672 + i32.const 63 + i32.const 9904 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 155 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - i32.const 15 - i32.const 704 + i32.const 63 + i32.const 9936 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 158 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - i32.const 1 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint8Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Uint8Array#set<~lib/array/Array> i32.const 0 - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $0 - i32.const 5 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - i32.const 15 - i32.const 736 + i32.const 63 + i32.const 9968 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 161 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray - local.set $1 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 + drop + local.get $3 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int8Array#fill - call $~lib/rt/pure/__release - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 165 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $1 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.eq - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 166 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $1 - i32.load offset=8 - i32.const 3 + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 167 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 3 - i32.const 0 - i32.const 15 - i32.const 768 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $8 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if + i32.const 2 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 168 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 5 - i32.const 0 - i32.const 15 - i32.const 800 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $9 - call $std/typedarray/isInt8ArrayEqual - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 169 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release + drop + local.get $5 + i32.load offset=4 local.get $3 - call $~lib/rt/pure/__release + i32.const 0 + i32.shl + i32.add + local.set $6 local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor local.set $9 - local.get $9 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $11 + i32.sub + i32.const 31 + i32.shr_s + local.get $11 + i32.or + i32.and + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $9 - i32.const 1 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 832 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $1 - call $std/typedarray/isInt32ArrayEqual + 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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 181 + i32.const 544 + i32.const 712 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $9 i32.const 0 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 880 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 184 - 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 10032 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - local.get $9 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const -3 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 928 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 187 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $9 - i32.const 2 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 976 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 190 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $9 - i32.const 0 i32.const 1 i32.const 0 - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1024 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $3 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if + i32.eq + if (result i32) + i32.const 0 + i32.const 2 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 193 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $9 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray + if (result i32) + i32.const 1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.set $8 - local.get $8 i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 1 + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $11 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> (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 i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#fill - call $~lib/rt/pure/__release - local.get $8 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 197 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 1 - i32.const 4 - i32.mul - i32.eq - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 198 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $8 - i32.load offset=8 - i32.const 3 - i32.const 4 - i32.mul + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 199 i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 - i32.const 3 - i32.const 2 - i32.const 16 - i32.const 1072 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $0 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if + i32.eq + else i32.const 0 - i32.const 336 - i32.const 200 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1104 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $7 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 201 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $9 - call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + drop local.get $5 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release + i32.load offset=4 local.get $3 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release i32.const 0 - i32.const 6 - call $~lib/typedarray/Int8Array#constructor + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 local.set $7 - local.get $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + local.set $8 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 4 - i32.const 5 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 5 - i32.const 6 - call $~lib/typedarray/Int8Array#__set - local.get $7 - i32.const 1 - i32.const 6 - call $~lib/typedarray/Int8Array#subarray - local.set $0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + local.set $11 + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.wrap_i64 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i64.extend_i32_s + i32.const 255 + local.get $11 + i32.wrap_i64 + i32.sub + i32.const 31 + i32.shr_s + i64.extend_i32_s + local.get $11 + i64.or + i64.and + i64.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 2 - i32.eq - i32.eqz + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 222 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/typedarray/Int8Array#get:length - i32.const 5 - i32.eq - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 223 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset i32.const 1 + i32.const 0 i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 224 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + else + i32.const 0 end - local.get $0 - i32.load offset=8 - i32.const 5 - i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 225 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $0 - i32.const 1 - i32.const 5 - call $~lib/typedarray/Int8Array#subarray + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.set $8 - local.get $8 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 3 - i32.eq - i32.eqz + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 1 + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + f64.const 0 + f64.const 255 + local.get $11 + f64.min + f64.max + i32.trunc_f64_u + else + i32.const 0 + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 228 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $8 - call $~lib/typedarray/Int8Array#get:length - i32.const 4 - i32.eq - i32.eqz + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 229 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $8 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 2 + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + i32.const 0 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 230 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $8 - i32.load offset=8 - i32.const 4 - i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 231 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $8 - i32.const 1 - i32.const 4 - call $~lib/typedarray/Int8Array#subarray + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (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 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 - call $~lib/typedarray/Int8Array#__get - i32.const 4 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 234 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length local.get $3 - call $~lib/typedarray/Int8Array#get:length - i32.const 3 - i32.eq - i32.eqz + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 235 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $3 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 3 + i32.const 1 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + i32.const 1 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 236 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $3 - i32.load offset=8 - i32.const 3 - i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 237 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $7 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release + drop + local.get $5 + i32.load offset=4 local.get $3 - call $~lib/rt/pure/__release i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $3 - local.get $3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + local.set $8 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $3 - i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $3 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $11 + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $11 + i32.sub + i32.const 31 + i32.shr_s + local.get $11 + i32.or + i32.and + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> (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) + 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 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $8 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $0 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1152 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $4 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 248 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $2 - local.get $3 - call $~lib/rt/pure/__release - local.get $2 - local.set $3 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.get $3 - i32.const 1 - i32.const 3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $2 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1200 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $5 - call $std/typedarray/isInt32ArrayEqual - i32.eqz + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 250 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $9 - local.get $3 - call $~lib/rt/pure/__release - local.get $9 - local.set $3 - local.get $3 i32.const 1 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $9 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1248 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $6 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if + i32.const 1 + i32.eq + if (result i32) + i32.const 0 + i32.const 0 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 252 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $8 - i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $1 - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - local.set $3 - local.get $3 - i32.const 2 - i32.const 2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $1 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1296 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $10 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if + if (result i32) + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 254 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $8 + drop + local.get $5 + i32.load offset=4 + local.get $3 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 local.set $7 - local.get $3 - call $~lib/rt/pure/__release - local.get $7 - local.set $3 - local.get $3 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 i32.const 0 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $7 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1344 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $12 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 256 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $11 + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $11 + i32.sub + i32.const 31 + i32.shr_s + local.get $11 + i32.or + i32.and + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end end - local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + (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 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 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $11 - local.get $3 - call $~lib/rt/pure/__release - local.get $11 - local.set $3 - local.get $3 - i32.const 1 i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $11 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1392 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $14 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 258 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $13 - local.get $3 - call $~lib/rt/pure/__release - local.get $13 - local.set $3 - local.get $3 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 4 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $13 - i32.const 5 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 - i32.const 16 - i32.const 1440 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $16 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 260 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $15 - local.get $3 - call $~lib/rt/pure/__release - local.get $15 - local.set $3 - local.get $3 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 0 - i32.const -2 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $15 - i32.const 5 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 i32.const 2 - i32.const 16 - i32.const 1488 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $18 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 262 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $17 - local.get $3 - call $~lib/rt/pure/__release - local.get $17 - local.set $3 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $3 + i32.store offset=16 local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - i32.const -2 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $17 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1536 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $20 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 264 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $19 + i32.const 63 + i32.const 10000 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> local.get $3 - call $~lib/rt/pure/__release - local.get $19 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> local.get $3 - i32.const -4 - i32.const -3 - i32.const -2 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $19 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1584 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $22 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 266 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $21 + i32.const 63 + i32.const 10096 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> local.get $3 - call $~lib/rt/pure/__release - local.get $21 - local.set $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> local.get $3 - i32.const -4 - i32.const -3 - i32.const -1 - call $~lib/typedarray/Int32Array#copyWithin - local.tee $21 - i32.const 5 - i32.const 2 - i32.const 16 - i32.const 1632 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $24 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 268 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $8 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $23 - local.get $3 - call $~lib/rt/pure/__release - local.get $23 - local.set $3 + i32.const 63 + i32.const 10128 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + drop local.get $3 - i32.const -4 - i32.const -3 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#copyWithin - local.tee $23 - i32.const 5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 2 - i32.const 16 - i32.const 1680 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 10160 call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $26 - call $std/typedarray/isInt32ArrayEqual - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 270 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> local.get $3 - call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release - local.get $9 - call $~lib/rt/pure/__release + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 local.get $6 - call $~lib/rt/pure/__release local.get $1 - call $~lib/rt/pure/__release - local.get $10 - call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $18 - call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - i32.const 0 - i32.const 5 - call $~lib/typedarray/Int32Array#constructor - local.set $26 - local.get $26 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 0 - i32.const 1 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 2 - i32.const 3 - call $~lib/typedarray/Int32Array#__set - local.get $26 - i32.const 3 - i32.const 4 - call $~lib/typedarray/Int32Array#__set - local.get $26 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 i32.const 4 - i32.const 5 - call $~lib/typedarray/Int32Array#__set - local.get $26 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> i32.const 1 - i32.const 4 - call $~lib/typedarray/Int32Array#subarray - local.set $23 - local.get $23 - call $~lib/typedarray/Int32Array#get:length - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 282 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.const 4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 283 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $23 - i32.load offset=8 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 10192 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer i32.const 12 - i32.eq - i32.eqz + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 284 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $26 - i32.const 1 - i32.const 3 - call $~lib/typedarray/Int32Array#slice - local.set $24 - local.get $24 - i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 2 - i32.eq - i32.eqz + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 287 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $24 i32.const 1 - call $~lib/typedarray/Int32Array#__get - i32.const 3 + i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + i32.const 2 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 288 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $24 - call $~lib/typedarray/Int32Array#get:length - i32.const 2 - i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 289 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $24 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 i32.const 0 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 290 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end end - local.get $24 - i32.load offset=8 - i32.const 8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Int16Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length i32.eq i32.eqz if i32.const 0 - i32.const 336 - i32.const 291 + i32.const 544 + i32.const 712 i32.const 3 call $~lib/builtins/abort unreachable end - local.get $23 - i32.const 1 - i32.const 2 - call $~lib/typedarray/Int32Array#slice - local.set $21 - local.get $21 i32.const 0 - call $~lib/typedarray/Int32Array#__get - i32.const 3 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 294 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $21 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 295 - 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Int16Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 10272 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + local.get $6 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end end - local.get $21 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.eq - i32.eqz + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 296 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $21 - i32.load offset=8 - i32.const 4 - i32.eq - i32.eqz + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 297 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $26 + i32.const 1 i32.const 0 - global.get $~lib/builtins/i32.MAX_VALUE - call $~lib/typedarray/Int32Array#slice - local.set $22 - local.get $22 - local.get $26 - i32.ne - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 300 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - call $~lib/typedarray/Int32Array#get:length - local.get $26 - call $~lib/typedarray/Int32Array#get:length i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + i32.const 2 + i32.eq + else i32.const 0 - i32.const 336 - i32.const 301 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $22 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - local.get $26 - call $~lib/arraybuffer/ArrayBufferView#get:byteOffset - i32.eq - i32.eqz - if + if (result i32) i32.const 0 - i32.const 336 - i32.const 302 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - local.get $22 - i32.load offset=8 - local.get $26 - i32.load offset=8 - i32.eq - i32.eqz - if + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else i32.const 0 - i32.const 336 - i32.const 303 - i32.const 3 - call $~lib/builtins/abort - unreachable end - local.get $26 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> - i32.const 0 + drop + local.get $5 + i32.load offset=4 + local.get $3 i32.const 1 - call $~lib/typedarray/Float64Array#constructor - local.set $21 - local.get $21 - i32.const 0 - f64.const nan:0x8000000000000 - call $~lib/typedarray/Float64Array#__set - local.get $21 - f64.const nan:0x8000000000000 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 i32.const 0 - call $~lib/typedarray/Float64Array#indexOf - i32.const -1 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 607 - i32.const 3 - call $~lib/builtins/abort - unreachable + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end end - local.get $21 - f64.const nan:0x8000000000000 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + 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/typedarray/Float64Array#includes + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 - i32.ne - i32.const 1 - i32.eq - i32.eqz + drop + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 i32.const 336 i32.const 608 - i32.const 3 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 1 - call $~lib/typedarray/Float32Array#constructor - local.set $22 - local.get $22 - i32.const 0 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $22 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#indexOf - i32.const -1 - i32.eq - i32.eqz + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 613 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $22 - f32.const nan:0x400000 - i32.const 0 - call $~lib/typedarray/Float32Array#includes - i32.const 0 - i32.ne + i32.const 1 i32.const 1 i32.eq - i32.eqz - if - i32.const 0 - i32.const 336 - i32.const 614 + if (result i32) + i32.const 1 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.eq + else + i32.const 0 end - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> - i32.const 0 + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 i32.const 0 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $21 - local.get $21 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 2 - global.set $~argumentsLength + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $22 - local.get $22 - call $~lib/typedarray/Uint8Array#get:length + drop + local.get $3 i32.const 0 - i32.eq - i32.eqz + i32.lt_s if - i32.const 0 i32.const 336 - i32.const 691 - i32.const 3 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - i32.const 0 - i32.const 2 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $25 - local.get $21 - call $~lib/rt/pure/__release - local.get $25 - local.set $21 - local.get $21 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - i32.const 0 - call $~lib/typedarray/Uint8Array.wrap@varargs - local.set $3 - local.get $22 - call $~lib/rt/pure/__release + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length local.get $3 - local.set $22 - local.get $22 - call $~lib/typedarray/Uint8Array#get:length - i32.const 0 - i32.eq - i32.eqz + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s if - i32.const 0 i32.const 336 - i32.const 695 - i32.const 3 + i32.const 608 + i32.const 1780 + i32.const 47 call $~lib/builtins/abort unreachable end - local.get $21 - call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> - call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> - call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> - i32.const 0 - i32.const 10 - call $~lib/typedarray/Uint8ClampedArray#constructor - local.set $22 - i32.const 0 - i32.const 3 - call $~lib/typedarray/Float32Array#constructor - local.set $21 - local.get $21 - i32.const 0 - f32.const 400 - call $~lib/typedarray/Float32Array#__set - local.get $21 - i32.const 1 - f32.const nan:0x400000 - call $~lib/typedarray/Float32Array#__set - local.get $21 - i32.const 2 - f32.const inf - call $~lib/typedarray/Float32Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int64Array#constructor - local.set $3 - local.get $3 - i32.const 0 - i64.const -10 - call $~lib/typedarray/Int64Array#__set - local.get $3 i32.const 1 - i64.const 100 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 2 - i64.const 10 - call $~lib/typedarray/Int64Array#__set - local.get $3 - i32.const 3 - i64.const 300 - call $~lib/typedarray/Int64Array#__set - i32.const 0 - i32.const 2 - call $~lib/typedarray/Int32Array#constructor - local.set $25 - local.get $25 i32.const 0 - i32.const 300 - call $~lib/typedarray/Int32Array#__set - local.get $25 - i32.const 1 - i32.const -1 - call $~lib/typedarray/Int32Array#__set - local.get $22 - local.get $21 - i32.const 1 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> - local.get $22 + i32.eq + if (result i32) + i32.const 1 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 local.get $3 - i32.const 4 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> - local.get $22 - local.get $25 - i32.const 8 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> - local.get $22 - i32.const 10 - i32.const 0 - i32.const 63 - i32.const 13408 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $23 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 0 - i32.const 4 - call $~lib/typedarray/Uint32Array#constructor - local.set $24 - local.get $24 - i32.const 0 - i32.const 1 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 1 - i32.const 300 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 2 - i32.const 100 - call $~lib/typedarray/Uint32Array#__set - local.get $24 - i32.const 3 - i32.const -1 - call $~lib/typedarray/Uint32Array#__set - i32.const 0 - i32.const 4 - call $~lib/typedarray/Int16Array#constructor - local.set $26 - local.get $26 - i32.const 0 - i32.const -10 - call $~lib/typedarray/Int16Array#__set - local.get $26 i32.const 1 - i32.const 100 - call $~lib/typedarray/Int16Array#__set - local.get $26 - i32.const 2 - i32.const 10 - call $~lib/typedarray/Int16Array#__set - local.get $26 - i32.const 3 - i32.const 300 - call $~lib/typedarray/Int16Array#__set - local.get $22 - local.get $24 - i32.const 0 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> - local.get $22 - local.get $26 - i32.const 5 - call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> - local.get $22 - i32.const 10 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 i32.const 0 - i32.const 63 - i32.const 13440 - call $~lib/rt/__newArray - call $~lib/rt/pure/__retain - local.tee $20 - call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - local.get $22 - call $~lib/rt/pure/__release - local.get $21 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/rt/pure/finalize (param $0 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer 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) + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.set $1 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - i32.const 268435455 - i32.and - local.set $2 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 i32.const 0 drop - i32.const 1 - drop - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz + local.get $3 + i32.const 0 + i32.lt_s if - i32.const 0 - i32.const 208 - i32.const 122 - i32.const 14 + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 i32.const 1 i32.eq - if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop + if (result i32) i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 208 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize + i32.const 0 + i32.eq else - i32.const 1 - drop - local.get $2 i32.const 0 - i32.gt_u - i32.eqz - if + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else i32.const 0 - i32.const 208 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable end - i32.const 1 - drop - 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 + i32.eqz + else + i32.const 0 end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:std/typedarray - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - global.get $~lib/memory/__heap_base - i32.lt_u + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s if - return + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable end i32.const 1 - drop - i32.const 1 - drop - local.get $1 i32.const 1 i32.eq - i32.eqz - if + if (result i32) + i32.const 1 + i32.const 1 + i32.eq + else i32.const 0 - i32.const 208 - 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 + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 end - ) - (func $~lib/typedarray/Int8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint8ClampedArray~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint16Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Int64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Uint64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float32Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/typedarray/Float64Array~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/arraybuffer/ArrayBufferView~visit - ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 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#__visit (param $0 i32) (param $1 i32) + local.get $3 i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end 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/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit (param $0 i32) (param $1 i32) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + (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 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set local.get $0 - i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit - ) - (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__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<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__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<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__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<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit - ) - (func $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__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<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit - ) - (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int16Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10224 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10320 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $0 - i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10368 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10416 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/rt/pure/__visit + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Int16Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 64 + i32.const 10464 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>#__visit + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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 - i32.load offset=4 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Uint16Array#get:length + local.set $2 + local.get $2 local.get $1 - call $~lib/rt/pure/__visit + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Uint16Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 10560 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__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<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__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<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>#__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__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<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>#__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>#__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>#__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>#__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>#__visit + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__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<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__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<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Uint16Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint16Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) - local.get $0 + local.get $3 + i32.const 1 + i32.shl + i32.add + local.set $6 + local.get $4 i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>#__visit + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 1 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store16 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + (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 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store local.get $0 - i32.load offset=4 - local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set local.get $0 - i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>#__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit (param $0 i32) (param $1 i32) - local.get $0 - i32.load offset=4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/rt/pure/__visit - ) - (func $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__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<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__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<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>#__visit - ) - (func $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__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<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__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<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__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<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__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<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__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<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__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<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__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<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>#__visit - ) - (func $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__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<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit (param $0 i32) (param $1 i32) - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer i32.const 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#__visit (param $0 i32) (param $1 i32) + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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#__visit (param $0 i32) (param $1 i32) + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer 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#__visit (param $0 i32) (param $1 i32) + i32.const 10 + call $~lib/typedarray/Uint16Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 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) + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10512 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10608 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 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 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10656 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + i32.const 1 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 $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10704 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint16Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Uint16Array#set<~lib/array/Array> i32.const 0 drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 1 + i32.const 65 + i32.const 10752 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer local.get $1 - call $~lib/array/Array#__visit - ) - (func $~lib/array/Array#__visit (param $0 i32) (param $1 i32) + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 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#__visit (param $0 i32) (param $1 i32) + local.get $3 i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end drop - local.get $0 - i32.load - local.get $1 - call $~lib/rt/pure/__visit + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Int32Array#get:length + local.set $2 + local.get $2 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/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> - block $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> - block $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> - block $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> - block $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> - block $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> - block $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> - block $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> - block $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> - block $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> - block $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> - block $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> - block $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> - block $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> - block $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> - block $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> - block $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> - block $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> - block $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> - block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> - block $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> - block $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> - block $~lib/array/Array - block $~lib/array/Array - block $~lib/function/Function<%28f64%2Cf64%29=>i32> - block $~lib/typedarray/Float64Array - block $~lib/typedarray/Float32Array - block $~lib/typedarray/Uint64Array - block $~lib/typedarray/Int64Array - block $~lib/typedarray/Uint32Array - block $~lib/typedarray/Int32Array - block $~lib/typedarray/Uint16Array - block $~lib/typedarray/Int16Array - block $~lib/typedarray/Uint8ClampedArray - block $~lib/typedarray/Uint8Array - block $~lib/typedarray/Int8Array - block $~lib/arraybuffer/ArrayBufferView - block $~lib/string/String - block $~lib/arraybuffer/ArrayBuffer - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/typedarray/Int8Array $~lib/typedarray/Uint8Array $~lib/typedarray/Uint8ClampedArray $~lib/typedarray/Int16Array $~lib/typedarray/Uint16Array $~lib/typedarray/Int32Array $~lib/typedarray/Uint32Array $~lib/typedarray/Int64Array $~lib/typedarray/Uint64Array $~lib/typedarray/Float32Array $~lib/typedarray/Float64Array $~lib/function/Function<%28f64%2Cf64%29=>i32> $~lib/array/Array $~lib/array/Array $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool> $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void> $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void> $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void> $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void> $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void> $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void> $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void> $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void> $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void> $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void> $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $~lib/array/Array $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/typedarray/Int8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint16Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Int64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Uint64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float32Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/typedarray/Float64Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Cu8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Cu16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Cu32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Cu64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Cf32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Cf64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>i8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>u8>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>i16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>u16>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>i32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>u32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>i64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>u64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>f32>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>f64>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>bool>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i8%2Ci32%2C~lib/typedarray/Int8Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u8%2Ci32%2C~lib/typedarray/Uint8ClampedArray%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i16%2Ci32%2C~lib/typedarray/Int16Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u16%2Ci32%2C~lib/typedarray/Uint16Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i32%2Ci32%2C~lib/typedarray/Int32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u32%2Ci32%2C~lib/typedarray/Uint32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28i64%2Ci32%2C~lib/typedarray/Int64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28u64%2Ci32%2C~lib/typedarray/Uint64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f32%2Ci32%2C~lib/typedarray/Float32Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/function/Function<%28f64%2Ci32%2C~lib/typedarray/Float64Array%29=>void>~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return - end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Int32Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 10864 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_s + local.get $6 + f64.convert_i32_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - call $~lib/array/Array~visit - return end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_s + else + i32.const 0 + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 2 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_s + else + i32.const 0 + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + (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 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10800 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10912 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 10976 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 11040 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Int32Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 16 + i32.const 11104 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Uint32Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Uint32Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i32.ne + if + i32.const 11232 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i32_u + local.get $6 + f64.convert_i32_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + local.get $11 + i32.trunc_f32_u + else + i32.const 0 + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + i64.store32 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 2 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i32) + local.get $11 + i32.trunc_f64_u + else + i32.const 0 + end + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + (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 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint32Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11168 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11280 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11344 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11408 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint32Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 66 + i32.const 11472 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Int64Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Int64Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i64.ne + if + i32.const 11648 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i64_s + local.get $6 + f64.convert_i64_s + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $11 + i64.trunc_f32_s + else + i64.const 0 + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 3 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $11 + i64.trunc_f64_s + else + i64.const 0 + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i64.load8_u + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Int64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i64.load8_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + (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 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Int64Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11536 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11696 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11808 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 11920 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Int64Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 67 + i32.const 12032 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i64.load32_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i64) + (local $6 i64) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Uint64Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Uint64Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + i64.ne + if + i32.const 12256 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.convert_i64_u + local.get $6 + f64.convert_i64_u + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i64) + local.get $11 + i64.trunc_f32_u + else + i64.const 0 + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (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 f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 3 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $11 + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $11 + local.get $11 + f64.sub + f64.const 0 + f64.eq + if (result i64) + local.get $11 + i64.trunc_f64_u + else + i64.const 0 + end + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i64.load8_u + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i64.load16_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + i32.const 0 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i64.load8_s + i64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint64Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12144 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12304 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12416 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + i32.const 1 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 2 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12528 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Uint64Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 68 + i32.const 12640 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + f32.convert_i32_s + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f32) + (local $6 f32) + (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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Float32Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Float32Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + f32.ne + if + i32.const 12816 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + f64.promote_f32 + local.get $6 + f64.promote_f32 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.eq + if (result i32) + i32.const 2 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.load offset=4 + local.get $4 + i32.load offset=8 + call $~lib/memory/memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + f32.convert_i64_s + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + f32.convert_i32_u + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f32.convert_i32_s + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float32Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float32Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 2 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 2 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + f32.convert_i32_s + f32.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Float32Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12752 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12864 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12928 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Float32Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Float32Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 2 + i32.const 61 + i32.const 12992 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + f64.convert_i32_s + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 f64) + (local $6 f64) + (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.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/typedarray/Float64Array#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + call $~lib/array/Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 712 + i32.const 3 + call $~lib/builtins/abort + unreachable + 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 + local.get $0 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/typedarray/Float64Array#__uget + local.set $5 + local.get $1 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + local.get $3 + call $~lib/array/Array#__uget + local.set $6 + local.get $5 + local.get $6 + f64.ne + if + i32.const 13168 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store + local.get $7 + i32.const 3 + local.get $3 + f64.convert_i32_s + local.get $5 + local.get $6 + f64.const 0 + f64.const 0 + call $~lib/builtins/trace + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 718 + i32.const 7 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 0 + i32.eq + if (result i32) + i32.const 3 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 1 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + f64.promote_f32 + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 3 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 3 + i32.shl + i32.add + i64.load + f64.convert_i64_s + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_u + f64.convert_i32_u + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 1 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 1 + i32.shl + i32.add + i32.load16_s + f64.convert_i32_s + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Float64Array#set<~lib/array/Array> (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/typedarray/Float64Array#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + i32.const 1 + i32.eq + if (result i32) + i32.const 3 + i32.const 0 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + i32.eqz + else + i32.const 0 + end + drop + i32.const 1 + if (result i32) + i32.const 0 + i32.eqz + else + i32.const 0 + end + drop + local.get $6 + local.get $9 + i32.const 3 + i32.shl + i32.add + local.get $7 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.load8_s + f64.convert_i32_s + f64.store + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + 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 + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i64.const 7 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i64.const 8 + call $~lib/typedarray/Int64Array#__set + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i64.const 9 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint8Array#constructor + local.tee $1 + i32.store offset=8 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 100 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 101 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 102 + call $~lib/typedarray/Uint8Array#__set + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 3 + i32.const 103 + call $~lib/typedarray/Uint8Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int16Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 1000 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 + i32.const 1001 + call $~lib/typedarray/Int16Array#__set + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 2 + i32.const 1002 + call $~lib/typedarray/Int16Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Float64Array#constructor + local.tee $3 + i32.store offset=16 + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 13056 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 3 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 13216 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $0 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 6 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int64Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 13328 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $1 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 0 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Uint8Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $2 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 4 + call $~lib/typedarray/Float64Array#set<~lib/typedarray/Int16Array> + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + global.get $std/typedarray/setSource7 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.const 7 + call $~lib/typedarray/Float64Array#set<~lib/array/Array> + i32.const 0 + drop + local.get $3 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 10 + i32.const 3 + i32.const 62 + i32.const 13440 + call $~lib/rt/__newArray + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> (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 f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 0 + i32.eq + if (result i32) + i32.const 0 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Float32Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 1 + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $11 + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + local.get $11 + f32.sub + f32.const 0 + f32.eq + if (result i32) + f32.const 0 + f32.const 255 + local.get $11 + f32.min + f32.max + i32.trunc_f32_u + else + i32.const 0 + end + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 0 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 1 + if (result i32) + i32.const 1 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=8 + local.get $12 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + i32.const 1 + i32.eqz + drop + i32.const 1 + i32.const 4 + i32.le_u + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + local.get $11 + i32.const 31 + i32.shr_s + i32.const -1 + i32.xor + i32.const 255 + local.get $11 + i32.sub + i32.const 31 + i32.shr_s + local.get $11 + i32.or + i32.and + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> (param $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) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + local.tee $4 + i32.store offset=4 + local.get $2 + local.set $3 + i32.const 0 + drop + local.get $3 + i32.const 0 + i32.lt_s + if + i32.const 336 + i32.const 608 + i32.const 1779 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint32Array#get:length + local.get $3 + i32.add + local.get $5 + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.gt_s + if + i32.const 336 + i32.const 608 + i32.const 1780 + i32.const 47 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 1 + i32.eq + if (result i32) + i32.const 0 + i32.const 2 + i32.eq + else + i32.const 0 + end + if (result i32) + i32.const 1 + if (result i32) + i32.const 0 + else + i32.const 0 + end + i32.eqz + else + i32.const 0 + end + drop + local.get $5 + i32.load offset=4 + local.get $3 + i32.const 0 + i32.shl + i32.add + local.set $6 + local.get $4 + i32.load offset=4 + local.set $7 + local.get $4 + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $~lib/typedarray/Uint32Array#get:length + local.set $8 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + local.set $10 + local.get $10 + if + i32.const 1 + drop + i32.const 0 + drop + local.get $7 + local.get $9 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $11 + i32.const 0 + i32.eqz + drop + local.get $6 + local.get $9 + i32.const 0 + i32.shl + i32.add + i32.const 255 + local.tee $12 + local.get $11 + local.tee $13 + local.get $12 + local.get $13 + i32.lt_u + select + i32.store8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:std/typedarray + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + 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 + global.get $~lib/typedarray/Int8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8Array.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Uint8ClampedArray.BYTES_PER_ELEMENT + i32.const 1 + i32.eq + drop + global.get $~lib/typedarray/Int16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Uint16Array.BYTES_PER_ELEMENT + i32.const 2 + i32.eq + drop + global.get $~lib/typedarray/Int32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Uint32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Int64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Uint64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + global.get $~lib/typedarray/Float32Array.BYTES_PER_ELEMENT + i32.const 4 + i32.eq + drop + global.get $~lib/typedarray/Float64Array.BYTES_PER_ELEMENT + i32.const 8 + i32.eq + drop + i32.const 256 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 288 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 432 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $std/typedarray/testInstantiate + i32.const 5 + call $std/typedarray/testInstantiate + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 95 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 96 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 97 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 98 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 99 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 100 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#subarray + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 103 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 104 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 105 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 8 + call $~lib/typedarray/Float64Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f64.const 1 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f64.const 2 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f64.const 7 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + f64.const 6 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + f64.const 5 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + f64.const 4 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 6 + f64.const 3 + call $~lib/typedarray/Float64Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 7 + f64.const 8 + call $~lib/typedarray/Float64Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 6 + call $~lib/typedarray/Float64Array#subarray + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Float64Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.const 8 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Float64Array#sort@varargs + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Float64Array#__get + f64.const 4 + f64.eq + if (result i32) + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + call $~lib/typedarray/Float64Array#__get + f64.const 5 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + call $~lib/typedarray/Float64Array#__get + f64.const 6 + f64.eq + else + i32.const 0 + end + if (result i32) + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + call $~lib/typedarray/Float64Array#__get + f64.const 7 + f64.eq + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 126 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const -32 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 256 + call $~lib/typedarray/Uint8ClampedArray#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 135 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + call $~lib/typedarray/Uint8ClampedArray#__get + i32.const 255 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 137 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int8Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int8Array#fill + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 704 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 149 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 784 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 152 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int8Array#fill + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 816 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 155 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 848 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 158 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int8Array#fill + drop + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 880 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 161 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int8Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 165 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 166 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 167 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 0 + i32.const 15 + i32.const 912 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 168 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + i32.const 15 + i32.const 944 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt8ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 169 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 976 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 181 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1024 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 184 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 0 + i32.const -3 + call $~lib/typedarray/Int32Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1072 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 187 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1120 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 190 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + i32.const 0 + call $~lib/typedarray/Int32Array#fill + drop + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1168 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 193 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#fill + drop + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 197 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 198 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 3 + i32.const 4 + i32.mul + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 199 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 2 + i32.const 16 + i32.const 1216 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 200 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1248 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 201 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $~lib/typedarray/Int8Array#constructor + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int8Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int8Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int8Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int8Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int8Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 6 + call $~lib/typedarray/Int8Array#__set + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 6 + call $~lib/typedarray/Int8Array#subarray + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 222 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 223 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 224 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 225 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 5 + call $~lib/typedarray/Int8Array#subarray + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 228 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 229 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 231 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int8Array#subarray + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int8Array#__get + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 234 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int8Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 235 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 236 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 237 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $0 + i32.store + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 0 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1296 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 248 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 1 + i32.const 3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1344 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 1 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1392 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 2 + i32.const 2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1440 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 254 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 0 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1488 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 256 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 1 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1536 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 258 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 1 + i32.const 2 + i32.const 4 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1584 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 260 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 0 + i32.const -2 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1632 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 262 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const 0 + i32.const -2 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1680 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 264 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const -4 + i32.const -3 + i32.const -2 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1728 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 266 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const -4 + i32.const -3 + i32.const -1 + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1776 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 268 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=24 + local.get $8 + i32.const -4 + i32.const -3 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#copyWithin + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 2 + i32.const 16 + i32.const 1824 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/isInt32ArrayEqual + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 270 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/typedarray/Int32Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 3 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 4 + call $~lib/typedarray/Int32Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 4 + i32.const 5 + call $~lib/typedarray/Int32Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 4 + call $~lib/typedarray/Int32Array#subarray + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 282 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 283 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.load offset=8 + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 284 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 3 + call $~lib/typedarray/Int32Array#slice + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 287 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 288 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 289 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 290 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.load offset=8 + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 291 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 2 + call $~lib/typedarray/Int32Array#slice + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + call $~lib/typedarray/Int32Array#__get + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 294 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 295 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 296 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 297 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + global.get $~lib/builtins/i32.MAX_VALUE + call $~lib/typedarray/Int32Array#slice + local.tee $4 + i32.store offset=28 + local.get $4 + local.get $0 + i32.ne + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 300 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Int32Array#get:length + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 301 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/arraybuffer/ArrayBufferView#get:byteOffset + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 302 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.load offset=8 + local.get $0 + i32.load offset=8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 303 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testReduce<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testReduce<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayMap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayMap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayForEach<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayReverse<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/typedarray/Float64Array#constructor + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f64.const nan:0x8000000000000 + call $~lib/typedarray/Float64Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 607 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + f64.const nan:0x8000000000000 + i32.const 0 + call $~lib/typedarray/Float64Array#includes + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 608 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $~lib/typedarray/Float32Array#constructor + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#indexOf + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 613 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + f32.const nan:0x400000 + i32.const 0 + call $~lib/typedarray/Float32Array#includes + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 614 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayJoinAndToString<~lib/typedarray/Float64Array,f64> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 691 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + i32.const 0 + call $~lib/typedarray/Uint8Array.wrap@varargs + local.tee $4 + i32.store offset=28 + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $~lib/typedarray/Uint8Array#get:length + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 544 + i32.const 695 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + call $std/typedarray/testArrayWrap<~lib/typedarray/Int8Array,i8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8Array,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint8ClampedArray,u8> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int16Array,i16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint16Array,u16> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int32Array,i32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint32Array,u32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Int64Array,i64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Uint64Array,u64> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float32Array,f32> + call $std/typedarray/testArrayWrap<~lib/typedarray/Float64Array,f64> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint8ClampedArray> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint16Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Int64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Uint64Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float32Array> + call $std/typedarray/testTypedArraySet<~lib/typedarray/Float64Array> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/typedarray/Uint8ClampedArray#constructor + local.tee $4 + i32.store offset=28 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/typedarray/Float32Array#constructor + local.tee $1 + i32.store offset=16 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + f32.const 400 + call $~lib/typedarray/Float32Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + f32.const nan:0x400000 + call $~lib/typedarray/Float32Array#__set + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + f32.const inf + call $~lib/typedarray/Float32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int64Array#constructor + local.tee $2 + i32.store offset=12 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i64.const -10 + call $~lib/typedarray/Int64Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i64.const 100 + call $~lib/typedarray/Int64Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i64.const 10 + call $~lib/typedarray/Int64Array#__set + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i64.const 300 + call $~lib/typedarray/Int64Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/typedarray/Int32Array#constructor + local.tee $3 + i32.store offset=20 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 300 + call $~lib/typedarray/Int32Array#__set + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const -1 + call $~lib/typedarray/Int32Array#__set + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $1 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 1 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Float32Array> + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $2 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 4 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int64Array> + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $3 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 8 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int32Array> + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 13552 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Uint32Array#constructor + local.tee $5 + i32.store offset=32 + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const 1 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 300 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 100 + call $~lib/typedarray/Uint32Array#__set + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const -1 + call $~lib/typedarray/Uint32Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/typedarray/Int16Array#constructor + local.tee $0 + i32.store + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 0 + i32.const -10 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 1 + i32.const 100 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 10 + call $~lib/typedarray/Int16Array#__set + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 300 + call $~lib/typedarray/Int16Array#__set + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 0 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Uint32Array> + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + local.get $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + i32.const 5 + call $~lib/typedarray/Uint8ClampedArray#set<~lib/typedarray/Int16Array> + local.get $4 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + i32.const 0 + i32.const 63 + i32.const 13584 + call $~lib/rt/__newArray + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=8 + local.get $8 + call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + 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 36 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (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 32 + i32.const 80 + i32.const 18 + 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 + local.get $3 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/Float64Array#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 + 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 + 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 672 + br $~lib/util/sort/COMPARATOR|inlined.0 + end + local.tee $1 + i32.store + end + local.get $0 + local.get $1 + call $~lib/typedarray/Float64Array#sort + 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 + 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 $~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 4 + 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 + end + if + i32.const 6080 + i32.const 6208 + i32.const 373 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 6272 + 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 + 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 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + ) + (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 4 + 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 + end + if + i32.const 6080 + i32.const 6208 + i32.const 350 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.eqz + if + i32.const 6272 + 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 + 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/array/Array~visit - return + 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 + 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/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 4 + 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 + end + if + i32.const 6080 + i32.const 6208 + i32.const 431 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i64.const 0 + i64.ne + i32.eqz + if + i32.const 6272 + 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 - call $~lib/array/Array~visit + 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 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + ) + (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 4 + 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 + end + if + i32.const 6080 + i32.const 6208 + 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 6272 + 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 - unreachable + 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 + 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/util/number/dtoa (param $0 f64) (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 + f64.const 0 + f64.eq + if + i32.const 7936 + 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 7968 + 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 8000 + i32.const 8048 + 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 8080 + local.get $0 + call $~lib/util/number/dtoa_core + i32.const 1 + i32.shl + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + local.get $2 + i32.const 8080 + local.get $1 + call $~lib/memory/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 $~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 32 + i32.const 80 + i32.const 49 + 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 + local.get $2 + i32.const 0 + local.get $1 + call $~lib/memory/memory.fill + 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/super-inline.json b/tests/compiler/super-inline.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/super-inline.json +++ b/tests/compiler/super-inline.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/super-inline.optimized.wat b/tests/compiler/super-inline.optimized.wat index 19d8f463b1..696ec849b5 100644 --- a/tests/compiler/super-inline.optimized.wat +++ b/tests/compiler/super-inline.optimized.wat @@ -1,56 +1,1227 @@ (module - (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (memory $0 0) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (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_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))) + (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 \00\00\00\03") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $super-inline/foo (mut i32) (i32.const 0)) + (global $super-inline/bar (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17868)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/__new (param $0 i32) (result i32) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + global.get $super-inline/foo + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 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 $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1440 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1444 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - global.get $~lib/rt/stub/offset - global.get $~lib/rt/stub/offset + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 273 + 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 1392 + i32.const 275 + 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 1392 + i32.const 288 + 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 1392 + i32.const 201 + 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 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 $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 1392 + i32.const 224 + 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 1392 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 240 + 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 1392 + i32.const 256 + 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 1392 + i32.const 381 + 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 1392 + i32.const 388 + 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 1392 + i32.const 401 + 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 - local.tee $3 - i32.const 28 i32.add - local.tee $1 + 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 17872 + i32.const 0 + i32.store + i32.const 19440 + 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 17872 + 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 17872 + 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 17872 + i32.const 19444 memory.size - local.tee $4 i32.const 16 i32.shl - i32.const 15 - i32.add - i32.const -16 + 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 $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17868 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 - i32.gt_u - if - local.get $4 - local.get $1 + 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 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/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 - i32.const 65535 + 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.tee $2 + local.set $1 + local.get $2 + local.get $1 + local.get $1 local.get $2 - local.get $4 i32.lt_s select memory.grow i32.const 0 i32.lt_s if - local.get $2 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -58,52 +1229,337 @@ 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 1392 + i32.const 500 + i32.const 16 + call $~lib/builtins/abort + unreachable + end end local.get $1 - global.set $~lib/rt/stub/offset + i32.load + i32.const -4 + i32.and i32.const 28 - i32.store - local.get $3 - i32.const 4 - i32.sub - local.tee $1 - i32.const 0 - i32.store offset=4 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 502 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 local.get $1 - i32.const 0 - i32.store offset=8 + 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/itcms/__new (param $0 i32) (result i32) + (local $1 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-continue|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-continue|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $1 local.get $0 i32.store offset=12 local.get $1 i32.const 0 i32.store offset=16 - local.get $3 - i32.const 16 + local.get $1 + 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 $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 $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + return + end + unreachable + ) (func $~start - i32.const 1036 - global.set $~lib/rt/stub/offset - i32.const 3 - call $~lib/rt/stub/__new + (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 1168 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1200 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 0 + call $super-inline/Foo#constructor global.set $super-inline/foo - block $__inlined_func$super-inline/Foo#a@virtual - global.get $super-inline/foo - i32.const 8 - i32.sub - i32.load - i32.const 4 - i32.eq - br_if $__inlined_func$super-inline/Foo#a@virtual + global.get $~lib/memory/__stack_pointer + global.get $super-inline/foo + local.tee $0 + i32.store + local.get $0 + i32.const 8 + i32.sub + i32.load + i32.const 4 + i32.eq + if + local.get $0 + call $super-inline/Bar#a + end + global.get $~lib/memory/__stack_pointer + i32.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 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $super-inline/Foo#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $super-inline/bar + global.get $~lib/memory/__stack_pointer + global.get $super-inline/bar + local.tee $0 + i32.store + local.get $0 + call $super-inline/Bar#a + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~stack_check + 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 + ) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - call $~lib/rt/stub/__new + 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 3 - call $~lib/rt/stub/__new - drop + 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 $super-inline/Bar#a (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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index f0198de783..83fd2b353c 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -1,242 +1,2570 @@ (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 $none_=>_none (func)) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (memory $0 0) + (type $i32_i32_i32_i32_=>_none (func (param i32 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))) + (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\03\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/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $super-inline/foo (mut i32) (i32.const 0)) (global $super-inline/bar (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 8)) + (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)) (export "memory" (memory $0)) (start $~start) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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 273 + 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 368 + i32.const 275 + 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 368 + i32.const 288 + 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 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 $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 368 + i32.const 224 + 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 368 + i32.const 239 + 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 368 + i32.const 240 + 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 368 + i32.const 256 + 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 368 + i32.const 381 + 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 388 + 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 401 + 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 32 + i32.const 368 + i32.const 462 + 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 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $0 - i32.const 4 - i32.add - i32.const 15 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl i32.add - i32.const 15 + i32.load offset=4 + i32.const 0 i32.const -1 i32.xor + local.get $3 + i32.shl i32.and - i32.const 4 - i32.sub + 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 347 + 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/stub/maybeGrowMemory (param $0 i32) - (local $1 i32) + (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 - i32.const 15 + 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 361 + 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 - i32.gt_u + 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 500 + 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 502 + 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 + 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 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const 3 i32.and - i32.const 16 - i32.shr_u + 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 $1 - local.tee $4 local.get $3 - local.tee $5 + 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 - i32.gt_s - select - local.set $4 - local.get $4 - memory.grow - i32.const 0 - i32.lt_s + 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 - memory.grow - i32.const 0 - i32.lt_s + i32.const 32 + i32.ge_u + local.set $10 + local.get $10 if - unreachable + 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 - local.get $0 - global.set $~lib/rt/stub/offset ) - (func $~lib/rt/stub/__alloc (param $0 i32) (result i32) - (local $1 i32) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) local.get $0 - i32.const 1073741820 - i32.gt_u + i32.const 1073741804 + i32.ge_u if + i32.const 32 + i32.const 96 + i32.const 256 + i32.const 31 + call $~lib/builtins/abort unreachable end - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset - i32.const 4 + 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 $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 + call $~lib/rt/itcms/Object#set:rtId 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 + 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 - call $~lib/rt/stub/__alloc - local.set $2 + global.set $~lib/rt/itcms/total local.get $2 - i32.const 4 - i32.sub + i32.const 20 + i32.add 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 $0 + call $~lib/memory/memory.fill local.get $3 + ) + (func $super-inline/Foo#a (param $0 i32) (result i32) + i32.const 1 + ) + (func $super-inline/Foo#a@virtual (param $0 i32) (result i32) + (local $1 i32) + block $default + block $case0 + local.get $0 + i32.const 8 + i32.sub + i32.load + local.set $1 + local.get $1 + i32.const 4 + i32.eq + br_if $case0 + br $default + end + local.get $0 + call $super-inline/Bar#a + return + end local.get $0 - i32.store offset=16 - local.get $2 - i32.const 16 - i32.add + call $super-inline/Foo#a ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + global.get $super-inline/foo + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $super-inline/bar + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 224 local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit ) - (func $super-inline/Foo#constructor (param $0 i32) (result i32) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 - i32.eqz + i32.load + local.tee $2 if - i32.const 0 - i32.const 3 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit end - local.get $0 ) - (func $super-inline/Foo#a (param $0 i32) (result i32) - i32.const 1 + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $super-inline/Bar + block $super-inline/Foo + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $super-inline/Foo $super-inline/Bar $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 $~start + call $start:super-inline + ) + (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 $super-inline/Bar#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 0 i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end + global.get $~lib/memory/__stack_pointer local.get $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 call $super-inline/Foo#constructor - local.set $0 - local.get $0 - ) - (func $super-inline/Bar#a (param $0 i32) (result i32) - (local $1 i32) + local.tee $0 + i32.store local.get $0 local.set $1 - i32.const 1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 ) (func $start:super-inline - 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 + (local $0 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + 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 $super-inline/Foo#constructor global.set $super-inline/foo global.get $super-inline/foo + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $super-inline/Foo#a@virtual drop i32.const 0 call $super-inline/Bar#constructor global.set $super-inline/bar global.get $super-inline/bar + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $super-inline/Bar#a drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - call $start:super-inline - ) - (func $super-inline/Foo#a@virtual (param $0 i32) (result i32) + (func $super-inline/Foo#constructor (param $0 i32) (result i32) (local $1 i32) - block $default - block $case0 - local.get $0 - i32.const 8 - i32.sub - i32.load - local.set $1 - local.get $1 - i32.const 4 - i32.eq - br_if $case0 - br $default - end - local.get $0 - call $super-inline/Bar#a - return + global.get $~lib/memory/__stack_pointer + i32.const 4 + 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 - call $super-inline/Foo#a + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $super-inline/Bar#a (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 + local.tee $1 + i32.store + i32.const 1 + 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/switch.json b/tests/compiler/switch.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/switch.json +++ b/tests/compiler/switch.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat index a67344c9b1..b65009f41b 100644 --- a/tests/compiler/switch.optimized.wat +++ b/tests/compiler/switch.optimized.wat @@ -4,7 +4,8 @@ (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\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") (export "memory" (memory $0)) (start $~start) (func $switch/doSwitch (param $0 i32) (result i32) diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index 84e608ee28..0737e5482e 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -4,8 +4,11 @@ (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\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") (table $0 1 funcref) + (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)) (export "memory" (memory $0)) (start $~start) (func $switch/doSwitch (param $0 i32) (result i32) diff --git a/tests/compiler/tablebase.json b/tests/compiler/tablebase.json index 03526388ff..c290be300d 100644 --- a/tests/compiler/tablebase.json +++ b/tests/compiler/tablebase.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--tableBase 32" ] } \ No newline at end of file diff --git a/tests/compiler/tablebase.optimized.wat b/tests/compiler/tablebase.optimized.wat index aeae00b62d..b82954751a 100644 --- a/tests/compiler/tablebase.optimized.wat +++ b/tests/compiler/tablebase.optimized.wat @@ -3,11 +3,35 @@ (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) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00 ") - (data (i32.const 1068) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\03\00\00\00\08\00\00\00 ") + (data (i32.const 1068) ",") + (data (i32.const 1080) "\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17500)) (export "memory" (memory $0)) (start $~start) (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1116 + i32.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 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store i32.const 1056 i32.load i32.const 32 @@ -20,5 +44,9 @@ 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/tablebase.untouched.wat b/tests/compiler/tablebase.untouched.wat index d830f6521c..79350f1fbe 100644 --- a/tests/compiler/tablebase.untouched.wat +++ b/tests/compiler/tablebase.untouched.wat @@ -4,12 +4,15 @@ (type $i32_=>_i32 (func (param 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\03\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 44) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00\00\00\00\00") + (data (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\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\01\00\00\00\18\00\00\00t\00a\00b\00l\00e\00b\00a\00s\00e\00.\00t\00s\00\00\00\00\00") (table $0 33 funcref) (elem (i32.const 32) $tablebase/foo) (global $tablebase/staticFunction i32 (i32.const 32)) (global $~lib/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)) (export "memory" (memory $0)) (start $~start) (func $tablebase/foo @@ -19,12 +22,42 @@ local.get $0 i32.load ) + (func $~start + call $start:tablebase + ) + (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:tablebase + (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 32 i32.const 32 i32.eq drop global.get $tablebase/staticFunction + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 call $~lib/function/Function<%28%29=>void>#get:index i32.const 32 i32.eq @@ -37,8 +70,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - call $start:tablebase + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/ternary.json b/tests/compiler/ternary.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/ternary.json +++ b/tests/compiler/ternary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/ternary.optimized.wat b/tests/compiler/ternary.optimized.wat index 13620adaac..3d16a78c19 100644 --- a/tests/compiler/ternary.optimized.wat +++ b/tests/compiler/ternary.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (memory $0 0) - (export "memory" (memory $0)) (export "test" (func $ternary/test)) + (export "memory" (memory $0)) (func $ternary/test (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $1 local.get $2 diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.untouched.wat index 20218f8bf0..bc86ef9c3a 100644 --- a/tests/compiler/ternary.untouched.wat +++ b/tests/compiler/ternary.untouched.wat @@ -4,8 +4,11 @@ (memory $0 0) (table $0 1 funcref) (global $ternary/a (mut i32) (i32.const 0)) - (export "memory" (memory $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)) (export "test" (func $ternary/test)) + (export "memory" (memory $0)) (start $~start) (func $start:ternary i32.const 1 diff --git a/tests/compiler/throw.json b/tests/compiler/throw.json index d8f53d9b42..e2eed82c22 100644 --- a/tests/compiler/throw.json +++ b/tests/compiler/throw.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime half" ], "asc_rtrace": true } \ No newline at end of file diff --git a/tests/compiler/throw.optimized.wat b/tests/compiler/throw.optimized.wat index 64b139bdb0..c04515c0e4 100644 --- a/tests/compiler/throw.optimized.wat +++ b/tests/compiler/throw.optimized.wat @@ -1,32 +1,1133 @@ (module (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 (func (param 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\06\00\00\001\002\003") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\002\003\004") - (data (i32.const 1100) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") - (data (i32.const 1148) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") - (data (i32.const 1196) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\003\004\005") - (data (i32.const 1228) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") - (data (i32.const 1276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\005\006") - (data (i32.const 1308) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\006\007") - (data (i32.const 1340) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") - (data (i32.const 1388) "<\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 1452) "<\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") - (export "memory" (memory $0)) + (data (i32.const 1036) "\1c") + (data (i32.const 1048) "\01\00\00\00\06\00\00\001\002\003") + (data (i32.const 1068) "\1c") + (data (i32.const 1080) "\01\00\00\00\06\00\00\002\003\004") + (data (i32.const 1100) ",") + (data (i32.const 1112) "\01\00\00\00\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f") + (data (i32.const 1148) ",") + (data (i32.const 1160) "\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s") + (data (i32.const 1196) "\1c") + (data (i32.const 1208) "\01\00\00\00\06\00\00\003\004\005") + (data (i32.const 1228) ",") + (data (i32.const 1240) "\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p") + (data (i32.const 1276) "\1c") + (data (i32.const 1288) "\01\00\00\00\06\00\00\004\005\006") + (data (i32.const 1308) "\1c") + (data (i32.const 1320) "\01\00\00\00\06\00\00\005\006\007") + (data (i32.const 1404) "<") + (data (i32.const 1416) "\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 1468) "<") + (data (i32.const 1480) "\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 1532) ",") + (data (i32.const 1544) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1612) "<") + (data (i32.const 1624) "\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 1676) ",") + (data (i32.const 1688) "\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w") + (data (i32.const 1728) "\03\00\00\00 \00\00\00\00\00\00\00 ") + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18140)) (export "doThrow" (func $throw/doThrow)) + (export "memory" (memory $0)) (start $~start) - (func $throw/doThrow - i32.const 1360 - i32.const 1168 + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1488 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 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 1424 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + 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 + local.get $2 + i32.const 1728 + i32.load + i32.gt_u + if + i32.const 1488 + i32.const 1552 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.shl + i32.const 1732 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + local.set $2 + local.get $1 + i32.load offset=8 + local.set $3 + local.get $0 + local.get $1 + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + 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 $~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 1632 + i32.const 273 + 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 1632 + i32.const 275 + 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 1632 + i32.const 288 + 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 1632 + i32.const 201 + 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 1632 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $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 1632 + i32.const 224 + 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 1632 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1632 + i32.const 240 + 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 1632 + i32.const 256 + 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) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 19716 + i32.lt_u + if + i32.const 0 + i32.const 1632 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const -16 + i32.and + i32.const 19712 + i32.load + local.tee $0 + if (result i32) + local.get $0 + i32.const 4 + i32.add + i32.const 19724 + i32.gt_u + if + i32.const 0 + i32.const 1632 + i32.const 388 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 19708 + i32.eq + if (result i32) + local.get $0 + i32.load + local.set $2 + i32.const 19708 + else + i32.const 19724 + end + else + i32.const 19724 + end + local.tee $1 + i32.sub + local.tee $0 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $2 + i32.const 2 + i32.and + local.get $0 + i32.const 8 + i32.sub + local.tee $0 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 4 + i32.add + i32.add + local.tee $0 + i32.const 2 + i32.store + i32.const 19712 + local.get $0 + i32.store + i32.const 18144 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 18140 + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + memory.size + local.tee $2 + i32.const 1 + i32.lt_s + if (result i32) + i32.const 1 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 18144 + i32.const 0 + i32.store + i32.const 19712 + 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 18144 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.lt_u + if + local.get $2 + local.get $1 + 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 $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18144 + global.set $~lib/rt/tlsf/ROOT + 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.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 1632 + i32.const 565 + 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 (local $0 i32) + (local $1 i32) + block $folding-inner0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $folding-inner0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18140 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 224 + 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 + call $~lib/rt/tlsf/__free + end + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + ) + (func $start:throw + (local $0 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 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 + 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 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 1056 + i32.store loop $while-continue|0 local.get $0 i32.const 1 @@ -35,19 +1136,125 @@ i32.const 10 i32.lt_s if + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 local.get $0 i32.const 10 i32.gt_s if + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=8 i32.const 1248 i32.const 1168 - i32.const 26 + i32.const 23 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=8 br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 1328 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1344 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1376 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1584 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|00 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|00 + end + end + end + call $~lib/rt/itcms/step + loop $while-continue|1 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + br $while-continue|1 + end + end + ) + (func $throw/doThrow + global.get $~lib/memory/__stack_pointer + i32.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 1056 + i32.store + i32.const 1696 + i32.const 1168 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + unreachable + ) + (func $~start + call $start:throw + ) + (func $~stack_check + 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 ) ) diff --git a/tests/compiler/throw.ts b/tests/compiler/throw.ts index a11206af62..a70be6173a 100644 --- a/tests/compiler/throw.ts +++ b/tests/compiler/throw.ts @@ -1,7 +1,6 @@ export function doThrow(): void { var a = "123"; throw new Error("doThrow"); - // __release(a) - DCE'd } function doThrowIf(cond: bool): void { @@ -9,10 +8,8 @@ function doThrowIf(cond: bool): void { if (cond) { let b = "234"; throw new Error("doThrowIf"); - // __release(a+b) - DCE'd } var c = "345"; - // __release(a+c) } doThrowIf(false); @@ -24,12 +21,11 @@ function doThrowIfLoop(max: i32): void { if (i > max) { // never let c = "345"; throw new Error("doThrowIfLoop"); - // __release(a+b+c) - DCE'd } let d = "456"; - // __release(b+d) } var e = "567"; - // __release(a+e) } doThrowIfLoop(10); + +__collect(); diff --git a/tests/compiler/throw.untouched.wat b/tests/compiler/throw.untouched.wat index ce3f3770e6..b8c5b3b6fe 100644 --- a/tests/compiler/throw.untouched.wat +++ b/tests/compiler/throw.untouched.wat @@ -1,61 +1,90 @@ (module (type $i32_i32_=>_none (func (param i32 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_=>_none (func (param i32 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))) (memory $0 1) - (data (i32.const 12) "\1c\00\00\00\01\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 44) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\002\003\004\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\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 124) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 172) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\003\004\005\00\00\00\00\00\00\00") - (data (i32.const 204) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00\00\00") - (data (i32.const 252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\005\006\00\00\00\00\00\00\00") - (data (i32.const 284) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\006\007\00\00\00\00\00\00\00") - (data (i32.const 316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 364) "<\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 428) "<\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 12) "\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 44) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\002\003\004\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\12\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\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\10\00\00\00t\00h\00r\00o\00w\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 172) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\003\004\005\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\1a\00\00\00d\00o\00T\00h\00r\00o\00w\00I\00f\00L\00o\00o\00p\00\00\00") + (data (i32.const 252) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\004\005\006\00\00\00\00\00\00\00") + (data (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\06\00\00\005\006\007\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 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 \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 444) "<\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 508) ",\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 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\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 652) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00d\00o\00T\00h\00r\00o\00w\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 704) "\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") (table $0 1 funcref) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 492)) - (export "memory" (memory $0)) + (global $~lib/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (global $~lib/rt/__rtti_base i32 (i32.const 704)) + (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)) (export "doThrow" (func $throw/doThrow)) + (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 $throw/doThrowIf (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 32 - local.set $1 + local.tee $1 + i32.store local.get $0 if + global.get $~lib/memory/__stack_pointer i32.const 64 - local.set $2 + local.tee $2 + i32.store offset=4 i32.const 96 i32.const 144 - i32.const 11 + i32.const 10 i32.const 5 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 192 - local.set $3 - local.get $1 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $throw/doThrowIfLoop (param $0 i32) (local $1 i32) @@ -64,8 +93,21 @@ (local $4 i32) (local $5 i32) (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + 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 32 - local.set $1 + local.tee $1 + i32.store i32.const 0 local.set $2 loop $while-continue|0 @@ -78,181 +120,486 @@ local.set $3 local.get $3 if + global.get $~lib/memory/__stack_pointer i32.const 64 - local.set $4 + local.tee $4 + i32.store offset=4 local.get $2 local.get $0 i32.gt_s if + global.get $~lib/memory/__stack_pointer i32.const 192 - local.set $5 + local.tee $5 + i32.store offset=8 i32.const 224 i32.const 144 - i32.const 26 + i32.const 23 i32.const 7 call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 272 - local.set $5 - local.get $4 - call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release + local.tee $5 + i32.store offset=8 br $while-continue|0 end end + global.get $~lib/memory/__stack_pointer i32.const 304 - local.set $6 + local.tee $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) + local.get $0 local.get $1 - call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release + i32.store offset=4 ) - (func $start:throw - i32.const 0 - call $throw/doThrowIf - i32.const 10 - call $throw/doThrowIfLoop + (func $~lib/rt/itcms/Object#set:prev (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=8 ) - (func $throw/doThrow - (local $0 i32) - i32.const 32 - local.set $0 - i32.const 336 - i32.const 144 + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/Object#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $0 + i32.load offset=4 i32.const 3 - call $~lib/builtins/abort - unreachable + i32.const -1 + i32.xor + i32.and + local.get $1 + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor ) - (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (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 $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) + local.get $0 + call $~lib/rt/itcms/Object#get:next + local.set $1 local.get $1 - i32.load + 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 400 + 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.const 1 - i32.and i32.eqz if i32.const 0 - i32.const 448 - i32.const 272 - i32.const 14 + i32.const 400 + i32.const 131 + i32.const 16 call $~lib/builtins/abort unreachable end + local.get $1 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 + 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 0 - i32.const 448 - i32.const 274 - i32.const 14 + i32.const 464 + i32.const 528 + i32.const 22 + i32.const 28 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 + 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 - drop - local.get $4 - i32.const 23 - i32.lt_u + i32.le_u if (result i32) - local.get $5 - i32.const 16 - i32.lt_u + i32.const 1 else + local.get $1 + call $~lib/rt/__typeinfo + i32.const 32 + i32.and i32.const 0 + i32.ne end - i32.eqz - if - i32.const 0 - i32.const 448 - i32.const 287 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=4 - local.set $6 + ) + (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 $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.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 400 + 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 608 + i32.const 273 + 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 608 + i32.const 275 + 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 608 + i32.const 288 + 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 @@ -337,7 +684,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -361,8 +708,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 200 + i32.const 608 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -378,8 +725,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 202 + i32.const 608 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -432,7 +779,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -473,8 +820,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 223 + i32.const 608 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -507,7 +854,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -516,7 +863,7 @@ 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 @@ -538,8 +885,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 238 + i32.const 608 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -556,8 +903,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 239 + i32.const 608 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -615,8 +962,8 @@ i32.eqz if i32.const 0 - i32.const 448 - i32.const 255 + i32.const 608 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -640,15 +987,15 @@ 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 @@ -676,7 +1023,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -704,148 +1051,677 @@ local.get $7 i32.store offset=4 ) - (func $~lib/rt/tlsf/freeBlock (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load + (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 - i32.or - i32.store - i32.const 0 drop - 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) - local.get $0 - i32.load offset=4 - local.set $1 + local.get $2 + i32.le_u + i32.eqz + if + i32.const 0 + i32.const 608 + i32.const 381 + i32.const 14 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.const 268435455 + 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 - 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 384 - i32.const 122 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 if - local.get $0 - i32.const 20 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - i32.const 1 - drop i32.const 1 drop local.get $1 - i32.const -2147483648 - i32.and - i32.eqz + local.get $4 + i32.const 4 + i32.add + i32.ge_u i32.eqz if i32.const 0 - i32.const 384 - i32.const 126 - i32.const 18 + i32.const 608 + i32.const 388 + i32.const 16 call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/finalize + 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 $2 - i32.const 0 - i32.gt_u + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u i32.eqz if i32.const 0 - i32.const 384 - i32.const 136 - i32.const 16 + i32.const 608 + i32.const 401 + i32.const 5 call $~lib/builtins/abort unreachable end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:throw - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 i32) - local.get $0 - global.get $~lib/memory/__heap_base + 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 - drop + 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.const 1 - i32.eq + 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 384 - i32.const 69 - i32.const 16 + i32.const 608 + i32.const 565 + 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 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement + local.get $1 + call $~lib/rt/tlsf/insertBlock ) - (func $~lib/arraybuffer/ArrayBuffer~visit (param $0 i32) (param $1 i32) - nop + (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/string/String~visit (param $0 i32) (param $1 i32) - nop + (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 + 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 + 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 400 + i32.const 224 + 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/__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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) + (func $start:throw + i32.const 0 + call $throw/doThrowIf + i32.const 10 + call $throw/doThrowIfLoop + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 560 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $~lib/rt/itcms/__collect + ) + (func $throw/doThrow + (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 + i32.const 672 + i32.const 144 + i32.const 3 + i32.const 3 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 464 + local.get $0 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -855,7 +1731,7 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) @@ -869,14 +1745,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $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 @@ -886,4 +1756,20 @@ end unreachable ) + (func $~start + call $start:throw + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17136 + i32.const 17184 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) ) diff --git a/tests/compiler/typealias.json b/tests/compiler/typealias.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/typealias.json +++ b/tests/compiler/typealias.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/typealias.optimized.wat b/tests/compiler/typealias.optimized.wat index e71850c543..4265f6537e 100644 --- a/tests/compiler/typealias.optimized.wat +++ b/tests/compiler/typealias.optimized.wat @@ -1,8 +1,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) - (export "memory" (memory $0)) (export "alias" (func $typealias/alias)) + (export "memory" (memory $0)) (func $typealias/alias (param $0 i32) (result i32) local.get $0 ) diff --git a/tests/compiler/typealias.untouched.wat b/tests/compiler/typealias.untouched.wat index e76fa8224c..7e067a44a1 100644 --- a/tests/compiler/typealias.untouched.wat +++ b/tests/compiler/typealias.untouched.wat @@ -2,8 +2,11 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "alias" (func $typealias/alias)) + (export "memory" (memory $0)) (func $typealias/alias (param $0 i32) (result i32) local.get $0 ) diff --git a/tests/compiler/typeof.json b/tests/compiler/typeof.json index bf222c4d2d..65091e5197 100644 --- a/tests/compiler/typeof.json +++ b/tests/compiler/typeof.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--explicitStart" ] } \ No newline at end of file diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 654f23567e..7cb848c376 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -1,29 +1,1423 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (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_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (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\0c\00\00\00n\00u\00m\00b\00e\00r") - (data (i32.const 1068) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00o\00b\00j\00e\00c\00t") - (data (i32.const 1100) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00t\00y\00p\00e\00o\00f\00.\00t\00s") - (data (i32.const 1148) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") - (data (i32.const 1196) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") - (data (i32.const 1244) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\02\00\00\001") - (data (i32.const 1276) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") - (data (i32.const 1308) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01") - (data (i32.const 1340) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") + (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 1148) ",") + (data (i32.const 1160) "\01\00\00\00\10\00\00\00f\00u\00n\00c\00t\00i\00o\00n") + (data (i32.const 1196) ",") + (data (i32.const 1208) "\01\00\00\00\0e\00\00\00b\00o\00o\00l\00e\00a\00n") + (data (i32.const 1244) "\1c") + (data (i32.const 1256) "\01\00\00\00\02\00\00\001") + (data (i32.const 1276) "\1c") + (data (i32.const 1288) "\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g") + (data (i32.const 1308) "\1c") + (data (i32.const 1320) "\03\00\00\00\08\00\00\00\01") + (data (i32.const 1340) "<") + (data (i32.const 1352) "\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 1404) "<") + (data (i32.const 1416) "\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 1532) "<") + (data (i32.const 1544) "\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) ",") + (data (i32.const 1608) "\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 1676) "<") + (data (i32.const 1688) "\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 1740) ",") + (data (i32.const 1752) "\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d") + (data (i32.const 1792) "\05\00\00\00 \00\00\00\00\00\00\00 ") + (data (i32.const 1828) " ") + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $typeof/c (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 18220)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $~start)) (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1264 + call $~lib/rt/itcms/__visit + global.get $typeof/c + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 1552 + call $~lib/rt/itcms/__visit + i32.const 1360 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 18220 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1792 + 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 $1 + i32.const 3 + i32.shl + i32.const 1796 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 273 + 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 1696 + i32.const 275 + 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 1696 + i32.const 288 + 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 1696 + i32.const 201 + 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 1696 + 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 $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 1696 + i32.const 224 + 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 1696 + i32.const 239 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $5 + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.add + i32.ne + if + i32.const 0 + i32.const 1696 + i32.const 240 + 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 1696 + i32.const 256 + 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 1696 + i32.const 381 + 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 1696 + i32.const 388 + 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 1696 + i32.const 401 + 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 18224 + i32.const 0 + i32.store + i32.const 19792 + 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 18224 + 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 18224 + 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 18224 + i32.const 19796 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 18224 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 18220 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 224 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 18220 + 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 $1 + i32.const 18220 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1696 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1696 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/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 1696 + i32.const 500 + 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 1696 + i32.const 502 + 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/__visit_members (param $0 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:typeof + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1836 + i32.lt_s + if + i32.const 18240 + i32.const 18288 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) (func $~lib/string/String.__eq (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 + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $0 local.get $1 i32.eq if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 1 return end @@ -34,13 +1428,20 @@ local.get $0 select br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store local.get $0 i32.const 20 i32.sub i32.load offset=16 i32.const 1 i32.shr_u - local.tee $2 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $2 local.get $1 i32.const 20 i32.sub @@ -49,6 +1450,12 @@ i32.shr_u i32.ne br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 block $__inlined_func$~lib/util/string/compareImpl (result i32) local.get $0 local.tee $3 @@ -61,7 +1468,6 @@ i32.eqz i32.const 0 local.get $2 - local.tee $0 i32.const 4 i32.ge_u select @@ -81,10 +1487,10 @@ i32.const 8 i32.add local.set $1 - local.get $0 + local.get $2 i32.const 4 i32.sub - local.tee $0 + local.tee $2 i32.const 4 i32.ge_u br_if $do-continue|0 @@ -92,23 +1498,23 @@ end end loop $while-continue|1 - local.get $0 - local.tee $2 + local.get $2 + local.tee $0 i32.const 1 i32.sub - local.set $0 - local.get $2 + local.set $2 + local.get $0 if local.get $3 i32.load16_u - local.tee $2 + local.tee $4 local.get $1 i32.load16_u - local.tee $4 + local.tee $0 i32.ne if - local.get $2 local.get $4 + local.get $0 i32.sub br $__inlined_func$~lib/util/string/compareImpl end @@ -125,14 +1531,36 @@ end i32.const 0 end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.eqz return end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 ) (func $start:typeof (local $0 i32) (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -145,6 +1573,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -157,6 +1591,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -169,6 +1609,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 i32.const 1168 i32.const 1168 call $~lib/string/String.__eq @@ -181,6 +1627,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 i32.const 1168 i32.const 1168 call $~lib/string/String.__eq @@ -193,6 +1645,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=4 i32.const 1216 i32.const 1216 call $~lib/string/String.__eq @@ -205,6 +1663,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -217,6 +1681,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -229,6 +1699,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -241,6 +1717,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -253,6 +1735,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 i32.const 1296 i32.const 1296 call $~lib/string/String.__eq @@ -265,6 +1753,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=4 i32.const 1216 i32.const 1216 call $~lib/string/String.__eq @@ -277,6 +1771,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -289,6 +1789,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -301,6 +1807,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -313,6 +1825,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -325,6 +1843,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1296 + i32.store offset=4 i32.const 1296 i32.const 1296 call $~lib/string/String.__eq @@ -337,6 +1861,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 i32.const 1168 i32.const 1168 call $~lib/string/String.__eq @@ -349,59 +1879,111 @@ call $~lib/builtins/abort unreachable end - memory.size - local.tee $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 1420 - i32.lt_u + i32.const 1472 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1504 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1648 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $1 - i32.const 66955 - local.get $0 - i32.sub - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $0 - local.get $0 - local.get $1 - i32.lt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $0 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|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-continue|0 end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end end - i32.const 1388 - i32.const 28 - i32.store - i32.const 1392 - i32.const 0 - i32.store - i32.const 1396 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.store offset=12 + local.get $0 i32.const 0 - i32.store - i32.const 1400 + i32.store offset=16 + local.get $0 + 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 $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.store - i32.const 1404 - i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + global.set $typeof/c + global.get $~lib/memory/__stack_pointer + i32.const 1088 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 i32.const 1088 i32.const 1088 call $~lib/string/String.__eq @@ -414,6 +1996,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 i32.const 1168 i32.const 1168 call $~lib/string/String.__eq @@ -426,8 +2014,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1360 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -438,8 +2032,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1360 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -450,8 +2050,14 @@ call $~lib/builtins/abort unreachable end - i32.const 1360 - i32.const 1360 + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1760 + i32.store offset=4 + i32.const 1760 + i32.const 1760 call $~lib/string/String.__eq i32.eqz if @@ -462,14 +2068,9 @@ call $~lib/builtins/abort unreachable end - ) - (func $~start - global.get $~started - if - return - end - i32.const 1 - global.set $~started - call $start:typeof + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 889004ce47..314fd409b3 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -1,21 +1,34 @@ (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 $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (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))) (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\0c\00\00\00n\00u\00m\00b\00e\00r\00") - (data (i32.const 44) "\1c\00\00\00\01\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\01\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 124) ",\00\00\00\01\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\01\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\01\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 252) "\1c\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\0c\00\00\00s\00t\00r\00i\00n\00g\00") - (data (i32.const 284) "\1c\00\00\00\01\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 316) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00\00\00\00\00\00\00\00\00\00\00") + (data (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 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") + (data (i32.const 252) "\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\00") + (data (i32.const 284) "\1c\00\00\00\00\00\00\00\00\00\00\00\03\00\00\00\08\00\00\00\01\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\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 380) "<\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 448) "\00\00\00\00\00\00\00\00\00\00\00\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$\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\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 624) "\00\00\00\00\00\00\00\00\00\00\00\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\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 716) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\12\00\00\00u\00n\00d\00e\00f\00i\00n\00e\00d\00\00\00\00\00\00\00\00\00\00\00") + (data (i32.const 768) "\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") (table $0 2 funcref) (elem (i32.const 1) $start:typeof~anonymous|0) (global $typeof/SomeNamespace.a i32 (i32.const 1)) @@ -27,19 +40,25 @@ (global $typeof/F (mut f64) (f64.const 1)) (global $typeof/s (mut i32) (i32.const 240)) (global $typeof/fn (mut i32) (i32.const 304)) - (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) - (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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 $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)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17196)) + (global $~lib/memory/__heap_base i32 (i32.const 17196)) (global $~started (mut i32) (i32.const 0)) - (global $~lib/memory/__heap_base i32 (i32.const 364)) - (export "_start" (func $~start)) (export "memory" (memory $0)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) - local.get $0 - ) - (func $~lib/rt/stub/__release (param $0 i32) - nop - ) + (export "_start" (func $~start)) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 i32.const 20 @@ -54,13 +73,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - local.get $0 - call $~lib/rt/stub/__retain - local.set $0 - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $0 local.get $1 i32.const 1 @@ -147,12 +159,6 @@ local.get $8 local.get $9 i32.sub - local.set $10 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $10 return end local.get $5 @@ -167,237 +173,2502 @@ end end i32.const 0 - local.set $7 - local.get $0 - call $~lib/rt/stub/__release - local.get $2 - call $~lib/rt/stub/__release - local.get $7 ) - (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) + (func $start:typeof~anonymous|0 + nop + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $0 i32) (param $1 i32) local.get $0 - call $~lib/rt/stub/__retain - local.set $0 local.get $1 - call $~lib/rt/stub/__retain - local.set $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.eq - if - i32.const 1 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) 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 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end local.get $0 - call $~lib/string/String#get:length - local.set $3 - local.get $3 - local.get $1 - call $~lib/string/String#get:length - i32.ne - if - i32.const 0 - local.set $2 - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - return - end + call $~lib/rt/itcms/Object#set:nextWithColor local.get $0 - i32.const 0 - local.get $1 - i32.const 0 - local.get $3 - call $~lib/util/string/compareImpl - i32.eqz - local.set $2 local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - local.get $2 - ) - (func $start:typeof~anonymous|0 - nop + call $~lib/rt/itcms/Object#set:prev + local.get $0 ) - (func $~lib/rt/stub/computeSize (param $0 i32) (result i32) + (func $~lib/rt/itcms/Object#get:next (param $0 i32) (result i32) local.get $0 - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 + i32.load offset=4 + i32.const 3 i32.const -1 i32.xor i32.and - i32.const 4 - i32.sub ) - (func $~lib/rt/stub/maybeGrowMemory (param $0 i32) + (func $~lib/rt/itcms/visitRoots (param $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - memory.size + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next local.set $1 - local.get $1 - i32.const 16 - i32.shl - i32.const 15 - i32.add - i32.const 15 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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.set $2 + 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 $2 - i32.gt_u + 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 - 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.load offset=8 i32.const 0 - i32.lt_s + 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 - local.get $3 - memory.grow i32.const 0 - i32.lt_s - if - unreachable - end + i32.const 400 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable end + return end local.get $0 - global.set $~lib/rt/stub/offset + i32.load offset=8 + local.set $2 + i32.const 1 + drop + local.get $2 + i32.eqz + if + i32.const 0 + i32.const 400 + 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/stub/__alloc (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (param $0 i32) (result i32) (local $1 i32) - (local $2 i32) - (local $3 i32) + global.get $~lib/rt/__rtti_base + local.set $1 local.get $0 - i32.const 1073741820 + 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 - global.get $~lib/rt/stub/offset - local.set $1 - global.get $~lib/rt/stub/offset + local.get $1 i32.const 4 i32.add - local.set $2 local.get $0 - call $~lib/rt/stub/computeSize + 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 - i32.add - call $~lib/rt/stub/maybeGrowMemory - local.get $1 + call $~lib/rt/itcms/Object#set:prev local.get $3 - i32.store - local.get $2 + 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 400 + 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/stub/__new (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/itcms/__visit (param $0 i32) (param $1 i32) (local $2 i32) - (local $3 i32) local.get $0 - i32.const 1073741804 - i32.gt_u + i32.eqz if - unreachable + 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 672 + i32.const 273 + 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 672 + i32.const 275 + 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 672 + i32.const 288 + 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 672 + 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 672 + 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 $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 672 + i32.const 224 + 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 672 + i32.const 239 + 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 672 + i32.const 240 + 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 672 + i32.const 256 + 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 672 + i32.const 381 + 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 672 + i32.const 388 + 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 672 + i32.const 401 + 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 672 + i32.const 565 + 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 + 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 + 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 400 + i32.const 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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.ge_u + if + i32.const 336 + i32.const 672 + i32.const 462 + 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 672 + i32.const 334 + 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 672 + i32.const 347 + 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 672 + i32.const 361 + 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 672 + i32.const 500 + 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 672 + i32.const 502 + 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 + 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/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 336 + i32.const 400 + i32.const 256 + 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/__visit_globals (param $0 i32) + (local $1 i32) + global.get $typeof/s + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + global.get $typeof/c + local.tee $1 + if + local.get $1 + local.get $0 + call $~lib/rt/itcms/__visit + end + i32.const 528 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 336 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/itcms/__visit + end + ) + (func $~lib/function/Function<%28%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<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $typeof/SomeClass + block $~lib/function/Function<%28%29=>void> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>void> $typeof/SomeClass $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/function/Function<%28%29=>void>~visit + return + end + return + end + unreachable + ) + (func $~start + global.get $~started + if + return + end + i32.const 1 + global.set $~started + call $start:typeof + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 17216 + i32.const 17264 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $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 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $2 + local.get $2 + local.get $1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return end - 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 + global.get $~lib/memory/__stack_pointer local.get $3 - i32.const 0 - i32.store offset=4 + i32.store local.get $3 i32.const 0 - i32.store offset=8 - local.get $3 local.get $1 - i32.store offset=12 + local.set $3 + global.get $~lib/memory/__stack_pointer local.get $3 - local.get $0 - i32.store offset=16 + i32.store offset=4 + local.get $3 + i32.const 0 local.get $2 - i32.const 16 - i32.add - ) - (func $typeof/SomeClass#constructor (param $0 i32) (result i32) - local.get $0 + call $~lib/util/string/compareImpl i32.eqz - if - i32.const 0 - i32.const 4 - call $~lib/rt/stub/__new - call $~lib/rt/stub/__retain - local.set $0 - end - local.get $0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 ) (func $start:typeof + (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 1 drop i32.const 32 @@ -405,7 +2676,17 @@ i32.eq drop i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 @@ -417,7 +2698,17 @@ unreachable end i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 @@ -429,7 +2720,17 @@ unreachable end i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 @@ -441,7 +2742,17 @@ unreachable end i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 144 + 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 @@ -453,7 +2764,17 @@ unreachable end i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 144 + 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 @@ -467,7 +2788,17 @@ i32.const 1 drop i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 192 + 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 @@ -479,7 +2810,17 @@ unreachable end i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 @@ -493,7 +2834,17 @@ 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 + 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 @@ -507,7 +2858,17 @@ f64.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 + 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 @@ -521,7 +2882,17 @@ i64.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 + 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 @@ -535,7 +2906,17 @@ i32.const 240 drop i32.const 272 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 272 + 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 @@ -549,7 +2930,17 @@ global.get $typeof/b drop i32.const 192 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 192 + 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 @@ -563,7 +2954,17 @@ global.get $typeof/i drop i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 32 + 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 @@ -577,7 +2978,17 @@ global.get $typeof/f drop i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 32 + 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 @@ -591,7 +3002,17 @@ global.get $typeof/I drop i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 32 + 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 @@ -605,7 +3026,17 @@ global.get $typeof/F drop i32.const 32 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 32 + 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 @@ -619,7 +3050,17 @@ global.get $typeof/s drop i32.const 272 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 272 + 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 @@ -633,7 +3074,17 @@ global.get $typeof/fn drop i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 144 + 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 @@ -644,27 +3095,32 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__heap_base - i32.const 4 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - i32.const 4 - i32.sub - global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset - global.set $~lib/rt/stub/offset + i32.const 448 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 480 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 624 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 call $typeof/SomeClass#constructor global.set $typeof/c global.get $typeof/c drop i32.const 64 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 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 @@ -676,7 +3132,17 @@ unreachable end i32.const 144 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 144 + 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 @@ -687,8 +3153,18 @@ call $~lib/builtins/abort unreachable end - i32.const 336 - i32.const 336 + i32.const 736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + 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 @@ -701,8 +3177,18 @@ end global.get $typeof/c drop - i32.const 336 - i32.const 336 + i32.const 736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + 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 @@ -715,8 +3201,18 @@ end global.get $typeof/c drop - i32.const 336 - i32.const 336 + i32.const 736 + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 736 + 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 @@ -727,14 +3223,37 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~start - global.get $~started + (func $typeof/SomeClass#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 - return + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store end - i32.const 1 - global.set $~started - call $start:typeof + 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/unary.json b/tests/compiler/unary.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/unary.json +++ b/tests/compiler/unary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index 30b1e390ab..995bfcb5a5 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -6,6 +6,9 @@ (global $unary/I (mut i64) (i64.const 0)) (global $unary/f (mut f32) (f32.const 0)) (global $unary/F (mut f64) (f64.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)) (export "memory" (memory $0)) (start $~start) (func $start:unary diff --git a/tests/compiler/unify-local-flags.json b/tests/compiler/unify-local-flags.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/unify-local-flags.json +++ b/tests/compiler/unify-local-flags.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/unify-local-flags.optimized.wat b/tests/compiler/unify-local-flags.optimized.wat index 3f787562fc..25d3f19a39 100644 --- a/tests/compiler/unify-local-flags.optimized.wat +++ b/tests/compiler/unify-local-flags.optimized.wat @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (memory $0 0) - (export "memory" (memory $0)) (export "testFor" (func $unify-local-flags/testFor)) (export "testWhile" (func $unify-local-flags/testFor)) (export "testDo" (func $unify-local-flags/testDo)) + (export "memory" (memory $0)) (func $unify-local-flags/testFor (local $0 i32) loop $for-loop|2 diff --git a/tests/compiler/unify-local-flags.untouched.wat b/tests/compiler/unify-local-flags.untouched.wat index 73d50a561e..cb8f37d7c8 100644 --- a/tests/compiler/unify-local-flags.untouched.wat +++ b/tests/compiler/unify-local-flags.untouched.wat @@ -2,10 +2,13 @@ (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) - (export "memory" (memory $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)) (export "testFor" (func $unify-local-flags/testFor)) (export "testWhile" (func $unify-local-flags/testWhile)) (export "testDo" (func $unify-local-flags/testDo)) + (export "memory" (memory $0)) (func $unify-local-flags/testFor (local $0 i32) (local $1 i32) diff --git a/tests/compiler/unsafe.json b/tests/compiler/unsafe.json index 810a0486df..5c3770cac2 100644 --- a/tests/compiler/unsafe.json +++ b/tests/compiler/unsafe.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none", "--noUnsafe" ], "stderr": [ diff --git a/tests/compiler/variable-access-in-initializer.json b/tests/compiler/variable-access-in-initializer.json index 500017b069..ffa5efab4d 100644 --- a/tests/compiler/variable-access-in-initializer.json +++ b/tests/compiler/variable-access-in-initializer.json @@ -1,6 +1,5 @@ { "asc_flags": [ - "--runtime none" ], "stderr": [ "TS2448: Variable 'variable-access-in-initializer/a' used before its declaration.", diff --git a/tests/compiler/void.json b/tests/compiler/void.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/void.json +++ b/tests/compiler/void.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/void.untouched.wat b/tests/compiler/void.untouched.wat index e4ad0c197a..0051e29363 100644 --- a/tests/compiler/void.untouched.wat +++ b/tests/compiler/void.untouched.wat @@ -5,6 +5,9 @@ (table $0 1 funcref) (global $void/u8Val1 (mut i32) (i32.const 1)) (global $void/u8Val2 (mut i32) (i32.const 255)) + (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)) (export "memory" (memory $0)) (start $~start) (func $void/anInt (result i32) diff --git a/tests/compiler/wasi/abort.json b/tests/compiler/wasi/abort.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/wasi/abort.json +++ b/tests/compiler/wasi/abort.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/wasi/abort.optimized.wat b/tests/compiler/wasi/abort.optimized.wat index 44617eb88a..6f5a21494b 100644 --- a/tests/compiler/wasi/abort.optimized.wat +++ b/tests/compiler/wasi/abort.optimized.wat @@ -1,17 +1,21 @@ (module (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 (func (param 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))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1084) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") - (export "_start" (func $~start)) - (export "memory" (memory $0)) + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") + (data (i32.const 1084) ",") + (data (i32.const 1096) "\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s") + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17516)) (export "test" (func $wasi/abort/test)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -226,114 +230,156 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $wasi/abort/test + i32.const 1056 + i32.const 1104 + i32.const 4 i32.const 3 - local.set $2 + call $~lib/wasi/index/abort + unreachable + ) + (func $~start + nop + ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer i32.const 4 - local.set $1 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1132 + i32.lt_s + if + i32.const 17536 + i32.const 17584 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 i32.const 12 i32.store i32.const 12 i64.const 9071471065260641 i64.store - i32.const 1056 - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - i32.const 19 - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 19 - i32.add - local.tee $0 + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + else + i32.const 19 + end + local.tee $4 i32.const 544106784 i32.store - local.get $0 + local.get $4 i32.const 4 i32.add - local.tee $0 - i32.const 1104 - i32.const 1100 - i32.load - i32.const 1 - i32.shr_u - local.get $0 - call $~lib/string/String.UTF8.encodeUnsafe - i32.add - local.tee $0 + local.set $4 + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $4 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $4 + i32.add + local.set $4 + end + local.get $4 i32.const 40 i32.store8 - i32.const 4 + local.get $2 call $~lib/util/number/decimalCount32 - local.tee $3 - local.get $0 + local.tee $0 + local.get $4 i32.const 1 i32.add i32.add - local.set $0 + local.set $4 loop $do-continue|0 - local.get $0 + local.get $4 i32.const 1 i32.sub - local.tee $0 - local.get $1 + local.tee $4 + local.get $2 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $1 + local.get $2 i32.const 10 i32.div_u - local.tee $1 + local.tee $2 br_if $do-continue|0 end local.get $0 - local.get $3 + local.get $4 i32.add local.tee $0 i32.const 58 i32.store8 - i32.const 3 + local.get $3 call $~lib/util/number/decimalCount32 local.tee $1 local.get $0 i32.const 1 i32.add i32.add - local.set $0 + local.set $4 loop $do-continue|1 - local.get $0 + local.get $4 i32.const 1 i32.sub - local.tee $0 - local.get $2 + local.tee $4 + local.get $3 i32.const 10 i32.rem_u i32.const 48 i32.add i32.store8 - local.get $2 + local.get $3 i32.const 10 i32.div_u - local.tee $2 + local.tee $3 br_if $do-continue|1 end - local.get $0 local.get $1 + local.get $4 i32.add local.tee $0 i32.const 2601 i32.store16 i32.const 4 local.get $0 - i32.const -10 - i32.add + i32.const 10 + i32.sub i32.store i32.const 2 i32.const 0 @@ -343,12 +389,9 @@ drop i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) - (func $wasi/abort/test - call $~lib/wasi/index/abort - unreachable - ) - (func $~start - nop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/wasi/abort.untouched.wat b/tests/compiler/wasi/abort.untouched.wat index 5360f15d82..615f56d3ba 100644 --- a/tests/compiler/wasi/abort.untouched.wat +++ b/tests/compiler/wasi/abort.untouched.wat @@ -1,20 +1,26 @@ (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 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00\00\00\00\00\00\00") - (data (i32.const 60) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\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\1a\00\00\00w\00a\00s\00i\00/\00a\00b\00o\00r\00t\00.\00t\00s\00\00\00") (table $0 1 funcref) - (export "_start" (func $~start)) - (export "memory" (memory $0)) + (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)) (export "test" (func $wasi/abort/test)) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (export "memory" (memory $0)) + (export "_start" (func $~start)) + (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 @@ -295,24 +301,57 @@ end unreachable ) - (func $~lib/rt/stub/__release (param $0 i32) + (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $wasi/abort/test + i32.const 0 + i32.eqz + if + i32.const 32 + i32.const 80 + i32.const 4 + i32.const 3 + call $~lib/wasi/index/abort + unreachable + end + ) + (func $~start nop ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16512 + i32.const 16560 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) (func $~lib/wasi/index/abort (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 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + (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.const 12 i32.store + i32.const 0 + i32.const 12 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf i32.const 12 local.set $4 local.get $4 @@ -329,6 +368,11 @@ local.get $4 local.get $0 local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/string/String#get:length local.get $4 i32.const 0 @@ -350,6 +394,11 @@ local.get $4 local.get $1 local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/string/String#get:length local.get $4 i32.const 0 @@ -450,7 +499,7 @@ local.get $4 i32.const 12 i32.sub - i32.store offset=4 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len i32.const 2 i32.const 0 i32.const 1 @@ -459,24 +508,9 @@ drop i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $wasi/abort/test - i32.const 0 - i32.eqz - if - i32.const 32 - i32.const 80 - i32.const 4 - i32.const 3 - call $~lib/wasi/index/abort - unreachable - end - ) - (func $~start - nop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/wasi/seed.json b/tests/compiler/wasi/seed.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/wasi/seed.json +++ b/tests/compiler/wasi/seed.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/wasi/seed.optimized.wat b/tests/compiler/wasi/seed.optimized.wat index 0f6908a612..f338b9de2c 100644 --- a/tests/compiler/wasi/seed.optimized.wat +++ b/tests/compiler/wasi/seed.optimized.wat @@ -1,24 +1,28 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) (type $none_=>_f64 (func (result f64))) + (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 (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 $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") + (data (i32.const 1036) ",") + (data (i32.const 1048) "\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s") (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 17468)) (export "test" (func $wasi/seed/test)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~lib/math/murmurHash3 (param $0 i64) (result i64) local.get $0 local.get $0 @@ -72,50 +76,47 @@ i32.shr_u i32.xor ) - (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) + (func $~lib/string/String.UTF8.encodeUnsafe (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) - i32.const 1056 - local.set $2 + (local $5 i32) local.get $0 + local.get $1 i32.const 1 i32.shl - i32.const 1056 i32.add - local.set $3 - i32.const 23 - local.set $0 + local.set $4 + local.get $2 + local.set $1 loop $while-continue|0 - local.get $2 - local.get $3 + local.get $0 + local.get $4 i32.lt_u if - local.get $2 + local.get $0 i32.load16_u - local.tee $1 + local.tee $3 i32.const 128 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.store8 - local.get $0 + local.get $1 i32.const 1 i32.add else - local.get $1 + local.get $3 i32.const 2048 i32.lt_u if (result i32) - local.get $0 local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 192 i32.or - local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 @@ -124,51 +125,51 @@ i32.shl i32.or i32.store16 - local.get $0 + local.get $1 i32.const 2 i32.add else - local.get $3 - local.get $2 + local.get $4 + local.get $0 i32.const 2 i32.add i32.gt_u i32.const 0 - local.get $1 + local.get $3 i32.const 64512 i32.and i32.const 55296 i32.eq select if - local.get $2 + local.get $0 i32.load16_u offset=2 - local.tee $4 + local.tee $5 i32.const 64512 i32.and i32.const 56320 i32.eq if - local.get $0 local.get $1 + local.get $3 i32.const 1023 i32.and i32.const 10 i32.shl i32.const 65536 i32.add - local.get $4 + local.get $5 i32.const 1023 i32.and i32.or - local.tee $1 + local.tee $3 i32.const 63 i32.and i32.const 128 i32.or i32.const 24 i32.shl - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -178,7 +179,7 @@ i32.const 16 i32.shl i32.or - local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 63 @@ -188,31 +189,31 @@ i32.const 8 i32.shl i32.or - local.get $1 + local.get $3 i32.const 18 i32.shr_u i32.const 240 i32.or i32.or i32.store - local.get $0 + local.get $1 i32.const 4 i32.add - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.const 4 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end - local.get $0 local.get $1 + local.get $3 i32.const 12 i32.shr_u i32.const 224 i32.or - local.get $1 + local.get $3 i32.const 6 i32.shr_u i32.const 63 @@ -223,28 +224,28 @@ i32.shl i32.or i32.store16 - local.get $0 local.get $1 + local.get $3 i32.const 63 i32.and i32.const 128 i32.or i32.store8 offset=2 - local.get $0 + local.get $1 i32.const 3 i32.add end end - local.set $0 - local.get $2 + local.set $1 + local.get $0 i32.const 2 i32.add - local.set $2 + local.set $0 br $while-continue|0 end end - local.get $0 - i32.const 23 + local.get $1 + local.get $2 i32.sub ) (func $~lib/util/number/decimalCount32 (param $0 i32) (result i32) @@ -289,110 +290,6 @@ i32.lt_u select ) - (func $~lib/wasi/index/abort - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - i32.const 5 - local.set $2 - i32.const 1399 - local.set $1 - i32.const 0 - i32.const 12 - i32.store - i32.const 12 - i64.const 9071471065260641 - i64.store - i32.const 19 - i32.const 544106784 - i32.store - i32.const 1052 - i32.load - i32.const 1 - i32.shr_u - call $~lib/string/String.UTF8.encodeUnsafe - i32.const 23 - i32.add - local.tee $0 - i32.const 40 - i32.store8 - i32.const 1399 - call $~lib/util/number/decimalCount32 - local.tee $3 - local.get $0 - i32.const 1 - i32.add - i32.add - local.set $0 - loop $do-continue|0 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.get $1 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.get $1 - i32.const 10 - i32.div_u - local.tee $1 - br_if $do-continue|0 - end - local.get $0 - local.get $3 - i32.add - local.tee $0 - i32.const 58 - i32.store8 - i32.const 5 - call $~lib/util/number/decimalCount32 - local.tee $1 - local.get $0 - i32.const 1 - i32.add - i32.add - local.set $0 - loop $do-continue|1 - local.get $0 - i32.const 1 - i32.sub - local.tee $0 - local.get $2 - i32.const 10 - i32.rem_u - i32.const 48 - i32.add - i32.store8 - local.get $2 - i32.const 10 - i32.div_u - local.tee $2 - br_if $do-continue|1 - end - local.get $0 - local.get $1 - i32.add - local.tee $0 - i32.const 2601 - i32.store16 - i32.const 4 - local.get $0 - i32.const -10 - i32.add - i32.store - i32.const 2 - i32.const 0 - i32.const 1 - i32.const 8 - call $~lib/bindings/wasi_snapshot_preview1/fd_write - drop - i32.const 255 - call $~lib/bindings/wasi_snapshot_preview1/proc_exit - ) (func $~lib/math/NativeMath.random (result f64) (local $0 i64) (local $1 i64) @@ -454,6 +351,10 @@ select i32.eqz if + i32.const 0 + i32.const 1056 + i32.const 1399 + i32.const 5 call $~lib/wasi/index/abort unreachable end @@ -495,4 +396,157 @@ (func $~start nop ) + (func $~lib/wasi/index/abort (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1084 + i32.lt_s + if + i32.const 17488 + i32.const 17536 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + i32.const 12 + i32.store + i32.const 12 + i64.const 9071471065260641 + i64.store + local.get $0 + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.const 19 + call $~lib/string/String.UTF8.encodeUnsafe + i32.const 19 + i32.add + else + i32.const 19 + end + local.tee $4 + i32.const 544106784 + i32.store + local.get $4 + i32.const 4 + i32.add + local.set $4 + local.get $1 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.get $4 + call $~lib/string/String.UTF8.encodeUnsafe + local.get $4 + i32.add + local.set $4 + end + local.get $4 + i32.const 40 + i32.store8 + local.get $2 + call $~lib/util/number/decimalCount32 + local.tee $0 + local.get $4 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|0 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $2 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $2 + i32.const 10 + i32.div_u + local.tee $2 + br_if $do-continue|0 + end + local.get $0 + local.get $4 + i32.add + local.tee $0 + i32.const 58 + i32.store8 + local.get $3 + call $~lib/util/number/decimalCount32 + local.tee $1 + local.get $0 + i32.const 1 + i32.add + i32.add + local.set $4 + loop $do-continue|1 + local.get $4 + i32.const 1 + i32.sub + local.tee $4 + local.get $3 + i32.const 10 + i32.rem_u + i32.const 48 + i32.add + i32.store8 + local.get $3 + i32.const 10 + i32.div_u + local.tee $3 + br_if $do-continue|1 + end + local.get $1 + local.get $4 + i32.add + local.tee $0 + i32.const 2601 + i32.store16 + i32.const 4 + local.get $0 + i32.const 10 + i32.sub + i32.store + i32.const 2 + i32.const 0 + i32.const 1 + i32.const 8 + call $~lib/bindings/wasi_snapshot_preview1/fd_write + drop + i32.const 255 + call $~lib/bindings/wasi_snapshot_preview1/proc_exit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/wasi/seed.untouched.wat b/tests/compiler/wasi/seed.untouched.wat index e85bfa2dd2..7336d440af 100644 --- a/tests/compiler/wasi/seed.untouched.wat +++ b/tests/compiler/wasi/seed.untouched.wat @@ -1,27 +1,31 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_f64 (func (result f64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i64_=>_none (func (param i64))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i64_=>_i64 (func (param i64) (result i64))) (import "wasi_snapshot_preview1" "random_get" (func $~lib/bindings/wasi_snapshot_preview1/random_get (param i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") + (data (i32.const 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\18\00\00\00~\00l\00i\00b\00/\00m\00a\00t\00h\00.\00t\00s\00\00\00\00\00") (table $0 1 funcref) (global $~lib/math/random_seeded (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) (global $~lib/math/random_state1_32 (mut i32) (i32.const 0)) - (export "_start" (func $~start)) - (export "memory" (memory $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)) (export "test" (func $wasi/seed/test)) + (export "memory" (memory $0)) + (export "_start" (func $~start)) (func $~lib/wasi/index/seed (result f64) (local $0 i64) (local $1 i64) @@ -115,8 +119,10 @@ i32.shr_u i32.xor ) - (func $~lib/rt/stub/__retain (param $0 i32) (result i32) + (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf (param $0 i32) (param $1 i32) local.get $0 + local.get $1 + i32.store ) (func $~lib/string/String#get:length (param $0 i32) (result i32) local.get $0 @@ -397,24 +403,152 @@ end unreachable ) - (func $~lib/rt/stub/__release (param $0 i32) + (func $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + i32.store offset=4 + ) + (func $~lib/math/NativeMath.seedRandom (param $0 i64) + i32.const 1 + global.set $~lib/math/random_seeded + 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 + global.get $~lib/math/random_state0_64 + i64.const 0 + i64.ne + if (result i32) + global.get $~lib/math/random_state1_64 + i64.const 0 + i64.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state0_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + if (result i32) + global.get $~lib/math/random_state1_32 + i32.const 0 + i32.ne + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 1399 + i32.const 5 + call $~lib/wasi/index/abort + unreachable + end + ) + (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/wasi/index/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 $wasi/seed/test (result f64) + call $~lib/math/NativeMath.random + ) + (func $~start nop ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 16464 + i32.const 16512 + i32.const 1 + i32.const 1 + call $~lib/wasi/index/abort + unreachable + end + ) (func $~lib/wasi/index/abort (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 - call $~lib/rt/stub/__retain - local.set $0 - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 + (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.const 12 i32.store + i32.const 0 + i32.const 12 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf i32.const 12 local.set $4 local.get $4 @@ -431,6 +565,11 @@ local.get $4 local.get $0 local.get $0 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/string/String#get:length local.get $4 i32.const 0 @@ -452,6 +591,11 @@ local.get $4 local.get $1 local.get $1 + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store + local.get $9 call $~lib/string/String#get:length local.get $4 i32.const 0 @@ -552,7 +696,7 @@ local.get $4 i32.const 12 i32.sub - i32.store offset=4 + call $~lib/bindings/wasi_snapshot_preview1/iovec#set:buf_len i32.const 2 i32.const 0 i32.const 1 @@ -561,119 +705,9 @@ drop i32.const 255 call $~lib/bindings/wasi_snapshot_preview1/proc_exit - local.get $0 - call $~lib/rt/stub/__release - local.get $1 - call $~lib/rt/stub/__release - ) - (func $~lib/math/NativeMath.seedRandom (param $0 i64) - i32.const 1 - global.set $~lib/math/random_seeded - 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 - global.get $~lib/math/random_state0_64 - i64.const 0 - i64.ne - if (result i32) - global.get $~lib/math/random_state1_64 - i64.const 0 - i64.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state0_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - if (result i32) - global.get $~lib/math/random_state1_32 - i32.const 0 - i32.ne - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 32 - i32.const 1399 - i32.const 5 - call $~lib/wasi/index/abort - unreachable - end - ) - (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/wasi/index/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 $wasi/seed/test (result f64) - call $~lib/math/NativeMath.random - ) - (func $~start - nop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/wasi/snapshot_preview1.json b/tests/compiler/wasi/snapshot_preview1.json index b1da366ff4..73d40f91f2 100644 --- a/tests/compiler/wasi/snapshot_preview1.json +++ b/tests/compiler/wasi/snapshot_preview1.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } \ No newline at end of file diff --git a/tests/compiler/wasi/snapshot_preview1.untouched.wat b/tests/compiler/wasi/snapshot_preview1.untouched.wat index 350359727e..ac958ac9d6 100644 --- a/tests/compiler/wasi/snapshot_preview1.untouched.wat +++ b/tests/compiler/wasi/snapshot_preview1.untouched.wat @@ -7,6 +7,9 @@ (global $~lib/shared/target/Target.WASM64 i32 (i32.const 2)) (global $~lib/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)) + (global $~lib/memory/__heap_base i32 (i32.const 16392)) (export "memory" (memory $0)) (start $~start) (func $start:wasi/snapshot_preview1 diff --git a/tests/compiler/wasi/trace.json b/tests/compiler/wasi/trace.json index 453cb07770..1bdd02b1be 100644 --- a/tests/compiler/wasi/trace.json +++ b/tests/compiler/wasi/trace.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/compiler/wasi/trace.optimized.wat b/tests/compiler/wasi/trace.optimized.wat index 001b5f9c88..b3455328b9 100644 --- a/tests/compiler/wasi/trace.optimized.wat +++ b/tests/compiler/wasi/trace.optimized.wat @@ -1,9 +1,12 @@ (module (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 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f64_f64_f64_f64_f64_=>_none (func (param i32 f64 f64 f64 f64 f64))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -11,21 +14,26 @@ (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e") - (data (i32.const 1088) "\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\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_=>_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 (func (param 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_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i32_f64_f64_f64_f64_f64_=>_none (func (param i32 i32 f64 f64 f64 f64 f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_i32_i64_i32_i64_i32_=>_i32 (func (param i32 i64 i32 i64 i32 i64 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $~lib/bindings/wasi_snapshot_preview1/fd_write (param i32 i32 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "proc_exit" (func $~lib/bindings/wasi_snapshot_preview1/proc_exit (param i32))) (memory $0 1) - (data (i32.const 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\16\00\00\00t\00h\00e\00 \00m\00e\00s\00s\00a\00g\00e\00\00\00\00\00\00\00") - (data (i32.const 64) "\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\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)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (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 $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))) (memory $0 1) - (data (i32.const 1036) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") - (data (i32.const 1084) "<\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 1148) "<\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 1212) "<\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 1036) ",") + (data (i32.const 1048) "\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\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) " ") (global $while/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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)) (export "memory" (memory $0)) (start $~start) (func $while/testNested @@ -104,6 +124,214 @@ i32.const 1 global.set $while/ran ) + (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.store offset=8 + local.get $0 + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + i32.const 1296 + call $~lib/rt/itcms/__visit + i32.const 1104 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + global.get $~lib/rt/itcms/pinSpace + i32.ne + if + 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#set:color (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + i32.or + i32.store offset=4 + ) + (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 + i32.store offset=4 + ) + (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 + i32.store offset=4 + local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $0 + call $~lib/rt/itcms/Object#set:next + local.get $1 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 147 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + i32.const 0 + local.get $0 + i32.const 17908 + i32.lt_u + local.get $0 + i32.load offset=8 + select + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 127 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1168 + i32.const 131 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + call $~lib/rt/itcms/Object#set:next + end + local.get $0 + global.get $~lib/rt/itcms/toSpace + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 1 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 1488 + i32.load + i32.gt_u + if + i32.const 1296 + i32.const 1360 + i32.const 22 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 3 + i32.shl + i32.const 1492 + i32.add + i32.load + i32.const 32 + i32.and + end + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) (func $~lib/rt/tlsf/removeBlock (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -117,8 +345,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 272 + i32.const 1440 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -137,8 +365,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 274 + i32.const 1440 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -180,8 +408,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 287 + i32.const 1440 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -272,8 +500,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 200 + i32.const 1440 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -286,8 +514,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 202 + i32.const 1440 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -359,8 +587,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 223 + i32.const 1440 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -414,23 +642,23 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 238 + i32.const 1440 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable end + local.get $5 local.get $3 local.get $1 i32.const 4 i32.add i32.add - local.get $5 i32.ne if i32.const 0 - i32.const 1232 - i32.const 239 + i32.const 1440 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -477,8 +705,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 255 + i32.const 1440 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -547,8 +775,8 @@ i32.gt_u if i32.const 0 - i32.const 1232 - i32.const 380 + i32.const 1440 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -575,8 +803,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 387 + i32.const 1440 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -603,8 +831,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 400 + i32.const 1440 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -651,69 +879,394 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/searchBlock (param $0 i32) (result i32) + (func $~lib/rt/tlsf/initialize + (local $0 i32) (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.tee $2 + memory.size + local.tee $0 + i32.const 1 + i32.lt_s if (result i32) + i32.const 1 local.get $0 - local.get $2 - i32.ctz - i32.const 2 - i32.shl - i32.add - i32.load offset=96 + i32.sub + memory.grow + i32.const 0 + i32.lt_s else - local.get $0 - i32.load - i32.const -2 - i32.and - local.tee $1 - if (result i32) - local.get $0 + 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 $1 + i32.const 23 + i32.lt_u + if local.get $1 - i32.ctz - local.tee $1 i32.const 2 i32.shl + i32.const 17920 i32.add - i32.load offset=4 - local.tee $2 - i32.eqz - if - i32.const 0 - i32.const 1232 - i32.const 346 - i32.const 18 - call $~lib/builtins/abort - unreachable + 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 17920 + 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 $0 - local.get $2 - i32.ctz local.get $1 - i32.const 4 - i32.shl - i32.add - i32.const 2 - i32.shl + i32.const 1 i32.add - i32.load offset=96 - else - i32.const 0 + local.set $1 + 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/tlsf/allocateBlock (param $0 i32) (result i32) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - local.get $0 - call $~lib/rt/tlsf/searchBlock + block $folding-inner0 + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + br $folding-inner0 + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + 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 + call $~lib/rt/__visit_members + br $folding-inner0 + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 17908 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + local.get $1 + call $~lib/rt/itcms/Object#set:color + 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|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + br $folding-inner0 + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1168 + i32.const 224 + 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 $1 + 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 $1 + i32.const 4 + i32.sub + local.set $0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + select + if (result i32) + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 1440 + i32.const 565 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + return + end + global.get $~lib/rt/itcms/visitCount + ) + (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 1440 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (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 @@ -767,8 +1320,8 @@ i32.eqz if i32.const 0 - i32.const 1232 - i32.const 498 + i32.const 1440 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -782,8 +1335,8 @@ i32.lt_u if i32.const 0 - i32.const 1232 - i32.const 500 + i32.const 1440 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -850,171 +1403,6 @@ 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 1280 - i32.const 0 - i32.store - i32.const 2848 - 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 1280 - 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 1280 - 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 1280 - i32.const 2852 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 1280 - 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 1276 - 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 1168 - 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 1168 - i32.const 112 - i32.const 14 - call $~lib/builtins/abort - unreachable - end - end - local.get $0 - ) - (func $~lib/rt/pure/__release (param $0 i32) - local.get $0 - i32.const 1276 - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end - ) (func $start:while (local $0 i32) (local $1 i32) @@ -1250,41 +1638,51 @@ global.set $while/ran i32.const 0 global.set $while/ran + i32.const 1216 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 1248 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 1392 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.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 + call $while/Ref#constructor + local.tee $0 + i32.store loop $while-continue|04 local.get $0 if - local.get $2 + local.get $1 i32.const 1 i32.add - local.tee $2 + local.tee $1 i32.const 10 i32.eq if i32.const 0 - local.set $1 - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end + local.set $0 else - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $1 - local.get $0 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + call $while/Ref#constructor + local.tee $0 + i32.store end - local.get $1 - local.set $0 br $while-continue|04 end end - local.get $2 + local.get $1 i32.const 10 i32.ne if @@ -1306,54 +1704,46 @@ end i32.const 1 global.set $while/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 157 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 global.set $while/ran i32.const 0 - local.set $2 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain local.set $0 + global.get $~lib/memory/__stack_pointer + i32.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 + call $while/Ref#constructor + local.tee $1 + i32.store loop $while-continue|05 - block $while-break|0 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/rt/pure/__release - local.get $1 - if - local.get $2 + call $while/Ref#constructor + if + block $while-break|0 + local.get $0 i32.const 1 i32.add - local.tee $2 + local.tee $0 i32.const 10 i32.eq if - local.get $0 - if - local.get $0 - call $~lib/rt/pure/__release - end i32.const 0 - local.set $0 + local.set $1 br $while-break|0 end br $while-continue|05 end end end - local.get $2 + local.get $0 i32.const 10 i32.ne if @@ -1364,7 +1754,7 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $1 if i32.const 0 i32.const 1056 @@ -1375,18 +1765,10 @@ end i32.const 1 global.set $while/ran - local.get $0 - call $~lib/rt/pure/__release - global.get $while/ran - i32.eqz - if - i32.const 0 - i32.const 1056 - i32.const 177 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 0 global.set $while/ran i32.const 0 @@ -1417,102 +1799,176 @@ end i32.const 1 global.set $while/ran + global.get $~lib/rt/itcms/state + i32.const 0 + i32.gt_s + if + loop $while-continue|06 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|06 + end + end + end + call $~lib/rt/itcms/step + drop + loop $while-continue|17 + global.get $~lib/rt/itcms/state + if + call $~lib/rt/itcms/step + drop + br $while-continue|17 + 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/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 + (func $~lib/rt/__visit_members (param $0 i32) + block $invalid + block $while/Ref + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/Ref $invalid + end + return + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + call $~lib/rt/itcms/__visit + end + return + end + return + end + unreachable + ) + (func $~start + call $start:while + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 1524 + i32.lt_s if - i32.const 0 - i32.const 1168 - i32.const 122 - i32.const 14 + i32.const 17936 + i32.const 17984 + i32.const 1 + i32.const 1 call $~lib/builtins/abort unreachable end - local.get $1 - i32.const 1 - i32.eq + ) + (func $while/Ref#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - block $__inlined_func$~lib/rt/__visit_members - 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 $invalid - end + block $__inlined_func$~lib/rt/itcms/interrupt + i32.const 2048 + local.set $0 + loop $do-continue|0 local.get $0 - i32.load offset=20 - local.tee $1 + call $~lib/rt/itcms/step + i32.sub + local.set $0 + global.get $~lib/rt/itcms/state + i32.eqz if - local.get $1 - i32.const 1276 - i32.ge_u - if - local.get $1 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - 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 + br $__inlined_func$~lib/rt/itcms/interrupt end - br $__inlined_func$~lib/rt/__visit_members + local.get $0 + i32.const 0 + i32.gt_s + br_if $do-continue|0 end - unreachable - end - local.get $2 - i32.const -2147483648 - i32.and - if - i32.const 0 - i32.const 1168 - 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 1168 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold end - local.get $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 - call $start:while + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=16 + local.get $0 + 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 $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.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 ) ) diff --git a/tests/compiler/while.ts b/tests/compiler/while.ts index cd0f4ffd46..c2d1c752ef 100644 --- a/tests/compiler/while.ts +++ b/tests/compiler/while.ts @@ -207,3 +207,5 @@ function testIfImplicitContinueElse(): void { ran = false; testIfImplicitContinueElse(); assert(ran); + +__collect(); diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 934d68529a..27434d687d 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -3,22 +3,41 @@ (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 $none_=>_i32 (func (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_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 12) ",\00\00\00\01\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") - (data (i32.const 60) "<\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 124) "<\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 188) "<\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 12) ",\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data (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) (global $while/ran (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 1024)) + (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/memory/__heap_base i32 (i32.const 252)) + (global $~lib/ASC_SHRINK_LEVEL 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)) (export "memory" (memory $0)) (start $~start) (func $while/testSimple @@ -475,6 +494,324 @@ i32.const 1 global.set $while/ran ) + (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/visitRoots (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + call $~lib/rt/itcms/Object#get:next + local.set $1 + loop $while-continue|0 + local.get $1 + global.get $~lib/rt/itcms/pinSpace + i32.ne + local.set $2 + local.get $2 + if + local.get $1 + i32.const 20 + i32.add + local.get $0 + call $~lib/rt/__visit_members + local.get $1 + call $~lib/rt/itcms/Object#get:next + local.set $1 + br $while-continue|0 + end + end + ) + (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/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) @@ -497,8 +834,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 272 + i32.const 416 + i32.const 273 i32.const 14 call $~lib/builtins/abort unreachable @@ -524,8 +861,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 274 + i32.const 416 + i32.const 275 i32.const 14 call $~lib/builtins/abort unreachable @@ -578,8 +915,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 287 + i32.const 416 + i32.const 288 i32.const 14 call $~lib/builtins/abort unreachable @@ -594,13 +931,13 @@ if local.get $6 local.get $7 - i32.store offset=8 + call $~lib/rt/tlsf/Block#set:next end local.get $7 if local.get $7 local.get $6 - i32.store offset=4 + call $~lib/rt/tlsf/Block#set:prev end local.get $1 local.get $0 @@ -686,7 +1023,7 @@ i32.const -1 i32.xor i32.and - i32.store + call $~lib/rt/tlsf/Root#set:flMap end end end @@ -710,8 +1047,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 200 + i32.const 416 + i32.const 201 i32.const 14 call $~lib/builtins/abort unreachable @@ -727,8 +1064,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 202 + i32.const 416 + i32.const 203 i32.const 14 call $~lib/builtins/abort unreachable @@ -781,7 +1118,7 @@ local.get $3 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $1 local.set $6 local.get $6 @@ -822,8 +1159,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 223 + i32.const 416 + i32.const 224 i32.const 16 call $~lib/builtins/abort unreachable @@ -856,7 +1193,7 @@ local.get $7 i32.or local.tee $2 - i32.store + call $~lib/rt/common/BLOCK#set:mmInfo local.get $6 local.set $1 end @@ -865,7 +1202,7 @@ 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 @@ -887,8 +1224,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 238 + i32.const 416 + i32.const 239 i32.const 14 call $~lib/builtins/abort unreachable @@ -905,8 +1242,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 239 + i32.const 416 + i32.const 240 i32.const 14 call $~lib/builtins/abort unreachable @@ -964,8 +1301,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 255 + i32.const 416 + i32.const 256 i32.const 14 call $~lib/builtins/abort unreachable @@ -989,15 +1326,15 @@ 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 @@ -1025,7 +1362,7 @@ local.get $9 i32.shl i32.or - i32.store + call $~lib/rt/tlsf/Root#set:flMap local.get $0 local.set $13 local.get $9 @@ -1069,8 +1406,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 380 + i32.const 416 + i32.const 381 i32.const 14 call $~lib/builtins/abort unreachable @@ -1112,8 +1449,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 387 + i32.const 416 + i32.const 388 i32.const 16 call $~lib/builtins/abort unreachable @@ -1145,8 +1482,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 400 + i32.const 416 + i32.const 401 i32.const 5 call $~lib/builtins/abort unreachable @@ -1183,13 +1520,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 @@ -1200,7 +1537,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 @@ -1227,6 +1564,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 @@ -1269,7 +1608,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 @@ -1357,6 +1696,334 @@ 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 565 + 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 + 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 + 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 224 + 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) + (local $1 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-continue|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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 + br_if $do-continue|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 @@ -1383,8 +2050,8 @@ i32.ge_u if i32.const 80 - i32.const 208 - i32.const 461 + i32.const 416 + i32.const 462 i32.const 30 call $~lib/builtins/abort unreachable @@ -1467,8 +2134,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 333 + i32.const 416 + i32.const 334 i32.const 14 call $~lib/builtins/abort unreachable @@ -1532,8 +2199,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 346 + i32.const 416 + i32.const 347 i32.const 18 call $~lib/builtins/abort unreachable @@ -1683,8 +2350,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 360 + i32.const 416 + i32.const 361 i32.const 14 call $~lib/builtins/abort unreachable @@ -1709,7 +2376,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 @@ -1722,7 +2389,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 @@ -1733,7 +2400,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 @@ -1763,7 +2430,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) @@ -1792,8 +2459,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 498 + i32.const 416 + i32.const 500 i32.const 16 call $~lib/builtins/abort unreachable @@ -1812,8 +2479,8 @@ i32.eqz if i32.const 0 - i32.const 208 - i32.const 500 + i32.const 416 + i32.const 502 i32.const 14 call $~lib/builtins/abort unreachable @@ -1841,142 +2508,300 @@ 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 80 - i32.const 144 - i32.const 275 - i32.const 30 - call $~lib/builtins/abort - unreachable - end - i32.const 16 + (func $~lib/rt/itcms/Object#set:rtId (param $0 i32) (param $1 i32) 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) - (local $1 i32) + (func $~lib/rt/itcms/Object#set:rtSize (param $0 i32) (param $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.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 144 - i32.const 109 + 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 - call $~lib/builtins/abort - unreachable + 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/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) 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 + i32.const 1073741804 + i32.ge_u if - i32.const 0 + i32.const 80 i32.const 144 - i32.const 112 - i32.const 14 + i32.const 256 + i32.const 31 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 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/increment + call $~lib/rt/itcms/interrupt end + i32.const 16 local.get $0 - ) - (func $while/Ref#constructor (param $0 i32) (result i32) - local.get $0 - i32.eqz - if - i32.const 0 - i32.const 3 - call $~lib/rt/pure/__new - call $~lib/rt/pure/__retain - local.set $0 - end + 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 - ) - (func $~lib/rt/pure/__release (param $0 i32) + 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 - global.get $~lib/memory/__heap_base - i32.gt_u - if - local.get $0 - i32.const 20 - i32.sub - call $~lib/rt/pure/decrement - end + call $~lib/memory/memory.fill + local.get $3 ) (func $while/testRef (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $while/Ref#constructor - local.set $1 + local.tee $1 + i32.store loop $while-continue|0 local.get $1 local.set $2 @@ -1990,27 +2815,13 @@ i32.eq if i32.const 0 - local.tee $3 - local.get $1 - 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 $3 local.set $1 else + global.get $~lib/memory/__stack_pointer i32.const 0 call $while/Ref#constructor - local.set $4 - local.get $1 - call $~lib/rt/pure/__release - local.get $4 - local.set $1 + local.tee $1 + i32.store end br $while-continue|0 end @@ -2040,8 +2851,10 @@ end i32.const 1 global.set $while/ran - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $while/getRef (result i32) i32.const 0 @@ -2051,21 +2864,26 @@ (local $0 i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 local.set $0 + global.get $~lib/memory/__stack_pointer i32.const 0 call $while/Ref#constructor - local.set $1 + local.tee $1 + i32.store block $while-break|0 loop $while-continue|0 call $while/getRef - local.tee $2 - local.set $3 + local.set $2 local.get $2 - call $~lib/rt/pure/__release - local.get $3 if local.get $0 i32.const 1 @@ -2075,18 +2893,6 @@ i32.eq if i32.const 0 - local.tee $2 - local.get $1 - local.tee $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $4 - call $~lib/rt/pure/__release - end - local.get $2 local.set $1 br $while-break|0 end @@ -2119,8 +2925,10 @@ end i32.const 1 global.set $while/ran - local.get $1 - call $~lib/rt/pure/__release + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $while/testIfImplicitContinueThen (local $0 i32) @@ -2182,6 +2990,61 @@ i32.const 1 global.set $while/ran ) + (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 + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + i32.const 0 + if (result i32) + i32.const 1 + else + i32.const 0 + end + drop + ) (func $start:while i32.const 0 global.set $while/ran @@ -2314,6 +3177,15 @@ end i32.const 0 global.set $while/ran + i32.const 192 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 224 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 368 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace call $while/testRef global.get $while/ran i32.eqz @@ -2364,149 +3236,16 @@ call $~lib/builtins/abort unreachable end + call $~lib/rt/itcms/__collect ) - (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/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) + (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) - (local $2 i32) + i32.const 272 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 + call $~lib/rt/itcms/__visit + i32.const 80 local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - 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 1 - drop - i32.const 1 - drop - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 126 - i32.const 18 - call $~lib/builtins/abort - unreachable - end - local.get $0 - call $~lib/rt/pure/finalize - else - i32.const 1 - drop - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 144 - i32.const 136 - i32.const 16 - call $~lib/builtins/abort - unreachable - end - i32.const 1 - drop - 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 - ) - (func $~start - call $start:while - ) - (func $~lib/rt/pure/__visit (param $0 i32) (param $1 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 - i32.eqz - if - i32.const 0 - i32.const 144 - 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 + call $~lib/rt/itcms/__visit ) (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) (local $2 i32) @@ -2516,12 +3255,9 @@ if local.get $2 local.get $1 - call $~lib/rt/pure/__visit + call $~lib/rt/itcms/__visit end ) - (func $while/Ref~visit (param $0 i32) (param $1 i32) - nop - ) (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) block $invalid block $while/Ref @@ -2534,14 +3270,8 @@ i32.load br_table $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $while/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 @@ -2549,11 +3279,52 @@ call $~lib/arraybuffer/ArrayBufferView~visit return end - local.get $0 - local.get $1 - call $while/Ref~visit return end unreachable ) + (func $~start + call $start:while + ) + (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 $while/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 + 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 + ) ) diff --git a/tests/extension/package.json b/tests/extension/package.json index 070b239379..7eee66133e 100644 --- a/tests/extension/package.json +++ b/tests/extension/package.json @@ -1,6 +1,6 @@ { "scripts": { "test": "npm run asbuild", - "asbuild": "node ../../bin/asc assembly/index.as --extension .as --runtime none --noEmit" + "asbuild": "node ../../bin/asc assembly/index.as --extension .as --noEmit" } } \ No newline at end of file diff --git a/tests/packages/package.json b/tests/packages/package.json index b3044e2a2a..0ae45ee9c8 100644 --- a/tests/packages/package.json +++ b/tests/packages/package.json @@ -1,15 +1,15 @@ { "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 --runtime stub", - "as": "cd ./packages/as && node ../../../../bin/asc as/index.ts --noEmit --runtime stub", - "b": "cd ./packages/b && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub --listFiles", - "c": "cd ./packages/c && node ../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "d": "cd ./packages/d && node ../../../../bin/asc assembly/index.ts --path packages --noEmit --runtime stub --traceResolution", - "e": "cd ./packages/d/packages/e && node ../../../../../../bin/asc assembly/index.ts --noEmit --runtime stub", - "f": "cd ./packages/d/packages/e/packages/f && node ../../../../../../../../bin/asc assembly/index.ts --noEmit --runtime stub", + "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 --runtime none --traceResolution" + "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/g/test.js b/tests/packages/packages/g/test.js index 677082bdbb..01eb5232ae 100644 --- a/tests/packages/packages/g/test.js +++ b/tests/packages/packages/g/test.js @@ -5,7 +5,6 @@ const stderr = asc.createMemoryStream(); asc.main([ "assembly/index.ts", "--noEmit", - "--runtime", "stub", "--traceResolution" ], { stderr }, err => { if (stderr.toString().includes("File '~lib/a.ts' not found.")) { diff --git a/tests/resolve-ternary.json b/tests/resolve-ternary.json index 453cb07770..1bdd02b1be 100644 --- a/tests/resolve-ternary.json +++ b/tests/resolve-ternary.json @@ -1,5 +1,4 @@ { "asc_flags": [ - "--runtime none" ] } diff --git a/tests/runtime/.gitignore b/tests/runtime/.gitignore deleted file mode 100644 index ffd0555121..0000000000 --- a/tests/runtime/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -!untouched.wasm -node_modules/ -package-lock.json diff --git a/tests/runtime/assembly/index.ts b/tests/runtime/assembly/index.ts deleted file mode 100644 index 19456ac7fd..0000000000 --- a/tests/runtime/assembly/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { __free }; diff --git a/tests/runtime/assembly/tsconfig.json b/tests/runtime/assembly/tsconfig.json deleted file mode 100644 index 6e52b21c48..0000000000 --- a/tests/runtime/assembly/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../../std/assembly.json", - "include": [ - "./**/*.ts" - ] -} diff --git a/tests/runtime/optimized.wat b/tests/runtime/optimized.wat deleted file mode 100644 index 2743486a17..0000000000 --- a/tests/runtime/optimized.wat +++ /dev/null @@ -1,1457 +0,0 @@ -(module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "(\00\00\00\01\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 64) "\1e\00\00\00\01\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 112) "$\00\00\00\01\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 168) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 208) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") - (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)) - (global $~lib/rt/__rtti_base i32 (i32.const 208)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (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 $2 - i32.const 256 - i32.lt_u - if (result i32) - local.get $2 - i32.const 4 - i32.shr_u - local.set $4 - i32.const 0 - 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 $4 - local.get $3 - i32.const 7 - i32.sub - end - local.set $3 - local.get $1 - i32.load offset=20 - local.set $2 - local.get $1 - i32.load offset=16 - local.tee $5 - if - local.get $5 - local.get $2 - i32.store offset=20 - end - local.get $2 - if - local.get $2 - local.get $5 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - 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 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $2 - i32.store offset=96 - local.get $2 - i32.eqz - if - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.store offset=4 - local.get $1 - i32.eqz - if - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $3 - i32.shl - i32.const -1 - i32.xor - i32.and - i32.store - end - end - end - ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (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.get $1 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.tee $5 - i32.const 1 - i32.and - if - local.get $3 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $5 - i32.const -4 - i32.and - i32.add - local.tee $2 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $4 - call $~lib/rt/tlsf/removeBlock - local.get $1 - local.get $3 - i32.const 3 - i32.and - local.get $2 - i32.or - local.tee $3 - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.tee $4 - i32.load - local.set $5 - end - end - local.get $3 - i32.const 2 - i32.and - if - local.get $1 - i32.const 4 - i32.sub - i32.load - local.tee $2 - i32.load - local.tee $6 - i32.const -4 - i32.and - i32.const 16 - i32.add - local.get $3 - i32.const -4 - i32.and - i32.add - local.tee $7 - i32.const 1073741808 - i32.lt_u - if - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $2 - local.get $6 - i32.const 3 - i32.and - local.get $7 - i32.or - local.tee $3 - i32.store - local.get $2 - local.set $1 - end - end - local.get $4 - local.get $5 - 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 - local.set $4 - i32.const 0 - else - local.get $2 - i32.const 31 - local.get $2 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $4 - local.get $2 - i32.const 7 - i32.sub - end - local.set $3 - local.get $3 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=96 - local.set $2 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $2 - i32.store offset=20 - local.get $2 - if - local.get $2 - local.get $1 - i32.store offset=16 - end - local.get $3 - i32.const 4 - i32.shl - local.get $4 - 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 $3 - i32.shl - i32.or - i32.store - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - local.get $3 - i32.const 2 - i32.shl - local.get $0 - i32.add - i32.load offset=4 - i32.const 1 - local.get $4 - i32.shl - i32.or - i32.store offset=4 - ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - local.get $2 - block (result i32) - local.get $0 - i32.load offset=1568 - local.tee $2 - if - local.get $1 - i32.const 16 - i32.sub - local.get $2 - i32.eq - if - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end - end - local.get $1 - end - i32.sub - local.tee $2 - i32.const 48 - i32.lt_u - if - return - end - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.const 32 - i32.sub - i32.const 1 - i32.or - i32.or - i32.store - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $2 - i32.add - i32.const 16 - i32.sub - 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/initializeRoot (; 4 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - i32.const 1 - memory.size - local.tee $0 - i32.gt_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 240 - i32.const 0 - i32.store - i32.const 1808 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 - local.get $0 - i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 240 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 - local.get $1 - i32.const 16 - i32.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 240 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 - end - end - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 - end - end - i32.const 240 - i32.const 1824 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 240 - global.set $~lib/rt/tlsf/ROOT - ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 24 - i32.const 80 - i32.const 447 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $0 - i32.const 16 - local.get $0 - i32.const 16 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - local.get $1 - i32.const 256 - i32.lt_u - if (result i32) - local.get $1 - i32.const 4 - i32.shr_u - local.set $1 - i32.const 0 - else - local.get $1 - i32.const 536870904 - i32.lt_u - if - i32.const 1 - i32.const 27 - local.get $1 - i32.clz - i32.sub - i32.shl - local.get $1 - i32.add - i32.const 1 - i32.sub - local.set $1 - end - local.get $1 - i32.const 31 - local.get $1 - i32.clz - i32.sub - local.tee $2 - i32.const 4 - i32.sub - i32.shr_u - i32.const 16 - i32.xor - local.set $1 - local.get $2 - i32.const 7 - i32.sub - end - local.tee $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 $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - memory.size - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - 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 $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.tee $3 - i32.const -4 - i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u - if - local.get $1 - local.get $3 - i32.const 2 - i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - 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 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 - i32.const 16 - i32.add - 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 (; 9 ;) (type $FUNCSIG$iii) (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 $3 - call $~lib/rt/tlsf/searchBlock - local.tee $2 - i32.eqz - if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory - local.get $0 - local.get $3 - call $~lib/rt/tlsf/searchBlock - local.set $2 - end - local.get $2 - i32.const 0 - i32.store offset=4 - local.get $2 - local.get $1 - i32.store offset=12 - local.get $0 - local.get $2 - call $~lib/rt/tlsf/removeBlock - local.get $0 - local.get $2 - local.get $3 - call $~lib/rt/tlsf/prepareBlock - local.get $2 - ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.tee $0 - local.get $1 - i32.store offset=8 - local.get $0 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/__retain (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - local.get $0 - i32.const 236 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 1 - i32.add - i32.store offset=4 - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (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/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - i32.const 208 - i32.load - i32.gt_u - if - i32.const 128 - i32.const 184 - i32.const 22 - i32.const 27 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 3 - i32.shl - i32.const 212 - i32.add - i32.load - ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (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 $3 - 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 $continue|0 - local.get $0 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - br $continue|0 - end - end - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $1 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $0 - i32.const 8 - i32.add - local.set $0 - local.get $1 - i32.const 8 - i32.add - local.set $1 - br $continue|1 - end - end - end - loop $continue|2 - local.get $3 - if - local.get $0 - local.tee $2 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $4 - i32.const 1 - i32.add - local.set $1 - local.get $2 - local.get $4 - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $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 $continue|3 - local.get $0 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $0 - local.get $3 - i32.const 8 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 - end - end - end - loop $continue|5 - local.get $3 - if - local.get $0 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $1 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|5 - end - end - end - end - ) - (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots (; 16 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/pure/CUR - global.get $~lib/rt/pure/ROOTS - local.tee $1 - i32.sub - local.tee $2 - i32.const 1 - i32.shl - local.tee $0 - i32.const 256 - local.get $0 - i32.const 256 - i32.gt_u - select - local.tee $3 - i32.const 0 - call $~lib/rt/tlsf/__alloc - local.tee $0 - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $1 - if - local.get $1 - call $~lib/rt/tlsf/__free - end - local.get $0 - global.set $~lib/rt/pure/ROOTS - local.get $0 - local.get $2 - i32.add - global.set $~lib/rt/pure/CUR - local.get $0 - local.get $3 - i32.add - global.set $~lib/rt/pure/END - ) - (func $~lib/rt/pure/appendRoot (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - global.get $~lib/rt/pure/CUR - local.tee $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 (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 268435455 - i32.and - local.tee $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - 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 $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - i32.and - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.get $1 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const -1342177280 - 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 - end - end - ) - (func $~lib/rt/pure/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 236 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 20 ;) (type $FUNCSIG$vi) (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 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 21 ;) (type $FUNCSIG$vi) (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 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 22 ;) (type $FUNCSIG$vi) (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 - i32.const 0 - i32.gt_u - 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 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $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 -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - 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 (; 24 ;) (type $FUNCSIG$v) - (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 $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $repeat|0 - block $break|0 - local.get $3 - local.get $0 - i32.ge_u - br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $repeat|0 - end - end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 - local.get $0 - i32.load - call $~lib/rt/pure/scan - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 - end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 - local.get $1 - i32.load offset=4 - i32.const 2147483647 - i32.and - i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite - local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 - end - end - local.get $5 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (; 25 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $0 - i32.const 236 - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - i32.sub - local.set $0 - block $break|0 - block $case4|0 - block $case3|0 - block $case2|0 - block $case1|0 - local.get $1 - i32.const 1 - i32.ne - if - local.get $1 - i32.const 2 - i32.eq - br_if $case1|0 - block $tablify|0 - local.get $1 - i32.const 3 - i32.sub - br_table $case2|0 $case3|0 $case4|0 $tablify|0 - end - br $break|0 - end - local.get $0 - call $~lib/rt/pure/decrement - br $break|0 - 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 - local.get $0 - i32.load offset=4 - local.tee $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 - end - ) - (func $~lib/rt/__visit_members (; 26 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - 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 - unreachable - ) - (func $null (; 27 ;) (type $FUNCSIG$v) - nop - ) -) diff --git a/tests/runtime/package.json b/tests/runtime/package.json deleted file mode 100644 index 966d2fb8c4..0000000000 --- a/tests/runtime/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "private": true, - "scripts": { - "server": "http-server . -o -c-1", - "build": "npm run build:untouched && npm run build:optimized", - "build:untouched": "node ../../bin/asc assembly/index.ts -t untouched.wat -b untouched.wasm --runtime full --sourceMap --measure", - "build:optimized": "node ../../bin/asc assembly/index.ts -t optimized.wat -b optimized.wasm --runtime full --sourceMap --measure --noAssert --optimize" - }, - "devDependencies": { - "http-server": "^0.11.1" - } -} diff --git a/tests/runtime/untouched.wasm b/tests/runtime/untouched.wasm deleted file mode 100644 index b00317d791..0000000000 Binary files a/tests/runtime/untouched.wasm and /dev/null differ diff --git a/tests/runtime/untouched.wat b/tests/runtime/untouched.wat deleted file mode 100644 index 628180b86e..0000000000 --- a/tests/runtime/untouched.wat +++ /dev/null @@ -1,3608 +0,0 @@ -(module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) - (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) - (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\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") - (data (i32.const 56) "(\00\00\00\01\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") - (data (i32.const 112) "\1e\00\00\00\01\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") - (data (i32.const 160) "$\00\00\00\01\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") - (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 256) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") - (table $0 1 funcref) - (elem (i32.const 0) $null) - (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)) - (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 256)) - (global $~lib/heap/__heap_base i32 (i32.const 284)) - (export "memory" (memory $0)) - (export "__alloc" (func $~lib/rt/tlsf/__alloc)) - (export "__retain" (func $~lib/rt/pure/__retain)) - (export "__release" (func $~lib/rt/pure/__release)) - (export "__collect" (func $~lib/rt/pure/__collect)) - (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (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.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 276 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.set $3 - local.get $3 - i32.const 16 - i32.ge_u - if (result i32) - local.get $3 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 278 - i32.const 13 - 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 - 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 24 - i32.const 291 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load offset=16 - local.set $6 - local.get $1 - i32.load offset=20 - local.set $7 - local.get $6 - if - local.get $6 - local.get $7 - i32.store offset=20 - end - local.get $7 - if - local.get $7 - local.get $6 - i32.store offset=16 - end - local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) - 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 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 - 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 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - 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 - end - local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - 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 - end - 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 (; 2 ;) (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.get $1 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 204 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 206 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - 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 16 - 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 1073741808 - 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 - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - local.set $4 - local.get $4 - i32.load - local.set $5 - end - end - local.get $2 - i32.const 2 - i32.and - if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end - local.set $6 - local.get $6 - i32.load - local.set $3 - local.get $3 - i32.const 1 - i32.and - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 227 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.const 16 - 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 1073741808 - 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 - local.get $8 - i32.const 16 - i32.ge_u - if (result i32) - local.get $8 - i32.const 1073741808 - i32.lt_u - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 242 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $1 - i32.const 16 - i32.add - local.get $8 - i32.add - local.get $4 - i32.eq - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 243 - i32.const 13 - 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 - 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 24 - i32.const 259 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - 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 - end - local.set $11 - local.get $1 - i32.const 0 - i32.store offset=16 - local.get $1 - local.get $11 - i32.store offset=20 - local.get $11 - if - local.get $11 - local.get $1 - i32.store offset=16 - end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - 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 - end - local.get $0 - local.get $0 - i32.load - i32.const 1 - local.get $9 - i32.shl - i32.or - i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - 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 - end - 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 - end - ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (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.get $1 - local.get $2 - i32.le_u - if (result i32) - local.get $1 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - if (result i32) - local.get $2 - i32.const 15 - i32.and - i32.eqz - else - i32.const 0 - end - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 385 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end - local.set $4 - i32.const 0 - local.set $5 - local.get $4 - if - local.get $1 - local.get $4 - i32.const 16 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 395 - i32.const 15 - 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 - local.get $1 - local.get $0 - i32.const 1572 - i32.add - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 407 - i32.const 4 - call $~lib/builtins/abort - unreachable - end - end - local.get $2 - local.get $1 - i32.sub - local.set $6 - local.get $6 - i32.const 48 - i32.lt_u - if - i32.const 0 - return - end - local.get $6 - i32.const 2 - i32.const 16 - 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=16 - local.get $8 - i32.const 0 - i32.store offset=20 - local.get $1 - local.get $6 - i32.add - i32.const 16 - i32.sub - local.set $4 - local.get $4 - i32.const 0 - i32.const 2 - i32.or - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end - local.get $0 - local.get $8 - call $~lib/rt/tlsf/insertBlock - i32.const 1 - ) - (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - global.get $~lib/heap/__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 - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 - local.set $5 - i32.const 0 - local.set $4 - local.get $5 - local.get $4 - i32.store offset=1568 - end - block $break|0 - i32.const 0 - local.set $5 - loop $repeat|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 - local.get $5 - local.set $6 - i32.const 0 - local.set $4 - local.get $7 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=4 - end - block $break|1 - i32.const 0 - local.set $7 - loop $repeat|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 - local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $4 - i32.store offset=96 - end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|1 - unreachable - end - unreachable - end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable - end - unreachable - end - local.get $3 - local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - 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/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - local.get $0 - i32.const 1073741808 - i32.ge_u - if - i32.const 72 - i32.const 24 - i32.const 447 - i32.const 29 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.tee $1 - i32.const 16 - local.tee $2 - local.get $1 - local.get $2 - i32.gt_u - select - ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (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 536870904 - 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 - 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 24 - i32.const 337 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - 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 - end - 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 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - 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 - end - local.set $6 - local.get $6 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 350 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - 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 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) - 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 - end - local.set $7 - end - local.get $7 - ) - (func $~lib/rt/tlsf/growMemory (; 7 ;) (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) - memory.size - local.set $2 - 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 $3 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s - if - local.get $3 - 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 (; 8 ;) (type $FUNCSIG$viii) (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 - local.get $2 - i32.const 15 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 364 - i32.const 13 - 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 32 - 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 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - 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 - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store - end - ) - (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (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 - local.get $3 - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 477 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - end - 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 24 - i32.const 479 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 - local.get $1 - i32.store offset=12 - 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 - local.get $3 - ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz - if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 - end - local.get $2 - local.get $0 - call $~lib/rt/tlsf/allocateBlock - local.set $3 - local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 - i32.add - ) - (func $~lib/rt/pure/increment (; 11 ;) (type $FUNCSIG$vi) (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 128 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 107 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - ) - (func $~lib/rt/pure/__retain (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/increment - end - local.get $0 - ) - (func $~lib/rt/tlsf/freeBlock (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - local.get $1 - i32.load - local.set $2 - local.get $2 - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 531 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - local.get $1 - local.get $2 - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 14 ;) (type $FUNCSIG$ii) (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 176 - i32.const 232 - i32.const 22 - i32.const 27 - 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/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end - end - end - local.get $0 - i32.const 3 - i32.and - i32.const 0 - i32.eq - if - block $break|1 - loop $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 - 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 $continue|1 - 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 - 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 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - 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 - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - 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 $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - 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 $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - 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 $continue|5 - end - end - end - br $break|2 - unreachable - end - unreachable - end - end - local.get $2 - i32.const 16 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 8 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 4 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 2 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - local.get $2 - i32.const 1 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - end - ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 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 - local.get $4 - local.get $3 - i32.add - local.get $5 - i32.le_u - if (result i32) - i32.const 1 - else - local.get $5 - local.get $3 - i32.add - local.get $4 - i32.le_u - end - 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 - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - 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 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - 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 $continue|1 - end - end - end - end - block $break|2 - loop $continue|2 - local.get $3 - if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $continue|2 - end - end - end - else - local.get $4 - i32.const 7 - i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - 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 $continue|3 - end - end - end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - 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 $continue|4 - end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - 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 $continue|5 - end - end - end - end - end - ) - (func $~lib/rt/tlsf/__free (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 561 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - 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 24 - i32.const 562 - i32.const 2 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/rt/tlsf/ROOT - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/tlsf/freeBlock - ) - (func $~lib/rt/pure/growRoots (; 18 ;) (type $FUNCSIG$v) - (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 - i32.const 0 - 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 (; 19 ;) (type $FUNCSIG$vi) (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 (; 20 ;) (type $FUNCSIG$vi) (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 - local.get $0 - i32.load - i32.const 1 - i32.and - i32.eqz - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 115 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - else - local.get $0 - i32.const -2147483648 - i32.const 0 - i32.or - i32.const 0 - i32.or - i32.store offset=4 - end - else - local.get $2 - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 124 - i32.const 15 - call $~lib/builtins/abort - unreachable - end - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - 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/__release (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 22 ;) (type $FUNCSIG$vi) (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 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 23 ;) (type $FUNCSIG$vi) (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 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 24 ;) (type $FUNCSIG$vi) (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 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 25 ;) (type $FUNCSIG$vi) (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 16 - 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 (; 26 ;) (type $FUNCSIG$v) - (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 - local.get $0 - local.set $1 - block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - 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 $repeat|0 - unreachable - end - unreachable - end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - 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 $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable - end - local.get $0 - global.set $~lib/rt/pure/CUR - ) - (func $~lib/rt/pure/__visit (; 27 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.lt_u - if - return - end - local.get $0 - i32.const 16 - 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 - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block - 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 128 - i32.const 75 - i32.const 17 - 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 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/scan - br $break|0 - unreachable - end - unreachable - end - block - 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 128 - i32.const 86 - i32.const 6 - 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 - unreachable - end - unreachable - end - block - local.get $2 - call $~lib/rt/pure/collectWhite - br $break|0 - unreachable - end - unreachable - end - i32.const 0 - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 97 - i32.const 24 - call $~lib/builtins/abort - unreachable - end - end - ) - (func $~lib/rt/__visit_members (; 28 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - unreachable - unreachable - end - unreachable - unreachable - end - unreachable - end - ) - (func $null (; 29 ;) (type $FUNCSIG$v) - ) -) diff --git a/webpack.config.js b/webpack.config.js index dbf5415172..6f197abf9c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -71,7 +71,9 @@ const bin = { entry: [ "./asc.js" ], externals: [ "binaryen", - "assemblyscript" + "assemblyscript", + "../lib/loader/umd/index", + "../lib/rtrace/umd/index" ], node: { global: true